
Эксплойты proof-of-concept для выхода из контейнера (CVE-2026-80521 и CVE-2026-52910) с одноразовым стендом на базе QEMU/Ubuntu VM для безопасного выполнения PoC.
Этот каталог собирает и запускает Docker-контейнер Ubuntu внутри одноразового гостя Ubuntu QEMU. PoC копируются в гостя и никогда не выполняются хост-скриптами.
qemu-imgcurlxorrisosocat только при использовании VM_PAYLOAD_CONSOLE=1KVM используется, когда доступен; в противном случае QEMU переключается на TCG.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/build_image.sh
Сборщик скачивает облачный образ выбранного релиза Ubuntu, проверяет его по опубликованному Ubuntu файлу SHA256SUMS, устанавливает обновления пакетов и Docker, загружает соответствующий образ контейнера Ubuntu и записывает vm/ubuntu-<version>.qcow2.
URL-адреса по умолчанию привязаны к последним официальным релизным образам, доступным на 16 сентября 2026 года:
2026091120260823Задайте UBUNTU_RELEASE_URL, UBUNTU_IMAGE_URL или UBUNTU_SUMS_URL, чтобы использовать другой релиз.
Сгенерированный образ qcow2 и SSH-ключ являются локальными артефактами, игнорируемыми Git. Приватный ключ сохраняет режим 0600.
UBUNTU_VERSION=26.04 \
VM_EXPECTED_KERNEL=7.0.0-31-generic \
./vm/run_container.sh ./path/to/binary [arguments...]
Каждый запуск создаёт временный оверлей qcow2, загружает гостя, копирует бинарный файл по SSH и запускает его в свежем контейнере с отключённой сетью. Аргументы, стандартные потоки и код возврата передаются.
Полезные переопределения:
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 сохраняет оверлей и логи в /tmp/ubuntu-container.*. Каждый вызов выполняет одну загрузку виртуальной машины и одну попытку запуска полезной нагрузки. Установите VM_PAYLOAD_CONSOLE=1 для полезной нагрузки, которая явно использует второй последовательный порт гостя.