
Container-Escape-Proof-of-Concept-Exploits für CVE-2026-80521 und CVE-2026-52910, mit einer wegwerfbaren QEMU/Ubuntu-VM-Testumgebung für die sichere Ausführung von PoCs.
Dieses Verzeichnis baut und startet einen Ubuntu-Docker-Container innerhalb eines wegwerfbaren Ubuntu-QEMU-Gasts. PoCs werden in den Gast kopiert und niemals von den Host-Skripten ausgeführt.
qemu-imgcurlxorrisosocat nur, wenn VM_PAYLOAD_CONSOLE=1 verwendet wirdKVM wird verwendet, wenn verfügbar; andernfalls fällt QEMU auf TCG zurück.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/build_image.sh
Der Builder lädt das Cloud-Image der ausgewählten Ubuntu-Version herunter, validiert es anhand der von Ubuntu veröffentlichten SHA256SUMS, installiert Paketaktualisierungen und Docker, zieht das passende Ubuntu-Container-Image und schreibt vm/ubuntu-<version>.qcow2.
Die Standard-URLs sind auf die neuesten offiziellen Release-Images festgelegt, die am 16. September 2026 verfügbar waren:
2026091120260823Setzen Sie UBUNTU_RELEASE_URL, UBUNTU_IMAGE_URL oder UBUNTU_SUMS_URL, um eine andere Version zu verwenden.
Das erzeugte qcow2-Image und der SSH-Schlüssel sind lokale Artefakte, die von Git ignoriert werden. Der private Schlüssel behält den Modus 0600.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/run_container.sh ./path/to/binary [arguments...]
Jeder Lauf erstellt ein temporäres qcow2-Overlay, startet den Gast, kopiert die Binärdatei über SSH und startet sie in einem frischen Container mit deaktiviertem Netzwerk. Argumente, Standard-Streams und der Exit-Status werden weitergeleitet.
Führen Sie das Skript ohne Binärdatei aus, um eine interaktive Shell in einem frischen Container zu öffnen:
./vm/run_container.sh
Verwenden Sie --shell mit einer Binärdatei, um sie in den Gast zu kopieren und unter /payload einzubinden, ohne sie auszuführen:
./vm/run_container.sh --shell ./path/to/binary
Nützliche Überschreibungen:
VM_CPUS=4 VM_MEMORY_MB=4096 ./vm/run_container.sh ./binary
VM_SSH_PORT=2223 ./vm/run_container.sh ./binary
KEEP_VM_RUN_DIR=1 ./vm/run_container.sh ./binary
KEEP_VM_RUN_DIR=1 behält das Overlay und die Protokolle unter /tmp/ubuntu-container.* bei. Jeder Aufruf führt einen VM-Boot und einen Payload-Versuch durch. Setzen Sie VM_PAYLOAD_CONSOLE=1 für einen Payload, der ausdrücklich den zweiten seriellen Port des Gasts verwendet.