CVE-2024-21626
约 3 分钟阅读
- runc - 内部文件描述符泄漏导致容器逃逸,可访问宿主机文件系统,部分变体可覆盖宿主机可执行文件
- 官方公告:2024-01-31
- 影响版本:
1.0.0-rc93 <= runc <= 1.1.11 - 首个修复版本:runc
1.1.12 - 严重性:High,CVSS 3.1
8.6,GitHub CNA 评分;不同攻击变体评分不同CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
- CWE:CWE-403(文件描述符泄漏)、CWE-668(资源暴露到错误的作用域)
成因与影响
- runc 初始化容器时,内部文件描述符泄漏到后续执行阶段,其中包含指向宿主机文件系统的目录句柄
- 切换工作目录后未充分检查目录是否仍位于容器根目录内,导致容器进程的工作目录可能落在宿主机文件系统中
- 攻击路径
- 启动恶意镜像:攻击者控制镜像中的工作目录等内容,诱使用户或平台创建容器
- 已运行容器:攻击者控制容器内相关路径或程序,等待管理员或自动化任务执行
runc exec等操作 - Docker、containerd、Kubernetes 环境是否受影响,取决于底层实际使用的 runc 及厂商补丁状态
- 影响可从读取宿主机文件扩大到覆盖宿主机可执行文件,最终取得宿主机控制权;具体后果受进程权限与部署配置影响
修复与缓解
- 更新宿主机或容器平台实际调用的 runc,使用包含修复的受支持版本或发行版回补补丁
- 更新业务容器内的软件包不能替代宿主机运行时修复
- runc
1.1.12是此漏洞当时的修复基线,不代表当前推荐的最新版本
- containerd 官方
1.6.28、1.7.13发布构建将 runc 更新至1.1.12- containerd 与 runc 可能分开安装;不能仅凭 containerd 版本判断是否修复
- 无法立即升级时,官方缓解措施各有覆盖范围
- 限制容器及
exec的工作目录为/,可阻止工作目录逃逸的攻击 1、2 - 仅运行可信镜像,可降低依赖恶意镜像的攻击 1、3a 风险
- 攻击 3b 除避免对不可信容器执行
runc exec外,没有实用的通用缓解办法;前两项不能覆盖全部变体
- 限制容器及
# 在宿主机上检查版本;同时核对容器运行时实际配置的二进制路径
runc --version
containerd --versionPoC
NitroCao/CVE-2024-21626提供通过容器启动和直接调用 runc 的复现步骤,也列出了行为检测规则- 关键输入是指向泄漏描述符的工作目录,例如公告中的
/proc/self/fd/7- 实际编号取决于运行时打开文件的顺序;第三方示例也使用
/proc/self/fd/8,不能把某个编号当作固定条件
- 实际编号取决于运行时打开文件的顺序;第三方示例也使用
- 在隔离测试宿主机准备普通标记文件,不把该文件挂载进容器;观察错误工作目录是否仍能使容器进程访问到该标记
- 关键现象是访问越过容器根目录边界;只运行
runc --version或看到特殊工作目录字符串不能证明已逃逸 - 宿主机二进制覆写是另一组变体;基础目录逃逸演示不需要把系统程序作为测试目标
参考
- runc 官方安全公告 GHSA-xr7r-f8xq-vfvvGitHubopencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
- containerd 1.6.28GitHubcontainerd/containerd/releases/tag/v1.6.28
- containerd 1.7.13GitHubcontainerd/containerd/releases/tag/v1.7.13
- NVD CVE-2024-21626链接nvd.nist.gov/vuln/detail/CVE-2024-21626runc - 内部文件描述符泄漏导致容器逃逸,可访问宿主机文件系统,部分变体可覆盖宿主机可执行文件 · 官方公告:2024-01-31 · 影响版本: · 首个修复版本:runc · 严重性:High,CVSS 3.1 ,GitHub CNA 评分;不同攻击变体评分不同笔记:CVE-2024-21626
- NitroCao/CVE-2024-21626GitHubNitroCao/CVE-2024-21626runc - 内部文件描述符泄漏导致容器逃逸,可访问宿主机文件系统,部分变体可覆盖宿主机可执行文件 · 官方公告:2024-01-31 · 影响版本: · 首个修复版本:runc · 严重性:High,CVSS 3.1 ,GitHub CNA 评分;不同攻击变体评分不同笔记:CVE-2024-21626
- 容器工作目录逃逸 PoC 与检测说明;README 将利用步骤与行为检测规则分开列出
关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub4 条
- containerd/containerd/releases/tag/v1.6.28github.com/containerd/containerd/releases/tag/v1.6.28
- containerd/containerd/releases/tag/v1.7.13github.com/containerd/containerd/releases/tag/v1.7.13
- NitroCao/CVE-2024-21626github.com/NitroCao/CVE-2024-21626
- opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvvgithub.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
其他外链1 条
- nvd.nist.gov/vuln/detail/CVE-2024-21626nvd.nist.gov/vuln/detail/CVE-2024-21626