【漏洞通告】runc容器逃逸漏洞(CVE-2024-21626)
发布时间 2024-02-02
一、漏洞概述
漏洞名称 | runc容器逃逸漏洞 | ||
CVE ID | CVE-2024-21626 | ||
漏洞类型 | 容器逃逸 | 发现时间 | 2024-02-01 |
漏洞评分 | 8.6 | 漏洞等级 | 高危 |
攻击向量 | 本地 | 所需权限 | 无 |
利用难度 | 低 | 用户交互 | 需要 |
PoC/EXP | 未公开 | 在野利用 | 未发现 |
2024年2月1日,启明星辰VSRC监测到互联网上披露多个核心容器基础设施组件中发现了4个漏洞(CVE-2024-21626、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653),这些漏洞被称为Leaky Vessels,影响了Runc和BuildKit,威胁者可利用这些漏洞获得对底层主机操作系统的未授权访问。
runc 是一种 CLI 工具,用于根据 OCI 规范在 Linux 上生成和运行容器。runc的使用非常灵活,可以与各种容器工具和平台集成,如Docker、Kubernetes等。其中CVE-2024-21626涉及runc,runc 1.1.11及之前版本中,由于内部文件描述符泄漏,本地威胁者可以通过多种方式实现容器逃逸:威胁者可以通过使新生成的容器进程(来自runc exec)在主机文件系统命名空间中拥有一个工作目录,或诱使特权用户运行恶意镜像并允许容器进程通过 runc run 访问主机文件系统,从而获得对主机文件系统的访问权限。这些攻击还可用于覆盖半任意主机二进制文件,从而实现容器逃逸。
BuildKit 是Docker官方社区推出的下一代镜像构建组件,可以更加快速、有效、安全地构建docker 镜像。Moby是Docker创建的一个开源项目,旨在实现软件容器化。BuildKi和Moby中还存在如下多个漏洞:
CVE-2024-23651:该漏洞的CVSS评分为8.7,在 BuildKit <= v0.12.4 中,并行运行的两个恶意构建步骤与子路径共享相同的缓存挂载可能会导致竞争条件,从而导致构建容器可以访问主机系统中的文件。只有当用户试图构建恶意项目的Dockerfile时,才会发生这种情况。
CVE-2024-23652:该漏洞的CVSS评分为10.0,在 BuildKit <= v0.12.4 中,使用 RUN --mount 的恶意 BuildKit 前端或 Dockerfile 可能会欺骗删除为挂载点创建的空文件的功能,从而从主机系统中删除容器外的文件。只有当用户使用恶意 Dockerfile 时才会发生这种情况。
CVE-2024-23653:该漏洞的CVSS评分为9.8。除了作为构建步骤运行容器外,BuildKit 还提供了基于构建镜像运行交互式容器的 API。在 BuildKit <= v0.12.4 中,可以使用这些 API 来要求 BuildKit 以提升的权限运行容器。通常,只有在 buildkitd 配置启用了 security.insecure 权限,并且初始化构建请求的用户允许的情况下,才允许运行此类容器。
CVE-2024-23650(中危):在 BuildKit <= v0.12.4 中,恶意 BuildKit 客户端或前端可制作一个请求,导致 BuildKit 守护进程因恐慌而崩溃。
CVE-2024-24557(中危):在 Moby <= v25.0.1 和 <= v24.0.8 中,如果镜像是从头构建的,经典的构建器缓存系统很容易出现缓存中毒。
二、影响范围
Runc <= 1.1.11
BuildKit <= 0.12.4
Moby (Docker Engine)<= 25.0.1 和<= 24.0.8
Docker Desktop <= 4.27.0
Containerd < 1.6.28
三、安全措施
3.1 升级版本
目前部分容器基础设施中已经修复了这些漏洞,受影响用户可升级到以下版本:
Runc >= 1.1.12
BuildKit >= 0.12.5
Moby (Docker Engine) >= 25.0.2 和 >= 24.0.9
Docker Desktop >= 4.27.1
Containerd >= 1.6.28
下载链接:
https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/
3.2 临时措施
如无法升级到修复版本,可遵循以下最佳实践来降低风险:
l 仅使用受信任的 Docker 镜像(例如Docker 官方镜像)。
l 不要从不受信任的来源或不受信任的 Dockerfile 构建 Docker 镜像。
l 如果是使用 Docker Desktop 的 Docker Business 客户,并且无法在 v4.27.1 发布后立即更新到该版本,请确保启用 Hardened Docker Desktop 功能,例如:
ü 增强的容器隔离(Enhanced Container Isolation),可在从恶意镜像运行容器的情况下减轻CVE-2024-21626的影响。
ü 镜像访问管理和注册表访问管理,可让企业控制用户可以访问哪些镜像和存储库。
l 对于 CVE-2024-23650、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,请避免使用来自不受信任来源的BuildKit 前端。前端镜像通常在 Dockerfile 的 #syntax 行中指定,或在使用 buildctl build 命令时使用 --frontend 标志指定。
l 要缓解 CVE-2024-24557 的影响,请确保在构建镜像时使用 BuildKit 或禁用缓存。
3.3 通用建议
l 定期更新系统补丁,减少系统漏洞,提升服务器的安全性。
l 加强系统和网络的访问控制,修改防火墙策略,关闭非必要的应用端口或服务,减少将危险服务(如SSH、RDP等)暴露到公网,减少攻击面。
l 使用企业级安全产品,提升企业的网络安全性能。
l 加强系统用户和权限管理,启用多因素认证机制和最小权限原则,用户和软件权限应保持在最低限度。
l 启用强密码策略并设置为定期修改。
3.4 参考链接
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/
https://snyk.io/blog/cve-2024-21626-runc-process-cwd-container-breakout/
https://www.docker.com/blog/docker-security-advisory-multiple-vulnerabilities-in-runc-buildkit-and-moby/
四、版本信息
版本 | 日期 | 备注 |
V1.0 | 2024-02-02 | 首次发布 |
五、附录
5.1 公司简介
启明星辰成立于1996年,是由留美博士严望佳女士创建的、拥有完全自主知识产权的信息安全高科技企业。是国内最具实力的信息安全产品、安全服务解决方案的领航企业之一。
公司总部位于北京市中关村软件园启明星辰大厦,公司员工6000余人,研发团队1200余人, 技术服务团队1300余人。在全国各省、市、自治区设立分支机构六十多个,拥有覆盖全国的销售体系、渠道体系和技术支持体系。公司于2010年6月23日在深圳中小板挂牌上市。(股票代码:002439)
多年来,启明星辰致力于提供具有国际竞争力的自主创新的安全产品和最佳实践服务,帮助客户全面提升其IT基础设施的安全性和生产效能,为打造和提升国际化的民族信息安全产业领军品牌而不懈努力。
5.2 关于我们
启明星辰安全应急响应中心已发布1000多个漏洞通告和风险预警,我们将持续跟踪全球最新的网络安全事件和漏洞,为企业的信息安全保驾护航。
关注我们:



京公网安备11010802024551号