CVE-2024-21626:runc文件描述符泄漏逃逸

漏洞原理

CVE-2024-21626是runc的一个高危容器逃逸漏洞。它的本质是资源未及时释放——runc在初始化容器时,打开了一个指向宿主机/sys/fs/cgroup目录的内部文件描述符(FD),但忘记关闭,导致这张本不该存在的‘宿主机通行证’被继承给了容器内的进程。

这里的核心攻击点在于对/proc/self/fd/特殊机制的利用。普通cd /sys等路径访问受Mount Namespace隔离限制,但/proc/self/fd/5是虚拟动态路径,内核访问它时不走常规字符串路径解析,而是直接通过内存中该进程的struct file内核对象,找到这个FD背后真正指向的物理挂载点。因为这个FD指向宿主机,所以访问/proc/self/fd/5就等于绕过了容器隔离,直达宿主机/sys/fs/cgroup目录。随后攻击者再拼接../../../../进行路径遍历,就能从/sys/fs/cgroup一路退到宿主机根目录/,从而成功绕过了runc的路径校验。

这样一来,容器内进程的当前工作目录就‘出轨’到了宿主机根目录下。攻击者不仅能读取宿主机的/etc/shadow等敏感文件,还能覆盖宿主机的关键二进制文件(如/bin/bash),最终实现从容器到宿主机的完全逃逸。

漏洞复现

拉取镜像并寻找FD

image-20260909155118075

改 Dockerfile 里的 fd 为探测到的值

image-20260909155223832

验证读取宿主机 /etc/passwd(逃逸成功的判定)

image-20260909155250823

标签: none

添加新评论

邮箱仅用于识别回复,不会在页面公开。提交后请等待页面确认结果。

文章图片预览