UCloud-201902-001:runc容器逃逸漏洞安全预警

漏洞详情

runc被曝存在容器逃逸漏洞。该漏洞允许恶意容器(以最少的用户交互)覆盖host上的runc文件,从而在host上以root权限执行代码。在下面两种情况下,通过用户交互可以在容器中以root权限执行任意代码:

1.使用攻击者控制的镜像创建新容器。

2.进入到攻击者之前具有写入权限的现有容器中(docker exec)。

影响范围

1.对于UK8S用户,影响范围如下:

2019年2月14日 15:00 之前创建的UK8S集群。此批集群的Docker版本为1.13.1,runc版本<1.0-rc6,存在安全隐患,UK8S团队将全程协助客户修复。

2.对于UDocker用户,影响范围如下:

2019年2月14日 20:00之前创建的容器集群,存在安全隐患,

3.对于用户自建集群,影响范围如下:

Docker版本<18.09.2,或runc版本<=1.0-rc6,存在安全隐患,需要修复。

备注:由于UK8S及UDocker集群均为单租户模式,如无使用未经验证的第三方镜像,现有安全隐患较小,不过依然建议在攻击代码开放之前修复。

修复方案

注意:安装升级前,请做好数据备份、快照和测试工作,防止发生意外

1、用户自安装的docker和Kubernetes环境,请升级到各系统官方发布的修复版本:

Docker版本 >= 18.09.2

runc版本 > 1.0-rc6

2、使用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版本

wget https://github.com/rancher/runc-cve/releases/download/CVE-2019-5736-build2/runc-v1.13.1-amd64

3)设置新版本runc的可执行权限

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版本至18.09.2或以上,会导致容器重启并使得业务中断,请谨慎使用。

3、使用UDocker的用户:

为确保容器集群的安全稳定,UCloud已着手对存量UDocker集群进行热升级,升级期间不会对用户业务造成影响,请无需担心。

另,新版本UDocker已修复runc漏洞,可正常使用。

参考链接

https://www.openwall.com/lists/oss-security/2019/02/11/2