runc容器运行时环境爆出一个容器逃逸安全漏洞,让恶意容器(极少需要用户的交互操作)得以覆盖主机runc二进制代码,并在主机上获得root级代码执行权限。
runc是一个开源命令行实用程序,旨在生成和运行容器;目前,它被用作支持Docker、containerd、Podman和CRI-O等容器的默认运行时环境。
据runc维护人员之一、SUSE Linux GmbH的高级软件工程师(容器)Aleksa Sarai声称:
在这下列其中一个场景,用户交互级别能够在容器内以root身份运行任何命令(如果命令不受攻击者控制,也没有关系):
*使用攻击者控制的映像来创建一个新的容器。
*将(docker exec)附加到攻击者之前已拥有写入权限的现有容器中。
两名安全研究人员Adam Iwaniuk和BorysPopławski发现的这个安全漏洞现在被命名为CVE-2019-5736,它在正确使用用户命名空间的系统上自动被阻止(不是以root的身份运行的容器不受影响)。
然而,它会影响“主机root被映射到容器的用户命名空间”的计算机,因为默认的AppArmor策略和Fedora的默认SELinux策略无法阻止CVE-2019-5736触发。
值得一提的是,以Fedora设备为例,moby-engine是受这个容器逃逸漏洞影响的唯一一个容器引擎,而docker和podman不受影响,因为它们将所有容器进程作为container_t来运行。
据Shodan首席执行官John Matherly在YCombinator上分享的扫描结果显示,约4000个Docker守护进程暴露无遗:
暴露的Docker守护进程
Sarai已发布了一个补丁,旨在修复runc漏洞;一旦恶意容器执行,这个漏洞就会触发容器逃逸,并允许攻击者访问主机文件系统。
这位runc维护人员还表示,“漏洞利用代码将在协调发布日期(CRD)7天后(2019-02-18)公开发布。如果你有容器运行时环境,请事先确认你不容易受到此问题的影响。”
目前,亚马逊、谷歌和Docker已经更新了各自的软件,建议所有用户更新到针对CVE-2019-5736打上补丁的最新版本。
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有