未修补的漏洞会影响rkt容器运行时,攻击者可利用该漏洞逃避容器并获得对主机的root访问权限。
安全研究人员Yuval Avrahami发现了一些漏洞 RKT containter 当用户执行”时,攻击者可利用它来破坏底层主机RKT 输入’命令进入攻击者控制的pod。
rkt(发音为“rocket”)是一个用于在Linux上运行应用程序容器的CLI。 RKT 是安全的, 可组合,以标准为基础。
运行时的基本执行单元是一个pod,它包括在共享上下文中运行的多个容器。
‘rkt enter’命令允许用户在正在运行的容器中执行二进制文件。二进制文件以root身份执行,没有seccomp过滤或cgroup隔离,唯一的限制由名称空间表示。
Avrahami发现可以通过触发漏洞逃离容器。
“在‘RKT进入’命令允许用户运行在运行的容器中的二进制文件,是RKT相当于‘泊坞窗EXEC’的。” 陈述的专家。
“通过’rkt enter’执行的容器中的二进制文件以root身份运行,具有所有功能,并且未应用seccomp过滤或cgroup隔离。它们仅受名称空间的限制,这些名称空间不足以阻止它们爆发并危及主机。“
在RedHat(2018年中期收购CoreOS)的报告列表下方:
- CVE-2019-10144:使用`rkt enter`运行的进程在第2阶段获得所有功能
- CVE-2019-10145:使用`rkt enter`运行的进程在阶段2期间没有seccomp过滤
- CVE-2019-10147:使用`rkt enter`运行的进程在第2阶段不受cgroup的限制
研究人员发表了一段视频的PoC 这显示了对上述漏洞的利用。
攻击者需要拥有对容器的root访问权限,然后当用户运行’rkt enter’命令时,他可以覆盖容器中的二进制文件和库来运行他的恶意代码。
例如, 攻击者可以在容器中覆盖/ bin / bash,因为如果用户没有指定另一个,则它是执行的默认二进制文件。
攻击者还可以覆盖容器中的libc.so.6,这可能是由使用’rkt enter’生成的进程加载的。使用 gcc构造函数属性 ,只要进程加载了修改后的libc库,就会运行代码。
“一旦攻击者在’rkt enter’产生的容器进程的上下文中运行,他就可以相对轻松地逃离容器并在主机上获得root访问权限,因为他运行所有功能,没有seccomp过滤,没有cgroup隔离,“安全研究员继续说道。
专家通过安装主机的根目录提供了利用逃逸的示例。
使用’mknod’和’mount’syscalls挂载主机根目录会在主机上授予攻击者root访问权限。该专家还发布了针对此次攻击的视频PoC。
Avrahami 报告了RedHat和CoreOS的缺陷,但RedHat在当时透露了这一点 具有没有计划解决它们。RedHat要求专家与用户社区分享他的发现。
“在研究rkt时,我还发现了一种创建恶意ACI / OCI映像的方法,这些映像会在运行时危及主机。虽然这肯定不理想,但恶意图像不是rkt威胁模块的一部分。从不受信任的来源运行图像与rkt的推荐或正确使用不一致,“研究人员总结道。
“正如我在本博客开头所说,如果你正在使用 RKT,避免使用’RKT 输入’命令,因为它当前存在漏洞 未打补丁。我还建议考虑替代容器运行时间 更稳定的维护,如Docker, podman 或LXD。“














暂无评论内容