这个仓库提供了针对CVE-2019-5736的高保真技术剖析和生产级漏洞利用套件。它演示了容器内的root用户如何通过利用OverlayFS挂载和ld.so.preload劫持覆盖宿主机runc二进制文件,从而获取宿主机Root Shell。
= doi.org/10.5281/zenodo.18304765
= orcid.org/0009-0007-7728-256X
高级紫队协作与宿主机 Root 逃逸取证分析
本仓库包含针对 CVE-2019-5736 的高保真解构与概念验证(PoC)。CVE-2019-5736 是 runc(1.0-rc1 至 1.0-rc6 版本)中的一个严重漏洞。该漏洞允许拥有 root 权限的恶意容器覆盖宿主机上的 runc 二进制文件,从而获得完全的宿主机 root 访问权限。
漏洞类型: CWE-59(文件访问前链接解析不当)。
CVSSv3 评分: 8.6 高危。
影响: 从隔离的容器命名空间逃逸至宿主机操作系统。
该漏洞利用遵循确定性的多阶段执行路径:
命名空间解放: 使用 unshare -rm 创建新的挂载命名空间,从而绕过容器的初始限制。
文件系统桥接: 利用 OverlayFS 将宿主机根目录(/)挂载到容器可控的可写目录中。
动态链接器劫持: 覆盖宿主机上的 /etc/ld.so.preload,将恶意载荷(/bin/sh -p)注入每个新进程。
执行触发: 执行标准的宿主机二进制程序(例如 /usr/bin/ping),触发加载器并生成一个宿主机 Root Shell。
要在受控环境(Ubuntu 18.04 + Docker 18.09.2)中进行测试:
# [cite_start]Setup vulnerable host [cite: 384-388]
docker run -d --name vuln_host --privileged ubuntu:18.04 sleep infinity
docker exec vuln_host apt update && apt install -y curl git
docker exec vuln_host curl -sSL https://get.docker.com | sh
在存在漏洞的环境中运行以下命令,以获得宿主机 root 权限:
chmod +x runc_root_escape.sh
./runc_root_escape.sh
| 目标环境 | 状态 | 影响潜力
| | --- | --- | --- | | 独立 Docker | ✅ 存在漏洞 | 宿主机接管、数据破坏($10M+) | | Kubernetes 集群 | ✅ 可横向移动 | 集群管理员密钥窃取($50M+) | | 公有云(AWS/GCP) | ✅ 存在漏洞 | IAM 角色窃取、云环境横向移动($100M+) |
蓝队在监控时应重点关注以下失陷指标(IoC):
文件系统: /etc/ld.so.preload 出现意外写入。
进程: 监控容器内的 unshare 与 mount 调用。
历史记录: 检查 /var/spool/cron/crontabs/root 中是否存在自动化持久化。
本材料由 SASTRA_ADI_WIGUNA [Purple_Elite_Teaming] 提供,仅用于教育和已获授权的安全测试目的。严禁将本信息用于非法活动。
集成 Falco/Sysdig 检测规则。
自动化红队行动清理脚本。
对照 MITRE ATT&CK T1611(逃逸至宿主机)进行映射。