runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁

容器的安全性一直是容器技术的一个短板。关于容器最大的安全隐患是攻击者可以使用恶意程序感染容器,更严重时可以攻击主机系统。

2月11日,安全研究员Adam Iwaniuk和BorysPopławski发现了容器运行时runC的一个安全漏洞,这个漏洞可以让上述情况发生。Aleksa Sarai,SUSE的容器高级软件工程师同时也是Runc的维护者,纰漏了这个漏洞(CVE-2019-5736)。

漏洞详情

runC是一个开源命令行工具,用于运行容器,是Docker,Kubernetes等依赖容器的应用程序的底层容器运行时。runC由Docker公司开发,现在已作为OCI规范被广泛使用。如果你正在使用容器,那么有很大的可能是在runC上运行它们。

此次爆出的漏洞允许恶意容器覆盖主机上的RunC二进制文件,以在主机上获取root级别的代码执行,让攻击者能够以root身份运行任何命令。

攻击方式是将容器中的目标二进制文件替换为返回的runC二进制文件,攻击者可以通过附加特权容器(将其连接到终端)或使用恶意镜像启动并使其自行执行。

但是Linux内核通常不允许在runC执行过程中主机上的runC二进制文件被覆盖。

这时候攻击者可以使用O_PATH标志打开/ proc / self / exe的文件描述符,然后继续通过/ proc / self / fd / \u0026lt;nr\u0026gt;重新打开二进制文件O_WRONLY并在一个单独进程中的繁忙loop里尝试写入。Sarai解释说,最终,当runC二进制文件退出时攻击就成功了。

结果可能会比你想象的还糟。红帽的容器技术产品经理Scott McCarty警告大家:

runC和Docker中安全漏洞(CVE-2019-5736)的披露说明了许多IT管理员和CxO面临着糟糕的情况。容器代表向共享系统的转变,其中来自不同用户的应用程序都在同一Linux主机上运行。利用此漏洞意,恶意代码可能会肆意蔓延,不仅影响单个容器,还会影响整个容器主机,最终会破坏主机上运行的成百上千个容器。像这种影响各种互连生产系统的级联漏洞可能会成为企业IT的世界末日场景…而这正是这个漏洞可能产生的结果。

及时打补丁

除了runC,Sarai在报告还说明了这个漏洞还可能会影响到LXC和Apache Mesos。所以,如果你正在运行任何类型的容器,需要尽快打补丁。Sarai已经push了一个git提交来修复这个漏洞:

https://github.com/opencontainers/runc/commit/0a8e4117e7f715d5fbeef398405813ce8e88558b

Docker刚刚发布的18.09.2版本也修复了该漏洞。

Linux发行版Debian和Ubuntu正在修复该漏洞。AWS和Google Cloud已发布安全通知,建议客户更新各种受影响服务的容器。

大多数(如果不是全部)云容器系统都容易受到这种潜在攻击。 例如,AWS表示,现在已有一个适用于亚马逊Linux的补丁,但仍在为亚马逊ECS,EKS和AWS Fargate推出补丁。

McCarty说这不是第一个主要的容器运行时安全漏洞,也不会是最后一个。

就像去年Spectre/Meltdown代表了安全研究从软件架构向处理器架构转变一样,我们应该期待runC这样的低级别容器运行时和Docker这样的容器引擎现在也会受到研究人员和潜在恶意行为者的额外关注。

参考链接:

https://www.theregister.co.uk/2019/02/11/docker_container_flaw/

https://www.zdnet.com/article/doomsday-docker-security-hole-uncovered/

你可能感兴趣的:(runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁)