漏洞概述

漏洞名称

runc容器逃逸漏洞

漏洞编号

QVD-2024-5073,CVE-2024-21626

公开时间

2024-01-31

影响量级

百万级

奇安信评级

高危

CVSS 3.1分数

8.6

威胁类型

代码执行

利用可能性

POC状态

未公开

在野利用状态

未发现

EXP状态

未公开

技术细节状态

已公开

危害描述:本地触发、需要交互。

0漏洞详情

影响组件

runc是一个根据OCI规范,在Linux上生成和运行容器的命令行工具。runc的使用非常灵活,可以与各种容器工具和平台集成,如Docker、Kubernetes等。它支持多种容器格式,包括OCI规范定义的标准格式,以及其他格式如Docker镜像格式。作为开源项目,runc受到全球开发者社区的广泛参与和贡献,被广泛应用于生产环境中的容器化部署。

漏洞描述

近日,奇安信CERT监测到runc官方发布安全通告修复了runc容器逃逸漏洞(CVE-2024-21626),由于runc存在内部文件描述符泄露,本地攻击者可以通过多种方式进行容器逃逸:

1、由于runc 内部意外地将包括宿主机 /sys/fs/cgroup 句柄的几个文件描述符泄漏到 runc init 中,攻击欺骗具有特权的用户执行恶意容器镜像,可以导致pid1 进程将在宿主机挂载命名空间中拥有一个工作目录,生成的进程可以访问整个宿主文件系统。

2、由于runc exec中同样存在文件描述符泄漏和工作目录验证不足。如果容器内的恶意进程知道某个管理进程将使用 --cwd 参数和给定路径调用 runc exec,便可以用符号链接将该路径替换为 /proc/self/fd/7/ 。一旦容器进程执行了容器镜像中的可执行文件,可以绕过PR_SET_DUMPABLE 保护,之后攻击者可以通过打开 /proc/$exec_pid/cwd 来访问主机文件系统。

3、可以通过将类似/proc/self/fd/7/../../../bin/bash的路径用作 process.args 二进制参数来覆盖主机二进制文件来改进攻击1、2。由于可以覆盖类似 /bin/bash的二进制文件,一旦特权用户在主机上执行目标二进制文件,攻击者就可以进行转移,以完全访问主机。

鉴于此漏洞影响范围较大,建议客户尽快做好自查及防护。

02 影响范围

影响版本

v1.0.0-rc93 <= runc <= 1.1.11

其他受影响组件

03 处置建议

安全更新

目前官方已有可更新版本,建议受影响用户参考以下链接升级至最新版本:

runc >= 1.1.12

https://github.com/opencontainers/runc/releases/tag/v1.1.12

04 参考资料

[1]https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv

声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。