
PoC per Docker `docker cp` scrittura arbitraria di file, che sfrutta i difetti di symlink ed estrazione tar per sovrascrivere i binari dell'host o avviare agenti per la fuga dal container e l'esecuzione di codice come root.
docker cp scrittura arbitraria di file dal container all'hostImmagine di distribuzione HackSpeak. Questo repository è un'immagine di distribuzione del PoC CopyEscape (CVE-2026-17106) pubblicato dalla red team di Imperva (Ron Masas), il codice è identico a quello upstream; l'upstream non include una LICENSE, l'immagine, secondo la convenzione di distribuzione, adotta MIT License, Copyright (c) 2026 HackSpeak, il copyright del codice sorgente appartiene all'autore originale.
⚠️ Solo per ricerca sulla sicurezza e test autorizzati; la demo Linux sovrascriverà
/usr/bin/runc, eseguire in una VM usa-e-getta e fare prima un backup verificabile, non eseguire in ambienti non autorizzati o di produzione.
CopyEscape(CVE-2026-17106) è una vulnerabilità di scrittura arbitraria di file dal container all'host in Docker docker cp (e sbx cp di Docker Sandboxes), scoperta da Imperva Red Team (Ron Masas).
docker cp non è una copia diretta del filesystem — il daemon esegue filepath.WalkDir sul filesystem del container per generare un archivio tar, il CLI riceve il tar e lo estrae lato client;addTarFile esegue nuovamente Lstat veda un symlink → il flusso tar contiene voci incoerenti (prima un header symlink, seguito da una voce "file figlio");filepath.Join, ma la os.Symlink effettiva usa l'hdr.Linkname originale non controllato (che può puntare a un percorso assoluto); durante l'estrazione successiva dei file figli, il kernel segue il symlink e scrive al di fuori della destinazione specificata dall'utente;docker cp. Su macOS può sovrascrivere script di avvio della shell e la persistenza in ~/Library/LaunchAgents; su Linux, con sudo docker cp, può sovrascrivere , e le successive operazioni del ciclo di vita di Docker consentono l'esecuzione di codice come root.sudo docker cp con container non fidati.Due demo (ambiente di test identico a quello ufficiale: Engine 29.6.1 / Desktop 4.81.0):
macOS (non distruttiva, crea ~/pwnd)
cd macos
./demo-macos.sh
Linux (alto impatto, sovrascrive /usr/bin/runc)
cd linux
# 按 linux/ 内说明构建镜像并运行;⚠️ 覆盖 runc 前务必备份
Per i passaggi dettagliati vedere i file di istruzioni nelle sottodirectory
macos/elinux/di questo repository.
/usr/bin/runc), deve essere eseguita in una VM usa-e-getta e con backup.docker cp — https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp//usr/bin/runc