
PoC para escrita arbitrária de arquivos via `docker cp` do Docker, explorando falhas de symlink e extração de tar para sobrescrever binários do host ou lançar agentes para escape de contêiner e execução de código como root.
docker cpImagem de distribuição do HackSpeak. Este repositório é uma imagem de distribuição do PoC do CopyEscape (CVE-2026-17106) divulgado publicamente pela equipe vermelha da Imperva (Ron Masas), com código idêntico ao upstream; o upstream não inclui LICENSE, então a imagem segue a convenção de distribuição usando MIT License, Copyright (c) 2026 HackSpeak, com os direitos autorais do código pertencentes ao autor original.
⚠️ Apenas para pesquisa de segurança e testes autorizados; a demonstração em Linux sobrescreverá
/usr/bin/runc, execute em uma VM descartável e faça um backup verificável antes, não execute em ambientes não autorizados ou de produção.
CopyEscape (CVE-2026-17106) é uma vulnerabilidade de escrita arbitrária de arquivos do contêiner para o host no docker cp do Docker (e no sbx cp do Docker Sandboxes), descoberta pela Equipe Vermelha da Imperva (Ron Masas).
docker cp não é uma cópia direta do sistema de arquivos — o daemon executa filepath.WalkDir no sistema de arquivos do contêiner para gerar um arquivo tar, e o CLI recebe o tar e o extrai no lado do cliente;addTarFile veja um symlink no próximo Lstat → o fluxo tar apresenta entradas inconsistentes (primeiro o cabeçalho do symlink, seguidas de entradas de "subarquivo");filepath.Join, mas o os.Symlink real usa o hdr.Linkname original não verificado (que pode apontar para um caminho absoluto); na extração subsequente dos subarquivos, o kernel segue esse symlink e grava fora do destino especificado pelo usuário;docker cp. No macOS, é possível sobrescrever scripts de inicialização do shell e ~/Library/LaunchAgents para persistência; no Linux, usando sudo docker cp, é possível sobrescrever e, em seguida, operações do ciclo de vida do Docker podem resultar em execução de código como root.sudo docker cp em contêineres não confiáveis.Duas demonstrações (ambiente de teste idêntico ao oficial: Engine 29.6.1 / Desktop 4.81.0):
macOS (não destrutivo, cria ~/pwnd)
cd macos
./demo-macos.sh
Linux (alto impacto, sobrescreve /usr/bin/runc)
cd linux
# Siga as instruções em linux/ para construir a imagem e executar; ⚠️ faça backup antes de sobrescrever o runc
Para etapas detalhadas, consulte os arquivos de instruções nos subdiretórios
macos/elinux/deste repositório.
/usr/bin/runc); execute somente em uma VM descartável e faça backup.docker cp — https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp//usr/bin/runc