CVE-2024-21626 从容器内逃逸到宿主机文件系统

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

最近很火的一个CVE漏洞,攻击者可以通过设置容器的working directory来获取宿主机上的文件路径,进而进入宿主机。演示了如何在Linux机器上复现这个攻击。需要安装依赖并替换runc到旧版本,然后重启docker engine。创建Dockerfile并编译运行docker image,可以成功进入宿主机。攻击者还可以在容器内运行docker命令。

🎯

关键要点

  • 最近出现的CVE漏洞允许攻击者通过设置容器的工作目录获取宿主机文件路径。

  • 漏洞源于docker (runc)在运行用户代码前未关闭文件描述符。

  • 攻击者需要能够在容器内执行代码并设置工作目录。

  • 复现攻击需要准备新的Linux虚拟机并安装golang、libseccomp-dev和docker engine。

  • 需要将runc替换为旧版本v1.0.0-rc10,并重启docker engine。

  • 创建Dockerfile并设置工作目录为/proc/self/fd/7。

  • 编译并运行docker image,可能需要多次尝试才能成功。

  • 进入容器后可以通过相对路径访问宿主机文件。

  • 在容器内运行htop只能看到容器内的进程,但通过chroot可以看到所有进程。

  • 容器内可以运行docker命令,查看所有容器信息。

🏷️

标签

➡️

继续阅读