runc容器逃逸漏洞,安易科技提供解决方案

admin 2024年2月28日13:32:49评论9 views字数 1536阅读5分7秒阅读模式
 前言

近日,安易科技安全团队监测到 runc 官方发布安全通告,修复了一个容器逃逸漏洞(CVE-2024-21626),由于 runc 在初始化时存在内部文件描述符泄露,且未验证最终工作目录是否位于容器的挂载命名空间,导致攻击者可以通过多种方式进行容器逃逸。

漏洞披露后,安易科技安全团队迅速响应,对该漏洞进行深入分析与研判。并通过安易容器安全平台实现了对漏洞扫描与漏洞利用检测,帮助用户快速识别安全风险,确认防御措施的有效性。

漏洞详情

影响组件

runc是一个根据OCI规范,在Linux上生成和运行容器的命令行工具。runc作为容器运行时的重要支撑组件,使用非常灵活广泛,可以与各种容器工具和平台集成,如Docker、Kubernetes等。该漏洞几乎影响runc的所有历史版本,范围很广。它支持多种容器格式,包括OCI规范定义的标准格式,以及其他格式如Docker镜像格式。作为开源项目,runc受到全球开发者社区的广泛参与和贡献,被广泛应用于生产环境中的容器化部署。

漏洞描述

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

影响范围

v1.0.0-rc93 <= runc <= 1.1.11

漏洞POC验证

漏洞复现环境,内核:5.8.0-33-generic,docker Server Version:20.10.17,runc Version 1.1.2

runc容器逃逸漏洞,安易科技提供解决方案

 

检测与防护方案

方案一:容器运行时入侵检测

安装部署安易科技自主研发的AneSec云原生安全平台最新版本产品。该产品已默认内置了针对“检测到runc容器逃逸漏洞(CVE-2024-21626)利用行为”的规则,无需额外配置。

runc容器逃逸漏洞,安易科技提供解决方案

完成安装后,产品将自动启动并实时监控容器运行时的行为。一旦检测到任何与CVE-2024-21626漏洞利用行为相符的异常活动,系统将立即发出警报,如下图所示:

runc容器逃逸漏洞,安易科技提供解决方案
runc容器逃逸漏洞,安易科技提供解决方案

方案二:恶意镜像检测方案

通过镜像的层文件信息查找是否设置了”WORKDIR /proc/self/fd/x“的镜像,如果层文件信息中包含该段文字,则其大概率为恶意镜像,如下图所示:

runc容器逃逸漏洞,安易科技提供解决方案

参考链接:

https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv

https://buaq.net/go-219732.html

https://github.com/Wall1e/CVE-2024-21626-POC/tree/main

 

原文始发于微信公众号(安易科技AneSec):runc容器逃逸漏洞,安易科技提供解决方案

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月28日13:32:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   runc容器逃逸漏洞,安易科技提供解决方案http://cn-sec.com/archives/2531273.html

发表评论

匿名网友 填写信息