runc 容器逃逸漏洞技术研判与防御建议
· 阅读需 2 分钟
runc(Docker 和 Kubernetes 的底层容器运行时)近期披露一处文件描述符泄漏漏洞,攻击者可在特定条件下实现容器逃逸,获取宿主机 root 权限。
漏洞背景
runc 在处理 WORKDIR 指令时,错误地将宿主机文件描述符通过 /proc/self/fd 泄漏至容器命名空间内部。当容器镜像的 Dockerfile 包含特定 WORKDIR 路径构造时,可触发该路径。
攻击路径
1. 构造恶意 Dockerfile,WORKDIR 指向 /proc/self/fd/N
2. 构建镜像时 runc 未正确关闭继承的 fd
3. 容器启动后,进程可访问宿主机根文件系统
4. 写入 crontab 或 SSH 公钥实现持久化
影响评估
| 组件 | 影响版本 | 修复版本 |
|---|---|---|
| runc | < 1.2.4 | 1.2.4 |
| Docker Engine | < 27.4.1 | 27.4.1 |
| containerd | < 1.7.24 | 1.7.24 |
| Kubernetes | 所有使用受影响 runc 的版本 | — |
防御措施
- 立即升级 runc 至 1.2.4+
- 启用 Pod Security Admission 强制
restricted策略 - 部署 Falco/Tetragon 进行运行时 fd 异常监控
- 限制容器内
/proc文件系统挂载权限
ICE 实验室将持续跟踪该漏洞的在野利用情况,并同步更新防御规则库。