
PoC für das beliebige Schreiben von Dateien über Docker `docker cp`, das Symlink- und Tar-Extraktions-Schwachstellen ausnutzt, um Host-Binaries zu überschreiben oder Agents zu starten, um einen Container-Escape und die Ausführung von Code mit Root-Rechten zu erreichen.
docker cp: beliebiges Dateischreiben vom Container auf den HostHackSpeak-Verteilungsimage. Dieses Repository ist ein Verteilungsimage des vom Imperva Red Team (Ron Masas) veröffentlichten CopyEscape-PoC (CVE-2026-17106), der Code ist identisch mit dem Upstream; das Upstream enthält keine LICENSE, daher verwendet das Image gemäß Verteilungskonvention die MIT License, Copyright (c) 2026 HackSpeak, das Urheberrecht am Quellcode liegt beim ursprünglichen Code-Autor.
⚠️ Nur für Sicherheitsforschung und autorisierte Tests gedacht; die Linux-Demo überschreibt
/usr/bin/runc, bitte in einer Wegwerf-VM ausführen und zuerst ein verifizierbares Backup erstellen, nicht in nicht autorisierten oder Produktionsumgebungen ausführen.
CopyEscape (CVE-2026-17106) ist eine Schwachstelle für beliebiges Dateischreiben vom Container auf den Host in Docker docker cp (sowie sbx cp von Docker Sandboxes), entdeckt vom Imperva Red Team (Ron Masas).
docker cp ist keine direkte Dateisystemkopie – der Daemon führt filepath.WalkDir auf dem Container-Dateisystem aus, um ein tar-Archiv zu erstellen; die CLI empfängt das tar und extrahiert es auf der Clientseite;addTarFile beim erneuten Lstat einen Symlink sieht → der tar-Stream enthält inkonsistente Einträge (zuerst Symlink-Header, gefolgt von „Unterdatei“-Einträgen);filepath.Join konstruierte Pfad auf Grenzen geprüft, aber das tatsächliche os.Symlink verwendet das ursprüngliche, ungeprüfte hdr.Linkname (das auf einen absoluten Pfad zeigen kann); bei der anschließenden Extraktion von Unterdateien folgt der Kernel diesem Symlink und schreibt außerhalb des vom Benutzer angegebenen Ziels;docker cp ausführt, beliebige beschreibbare Dateien auf dem Host zu erstellen/überschreiben. Unter macOS können Shell-Startskripte und ~/Library/LaunchAgents-Persistenz überschrieben werden; unter Linux kann mit überschrieben werden, und anschließende Docker-Lebenszyklusoperationen ermöglichen Root-Codeausführung.sudo docker cp bei nicht vertrauenswürdigen Containern verwenden.Zwei Demos (Testumgebung identisch mit der offiziellen: Engine 29.6.1 / Desktop 4.81.0):
macOS (nicht destruktiv, erstellt ~/pwnd)
cd macos
./demo-macos.sh
Linux (hohe Auswirkung, überschreibt /usr/bin/runc)
cd linux
# 按 linux/ 内说明构建镜像并运行;⚠️ 覆盖 runc 前务必备份
Detaillierte Schritte finden Sie in den Anleitungsdateien in den Unterverzeichnissen
macos/undlinux/dieses Repositories.
/usr/bin/runc); sie muss in einer Wegwerf-VM ausgeführt und gesichert werden.docker cp — https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/sudo docker cp/usr/bin/runc