runc爆容器逃逸漏洞,Rancher第一时间发布修复公告

美国时间2019年2月11日晚,runc通过oss-security邮件列表披露了runc容器逃逸漏洞的详情。runc是Docker、CRI-O、Contain

美国时间2019年2月11日晚,runc通过oss-security邮件列表披露了runc容器逃逸漏洞的详情。runc是Docker、CRI-O、Containerd、Kubernetes等底层的容器运行时,此次安全漏洞无可避免地会影响大多数Docker与Kubernetes用户,也因此为整个业界高度关注。

漏洞披露后,Docker在第一时间发布了两个版本18.06.2和18.09.2,这两个版本都可以修复runc漏洞。Rancher Labs极速响应,Rancher Kubernetes管理平台和RancherOS操作系统均在不到一天时间内紧急更新,是业界第一个紧急发布新版本支持Docker补丁版本的平台,并持严谨态度在oss-security邮件列表披露漏洞后的五小时内连夜邮件通知所有Rancher用户此次漏洞的详情及应对之策。

值得一提的是,尽管Docker发布了修复版本,但因为不是所有用户都能轻易将生产环境中的Docker版本升至最新,Rancher帮忙将修复程序反向移植到所有版本的Docker并提供给用户。目前Docker官方提供的修复版本并不支持3.x内核(只兼容4.x内核),而runc的开发者特意向Rancher提交了支持3.x内核的PR,目前PR已合并,Rancher提供的方案现已支持3.x内核。

runc漏洞详情

runc是一个根据OCI(Open Container Initiative)标准创建并运行容器的CLI工具,目前Docker引擎内部也是基于runc构建的。 2019年2月11日,研究人员通过oss-security邮件列表(https://www.openwall.com/lists/oss-security/2019/02/11/2)披露了runc容器逃逸漏洞的详情,根据OpenWall的规定EXP会在7天后也就是2019年2月18日公开。

此漏洞允许以root身份运行的容器以特权用户身份在主机上执行任意代码。实际上,这意味着容器可能会破坏Docker主机(覆盖Runc CLI),而所需要的只是能够使用root来运行容器。攻击者可以使用受感染的Docker镜像或对未受感染的正在运行的容器运行exec命令。针对此问题的已知缓解措施包括:

● 使用只读主机文件系统运行

● 运行用户命名空间

● 不在容器中运行root

● 正确配置的AppArmor / SELinux策略(当前的默认策略不够)

Rancher团队第一时间响应

收到披露邮件后,Rancher OS团队立刻尝试编写了攻击脚本,在一个普通容器中运行一个非常简单的脚本就完成了对主机的攻击,将主机上的runc替换成了其他程序。

漏洞披露后,Docker在第一时间发布了18.09.2,用户可升级到此版本以修复该漏洞。Rancher Labs研发团队同样第一时间响应,发布了Rancher v2.1.6、v2.0.11和v1.6.26,这三个新版本Rancher支持Docker刚刚发布的18.09.2,Rancher用户可以升级Docker版本以防止被该安全漏洞影响。

无法升级Docker版本怎么办

通常由于各种因素,很多用户的生产环境并不容易升级太新的Docker版本。

为了帮助无法按照Docker官方建议升级至最新版Docker 18.09.2的用户解决此次问题,Rancher Labs团队更进一步,已经将修复程序反向移植到所有版本的Docker,为Docker 1.12.6、1.13.1、17.03.2、17.06.2、17.09.1、18.03.1和18.06.1提供补丁,修复这次漏洞!相关修补程序以及安装说明,请参考: https://github.com/rancher/runc-cve。

RancherOS的更新:v1.5.1 和 v1.4.3

RancherOS作为一款容器化操作系统,其中很多组件依赖runc,我们也在第一时间更新了补丁并发布了v1.5.1和v1.4.3两个版本。

RancherOS的核心部件system-docker和user-docker都依赖runc,所以v1.5.1和v1.4.3都对他们进行了更新。而针对user-docker,RancherOS可以切换各种版本的docker engine, 所以我们对以下docker engine都进行了反向移植:v1.12.6/v1.13.1/v17.03.2/v17.06.2/v17.09.1/v17.12.1/v18.03.1/v18.06.1。

如果是默认安装v1.5.1或v1.4.3,补丁程序已经是内置的,你无需任何操作就可以避免该漏洞。如果你希望使用早期的docker版本,那么切换user-docker时,请使用上面提到的补丁修复版本:

同时v1.5.1版本也是支持docker 18.09.2,你可以切换到该版本,如果你考虑使用Docker官方的修复版本,只需简单运行: ros engine switch docker-18.09.2。

我们推荐您使用最新的RancherOS v1.5.1版本,该除了修复CVE-2019-5736漏洞外还支持其他新特性以及一些Bug Fix。当然,因为仍然有很多用户在使用1.4.x版本,所以我们也发布了v1.4.3, 它只修复了runc漏洞,没有其他额外的更新。

AWS相关镜像已经上传到各个region中,可以直接搜索查找并使用,包括AWS中国区。其他主要镜像列表参考: https://github.com/rancher/os/blob/v1.5.x/README.md#release

更多新特性和Bug Fix请参考v1.5.1的Release Notes: https://github.com/rancher/os/releases/tag/v1.5.1

文档说明: https://rancher.com/docs/os/v1.x/en/

RancherOS专注于Docker在Linux上的精简体验,它还是一个小众的开源项目,欢迎您下载使用并给RancherOS团队提供更多反馈。 同时,Github上的Star也是鼓励我们继续前行的精神动力!

初心不忘,为用户的Docker & K8S之旅护航

Rancher Kubernetes平台拥有着超过一亿次下载量,我们深知安全问题对于用户而言的重要性,更遑论那些通过Rancher平台在生产环境中运行Docker及Kubernetes的数千万用户。

2018年年底Kubernetes被爆出的首个严重安全漏洞CVE-2018-1002105,就是由Rancher Labs联合创始人及首席架构师Darren Shepherd发现的;2019年1月,Kubernetes被爆出仪表盘和外部IP代理安全漏洞时,Rancher Labs第一时间向用户响应,确保所有Rancher 2.x和1.6.x的用户都完全不被漏洞影响。

这次,在得悉runc爆出容器逃逸漏洞之后,Rancher Labs立即响应,紧急发布新版本支持Docker补丁版本18.09.2的平台,第一时间通知用户漏洞详情及应对之策,并帮忙将修复程序反向移植到所有版本的Docker并提供给用户,为用户的容器安全保驾护航。

负责、可靠、快速响应、以用户为中心,是Rancher始终不变的初心;在每一次业界出现问题时,严谨踏实为用户提供相应的应对之策,也是Rancher一如既往的行事之道。未来,Rancher也将一如既往支持与守护在用户的K8S之路左右,确保大家安全、稳妥、无虞地继续前进。

About Rancher Labs

Rancher Labs由硅谷云计算泰斗、CloudStack之父梁胜创建,致力于打造创新的开源软件,帮助企业在生产环境中运行容器与Kubernetes。旗舰产品Rancher是一个开源的企业级Kubernetes平台,是业界首个且唯一可以管理所有云上、所有发行版、所有Kubernetes集群的平台。解决了生产环境中企业用户可能面临的基础设施不同的困境,改善Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题,是企业落地Kubernetes的不二之选。

Rancher在全球拥有超过一亿的下载量,超过20000家企业客户。全球知名企业如中国人寿、华为、中国平安、民生银行、兴业银行、上汽集团、海尔、米其林、天合光能、丰田、本田、霍尼韦尔、金风科技、普华永道、海南航空、厦门航空、恒大人寿、中国太平、巴黎银行、美国银行、HSCIS恒生指数、中国水利、暴雪、CCTV等均是Rancher的付费客户。