docker cp 容器到宿主机的任意文件写入HackSpeak 分发镜像。本仓库为 Imperva 红队(Ron Masas)公开的 CopyEscape PoC(CVE-2026-17106)的分发镜像,代码与上游一致;上游未附 LICENSE,镜像按分发惯例采用 MIT License,Copyright (c) 2026 HackSpeak,源码版权归原代码作者。
⚠️ 仅供安全研究与授权测试使用;Linux 演示会覆盖
/usr/bin/runc,请在一次性 VM 中运行并先做可验证的备份,勿在未授权或生产环境执行。
CopyEscape(CVE-2026-17106) 是 Docker docker cp(及 Docker Sandboxes 的 sbx cp)的容器到宿主机任意文件写入漏洞,由 Imperva Red Team(Ron Masas)发现。
docker cp 不是直接文件系统复制——daemon 在容器文件系统上执行 filepath.WalkDir 生成 tar 归档,CLI 接收 tar 后在客户端解压提取;addTarFile 再次 Lstat 时看到的是 symlink → tar 流出现不一致条目(先 symlink header,后跟"子文件"条目);filepath.Join 后的构造路径做边界检查,但实际 os.Symlink 用的是原始未检查的 hdr.Linkname(可指向绝对路径);后续子文件提取时内核跟随该 symlink,写入到用户指定目标之外;docker cp 的用户权限在宿主机创建/覆盖任意可写文件。macOS 可覆盖 shell 启动脚本、~/Library/LaunchAgents 持久化;Linux 用 sudo docker cp 可覆盖 /usr/bin/runc,后续 Docker 生命周期操作即可实现 root 代码执行。sudo docker cp。两个演示(测试环境与官方一致:Engine 29.6.1 / Desktop 4.81.0):
macOS(非破坏性,创建 ~/pwnd)
cd macos
./demo-macos.sh
Linux(高影响,覆盖 /usr/bin/runc)
cd linux
# 按 linux/ 内说明构建镜像并运行;⚠️ 覆盖 runc 前务必备份
详细步骤见本仓库
macos/与linux/子目录内的说明文件。
/usr/bin/runc),必须在一次性 VM 中运行并备份。docker cp — https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/