
PoC для Docker `docker cp` — произвольная запись файлов, использующая недостатки symlink и извлечения tar-архивов для перезаписи бинарных файлов хоста или запуска агентов с целью выхода из контейнера и выполнения кода с правами root.
docker cpРаспространяемое зеркало HackSpeak. Этот репозиторий является распространяемым зеркалом открытого PoC CopyEscape (CVE-2026-17106) от Imperva Red Team (Ron Masas), код идентичен оригиналу; оригинальный репозиторий не прилагает LICENSE, поэтому зеркало, следуя практике распространения, использует MIT License, Copyright (c) 2026 HackSpeak, авторские права на исходный код принадлежат автору оригинального кода.
⚠️ Только для исследований безопасности и авторизованного тестирования; Linux-демонстрация перезапишет
/usr/bin/runc, запускайте в одноразовой VM и сначала сделайте проверяемую резервную копию, не выполняйте в несанкционированных или производственных средах.
CopyEscape (CVE-2026-17106) — это уязвимость произвольной записи файлов из контейнера на хост-машину в Docker docker cp (а также sbx cp в Docker Sandboxes), обнаруженная Imperva Red Team (Ron Masas).
docker cp — это не прямое копирование файловой системы: daemon выполняет filepath.WalkDir в файловой системе контейнера и создаёт tar-архив, а CLI принимает tar и распаковывает его на стороне клиента;addTarFile видна symlink → в tar-потоке появляются несогласованные записи (сначала symlink header, затем запись «дочернего файла»);filepath.Join, но фактически os.Symlink использует исходную непроверенную hdr.Linkname (которая может указывать на абсолютный путь); при последующем извлечении дочерних файлов ядро следует этой symlink и выполняет запись за пределы указанной пользователем цели;docker cp. На macOS можно перезаписать сценарии запуска shell и ~/Library/LaunchAgents для персистентности; на Linux с помощью sudo docker cp можно перезаписать , после чего последующие операции жизненного цикла 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//usr/bin/runc