
PoC para Docker `docker cp` de escritura arbitraria de archivos, explotando fallos de symlink y extracción de tar para sobrescribir binarios del host o lanzar agentes para el escape de contenedores y la ejecución de código como root.
docker cpImagen de distribución de HackSpeak. Este repositorio es un espejo de distribución del PoC CopyEscape (CVE-2026-17106) publicado por el equipo rojo de Imperva (Ron Masas); el código es idéntico al upstream; el upstream no incluye LICENSE, por lo que el espejo sigue la convención de distribución y emplea Licencia MIT, Copyright (c) 2026 HackSpeak, y los derechos de autor del código fuente pertenecen al autor original.
⚠️ Solo para investigación de seguridad y pruebas autorizadas; la demo de Linux sobrescribirá
/usr/bin/runc, ejecútela en una VM desechable y haga primero una copia de seguridad verificable; no la ejecute en entornos no autorizados o de producción.
CopyEscape (CVE-2026-17106) es una vulnerabilidad de escritura arbitraria de archivos de contenedor a host en docker cp de Docker (y sbx cp de Docker Sandboxes), descubierta por el equipo rojo de Imperva (Ron Masas).
docker cp no es una copia directa del sistema de archivos: el daemon ejecuta filepath.WalkDir en el sistema de archivos del contenedor para generar un archivo tar, y la CLI recibe el tar y lo extrae en el cliente;addTarFile vuelve a hacer Lstat ve un symlink → el flujo tar contiene entradas inconsistentes (primero un header de symlink, seguido de entradas de "subarchivo");filepath.Join, pero la llamada real a os.Symlink usa el hdr.Linkname original sin verificar (que puede apuntar a una ruta absoluta); al extraer los subarchivos posteriores, el kernel sigue ese symlink y escribe fuera del destino especificado por el usuario;docker cp. En macOS puede sobrescribir scripts de inicio de shell y la persistencia en ~/Library/LaunchAgents; en Linux, con puede sobrescribir , y operaciones posteriores del ciclo de vida de Docker permiten ejecución de código como root.sudo docker cp con contenedores no confiables.Dos demos (entorno de prueba idéntico al oficial: Engine 29.6.1 / Desktop 4.81.0):
macOS (no destructiva, crea ~/pwnd)
cd macos
./demo-macos.sh
Linux (alto impacto, sobrescribe /usr/bin/runc)
cd linux
# 按 linux/ 内说明构建镜像并运行;⚠️ 覆盖 runc 前务必备份
Los pasos detallados se encuentran en los archivos de instrucciones dentro de los subdirectorios
macos/ylinux/de este repositorio.
/usr/bin/runc); debe ejecutarse en una VM desechable y con copia de seguridad.docker cp — https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/sudo docker cp/usr/bin/runc