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团队协助处理。