
Pruebas de concepto de escape de contenedores para CVE-2026-80521 y CVE-2026-52910, con un entorno de máquina virtual QEMU/Ubuntu desechable para la ejecución segura de PoC.
Este directorio compila y ejecuta un contenedor Docker de Ubuntu dentro de un invitado QEMU de Ubuntu desechable. Los PoC se copian en el invitado y nunca son ejecutados por los scripts del host.
qemu-imgcurlxorrisosocat solo cuando se usa VM_PAYLOAD_CONSOLE=1Se utiliza KVM cuando está disponible; de lo contrario, QEMU recurre a TCG.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/build_image.sh
El compilador descarga la imagen cloud de la versión de Ubuntu seleccionada, la valida contra el archivo SHA256SUMS publicado por Ubuntu, instala actualizaciones de paquetes y Docker, descarga la imagen de contenedor de Ubuntu correspondiente y escribe vm/ubuntu-<version>.qcow2.
Las URL predeterminadas están fijadas a las últimas imágenes de versión oficial disponibles el 16 de septiembre de 2026:
2026091120260823Establezca UBUNTU_RELEASE_URL, UBUNTU_IMAGE_URL o UBUNTU_SUMS_URL para usar otra versión.
La imagen qcow2 generada y la clave SSH son artefactos locales ignorados por Git. La clave privada permanece con modo 0600.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/run_container.sh ./path/to/binary [arguments...]
Cada ejecución crea una capa de superposición qcow2 temporal, arranca el invitado, copia el binario por SSH y lo lanza en un contenedor nuevo con la red deshabilitada. Los argumentos, los flujos estándar y el estado de salida se reenvían.
Anulaciones útiles:
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 conserva la capa de superposición y los registros en /tmp/ubuntu-container.*. Cada invocación realiza un arranque de VM y un intento de carga útil. Establezca VM_PAYLOAD_CONSOLE=1 para una carga útil que use explícitamente el segundo puerto serie del invitado.