Runc容器逃逸漏洞修复说明

  • 发布时间:2019年2月14日
  • 更新时间:2019年2月14日
  • 漏洞等级:HIGH
  • CVE编号:CVE-2019-5736

UK8S已于2019年2月14日15:00修复runc容器逃逸漏洞,并通过攻防测试。本文主要介绍2019年2月14日之前创建的集群修复办法。

漏洞详情

runc被曝存在容器逃逸漏洞。该漏洞允许恶意容器(以最少的用户交互)覆盖host上的runc文件,从而在host上以root权限执行代码。在下面两种情况下,通过用户交互可以在容器中以root权限执行任意代码: 1.使用攻击者控制的镜像创建新容器。 2.进入到攻击者之前具有写入权限的现有容器中(docker exec)。

影响范围

2019年2月14日15:00之前创建的集群

此批集群的Docker版本为1.13.1,runc版本<1.0-rc6,存在安全隐患,需要修复。

2019年2月14日15:00之后创建的集群已修复该漏洞,并已通过攻防测试无需担心。

由于UK8S为单租户模式,如果之前未在UK8S集群内部署未经审查的第三方镜像,该漏洞无法被黑客被利用,但为了业务安全,建议尽早修复。

修复方案

方案一

对于测试用集群,建议删除后重新创建,新版本UK8S集群已修复该漏洞(CVE-2019-5736);

方案二

仅升级runc版本,该方案为热升级方案,理论上不会导致业务中断,具体方案如下:

1.备份原有runc,UK8S的runc位于/usr/libexec/docker路径下。

mv /usr/libexec/docker/docker-runc-current /usr/libexec/docker/docker-runc-current.$(date -Iseconds)

2.下载修复的runc版本(对应的容器版本为1.13.1,内核版本为4.x),并替换原有的runc。

wget https://github.com/rancher/runc-cve/releases/download/CVE-2019-5736-build3/runc-v1.13.1-amd64
mv runc-v1.13.1-amd64  /usr/libexec/docker/docker-runc-current

##内核版本为3.x
wget https://github.com/rancher/runc-cve/releases/download/CVE-2019-5736-build3/runc-v1.13.1-amd64-no-memfd_create

3.配置可执行权限

chmod +x /usr/libexec/docker/docker-runc-current

4.测试新版本runc是否正常工作

/usr/libexec/docker/docker-runc-current -v
docker run -it --rm ubuntu echo OK

方案三

升级Docker版本。将已有集群的Docker版本升级到18.09.2或以上。该方案会导致容器和业务中断,请谨慎操作。

如在该漏洞过程中需要协助,请联系UK8S团队协助处理。

参考链接