前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2024-21626:runc容器逃逸漏洞

CVE-2024-21626:runc容器逃逸漏洞

作者头像
zouyee
发布2024-02-06 16:50:41
1.6K0
发布2024-02-06 16:50:41
举报
文章被收录于专栏:Kubernetes GOKubernetes GO

编辑 | zouyee

runC社区于2024年2月1日披露了高危安全漏洞CVE-2024-21626,攻击者可以利用该漏洞越权访问宿主机文件或执行二进制程序,详细内容参见下文

CVE-2024-21626: 提权漏洞

CVSS评分: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - 高风险 (8.6)

由于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 的二进制文件,一旦特权用户在主机上执行目标二进制文件,攻击者就可以进行转移,以完全访问主机。

Am I vulnerable?

Snyk 在 Docker 引擎以及其他容器化技术(例如 Kubernetes)使用的runc<=1.1.11的所有版本中发现了一个漏洞。利用此问题可能会导致容器逃逸到底层主机操作系统,无论是通过执行恶意映像还是使用恶意 Dockerfile 或上游映像构建映像(即使用时FROM方式)

Affected Versions

  • v1.0.0-rc93 ~ 1.1.11

How do I mitigate this vulnerability?

上述漏洞可以通过社区提供的runc补丁来避免。

Fixed Versions

  • >= 1.1.12

Detection

Snyk的new Helios团队已开发了一款针对该漏洞的运行时检测工具,https://github.com/snyk/leaky-vessels-dynamic-detector,该工具代码采用Apache-2.0许可。该独立工具提供了一个参考的实现方式,用于在执行时检测漏洞。其将eBPF hook绑定到内核和用户级函数以及包检测器上,从而能够报告容器构建和运行容器的调用,如果它们匹配任何可能存在利用尝试的模式。

Acknowledgements

感谢来自Snyk的Rory McNamara发现并披露了原始漏洞(攻击1)给Docker,感谢acmcoder的lifubang发现了如何复现(攻击3a)以覆盖主机二进制文件,以及感谢SUSE的Aleksa Sarai发现了如何复现(攻击2和3b)通过runc exec方向实现容器逃逸。

由于笔者时间、视野、认知有限,本文难免出现错误、疏漏等问题,期待各位读者朋友、业界专家指正交流。

参考文献

1. https://github.com/kyverno/kyverno/security/advisories/GHSA-3hfq-cx9j-923w

2. https://www.ddosi.org/cve-2024-21626/

3. https://cert.360.cn/warning/detail?id=65bb589cc09f255b91b17d32

4. https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/

5. https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv 6.https://github.com/opencontainers/runc/commit/02120488a4c0fc487d1ed2867e901eeed7ce8ecf

7. https://www.secrss.com/articles/63427

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DCOS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Am I vulnerable?
  • Snyk 在 Docker 引擎以及其他容器化技术(例如 Kubernetes)使用的runc<=1.1.11的所有版本中发现了一个漏洞。利用此问题可能会导致容器逃逸到底层主机操作系统,无论是通过执行恶意映像还是使用恶意 Dockerfile 或上游映像构建映像(即使用时FROM方式)
  • Affected Versions
  • How do I mitigate this vulnerability?
  • Fixed Versions
  • Detection
  • Acknowledgements
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档