查看原文
其他

开源的 rkt 容器运行时被曝多个 0day,可导致黑客获取主机 root 权限

Eduard Kovacs 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

rkt 容器运行时中被曝多个未修复漏洞,可被用于逃逸容器并获取对主机的根访问权限。

Twistlock 公司的安全研究员 Yuval Avrahaml 解释称,当用户在受攻击者控制的pod中执行“rkt enter”命令(等同于‘docker exec’)时,可利用这些缺陷攻陷主机。

Rkt 是一款广受欢迎的开源的容器运行时以及由 CoreOS 创建的一款 CNCF 孵化项目。该运行时的基本执行单元是一个 pod,包含在共享上下文中运行的多个容器。继2018年中期 CoreOS 被 RedHat 收购后,该项目似乎已不在活跃开发过程中。尽管是一个开源项目,但 rkt 似乎并不存在贡献者。

研究人员指出,’rkt enter’命令允许用户在运行的容器中执行二进制。这类二进制以root身份运行,具备所有能力且并未应用 seccomp 过滤或 cgroup 隔离机制,只是受名称空间所限。正因如此,就有可能逃逸该容器,而这也是所发现的这些 0day 所能做的事情。

这些未修复漏洞的编号是 CVE-2019-10144(在第2阶段,以‘rkt enter’运行的进程被给予所有能力)、CVE-2019-10145(在第2阶段,以’rkt enter’运行的进程并不具备 seccomp 过滤机制)以及 CVE-2019-10147(以‘rkt enter’运行的进程在第2阶段不受 cgroups 限制)。

要利用这些漏洞,攻击者要具备容器的 root 访问权限。这样,当用户运行‘rkt enter’命令时,攻击者就能够覆写二进制以及容器中的库,以便确保受攻陷进程执行的是恶意代码。为此,攻击者需要覆写容器中的 /bin/bash 和 libc.so.6,当‘rkt enter’命令中未说明其它时,它们就表示默认执行的二进制,而库可能由受攻陷的进程加载。

安全研究员解释称,“一旦攻击者在受‘rkt enter’攻陷的容器进程上下文中运行时,就能够逃逸该容器并相对轻松地获取主机的 root 访问权限,而且以所有能力运行,不具备 seccomp 过滤和 cgroup 隔离机制。”

一种利用场景涉及通过‘mknod’和’mount’系统调用来安装主机根目录,从而提供对主机的 root 访问权限。这种攻击同时强调了‘rkt enter’命令中缺乏的隔离功能。

Avrahami 已发布两个演示视频,说明了这三个漏洞情况以及此前提到的攻击场景。他联系了 RedHat 和 CoreOS 负责任地通知这些漏洞情况,但被告知 RedHat 无修复计划,而是鼓励 Avrahami 将信息发布在 GitHub 上,让社区参与修复。

Avrahami 表示,“在调查 rkt 过程中,我还发现了创建恶意 ACI/OCI 镜像的方法,当运行时将导致主机遭攻陷。尽管这并非理想情况,但恶意镜像并非rkt 威胁模块的一部分。运行源自不受信任来源的镜像不符合 rkt 的使用建议,而且也非正确的使用方式。”




推荐阅读

开源容器化应用 Kubernetes 被曝严重的路径遍历漏洞



原文链接

https://www.securityweek.com/rkt-container-runtime-flaws-give-root-access-host


题图:Pixabay License




本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存