一、漏洞概述
漏洞名称
|
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 中,如果镜像是从头构建的,经典的构建器缓存系统很容易出现缓存中毒。
二、影响范围
Moby (Docker Engine)<= 25.0.1 和<= 24.0.8
三、安全措施
3.1 升级版本
目前部分容器基础设施中已经修复了这些漏洞,受影响用户可升级到以下版本:
Moby (Docker Engine) >= 25.0.2 和 >= 24.0.9
https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/
3.2 临时措施
如无法升级到修复版本,可遵循以下最佳实践来降低风险:
仅使用受信任的 Docker 镜像(例如Docker 官方镜像)。
不要从不受信任的来源或不受信任的 Dockerfile 构建 Docker 镜像。
如果是使用 Docker Desktop 的 Docker Business 客户,并且无法在 v4.27.1 发布后立即更新到该版本,请确保启用 Hardened Docker Desktop 功能,例如:
对于 CVE-2024-23650、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,请避免使用来自不受信任来源的BuildKit 前端。前端镜像通常在 Dockerfile 的 #syntax 行中指定,或在使用 buildctl build 命令时使用 --frontend 标志指定。
要缓解 CVE-2024-24557 的影响,请确保在构建镜像时使用 BuildKit 或禁用缓存。
3.3 通用建议
定期更新系统补丁,减少系统漏洞,提升服务器的安全性。
加强系统和网络的访问控制,修改防火墙策略,关闭非必要的应用端口或服务,减少将危险服务(如SSH、RDP等)暴露到公网,减少攻击面。
加强系统用户和权限管理,启用多因素认证机制和最小权限原则,用户和软件权限应保持在最低限度。
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/
原文始发于微信公众号(启明星辰安全简讯):【漏洞通告】runc容器逃逸漏洞(CVE-2024-21626)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/2461523.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论