【漏洞通告】runc容器逃逸漏洞(CVE-2024-21626)

admin 2024年2月2日19:32:18评论36 views字数 2760阅读9分12秒阅读模式

一、漏洞概述

漏洞名称

 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 临时措施

如无法升级到修复版本,可遵循以下最佳实践来降低风险:
仅使用受信任的 Docker 镜像(例如Docker 官方镜像)。
不要从不受信任的来源或不受信任的 Dockerfile 构建 Docker 镜像。
如果是使用 Docker Desktop 的 Docker Business 客户,并且无法在 v4.27.1 发布后立即更新到该版本,请确保启用 Hardened Docker Desktop 功能,例如:
  • 增强的容器隔离(Enhanced Container Isolation),可在从恶意镜像运行容器的情况下减轻CVE-2024-21626的影响。

  • 镜像访问管理和注册表访问管理,可让企业控制用户可以访问哪些镜像和存储库。

对于 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)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月2日19:32:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞通告】runc容器逃逸漏洞(CVE-2024-21626)http://cn-sec.com/archives/2461523.html

发表评论

匿名网友 填写信息