Учебная лаборатория, которая собирает закреплённую версию прошивки EDK II/OVMF, загружает UEFI-виртуальную машину в QEMU и запускает Python PoC-скрипты для демонстрации DoS-атаки на сетевую загрузку через PXE и уязвимости повреждения памяти.
Образовательная лаборатория для изучения уязвимости сетевой загрузки PXE в EDK II / OVMF. Она собирает закреплённую ревизию EDK II, загружает виртуальную машину UEFI в QEMU и включает Python-скрипты proof-of-concept для исследования отказа в обслуживании (DoS) и повреждения памяти.
Ссылки: Рекомендация по безопасности EDK II · Исправление в upstream
dnsmasq, ip/tc (обычно из iproute2 или iproute) и привилегии sudo/root.Из распакованного архива:
cd pxe-lab-public
chmod +x *.sh
./start.sh
Лаунчер проверяет зависимости, предлагает установить отсутствующие пакеты, при необходимости собирает edk2-stable202608 (коммит 2970e5699ba6267f3384ffab20f96647578aebc8) и открывает меню управления виртуальной машиной. Не запускайте start.sh или сборку прошивки с sudo.
Полезные команды:
./start.sh --check # Проверить окружение
./start.sh --build-only # Собрать закреплённую прошивку без запуска QEMU
./start.sh --system # Использовать системную OVMF (не подходит для проверки закреплённой уязвимости)
./lab_run.sh --help # Показать параметры сети, захвата и QEMU
Сеть QEMU в режиме пользователя по умолчанию изолирована и не требует root. Чтобы записать захват пакетов, запустите ./lab_run.sh --pcap session.pcap после сборки прошивки.
Скрипты PoC требуют режима моста; они не могут внедрять пакеты в сеть QEMU в режиме пользователя по умолчанию.
Сначала соберите прошивку от имени обычного пользователя с помощью ./start.sh --build-only. Затем в одном терминале:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
Выберите 1 (Start) в меню. В отдельном терминале запустите один из следующих вариантов из корня распакованного архива:
cd PoC-DoS
sudo bash ./start_dos.sh
Или, для экспериментальной попытки повреждения памяти / RCE:
cd PoC-RCE
sudo bash ./start_rce.sh
Эти эксперименты отправляют специально сформированный трафик в изолированную виртуальную среду PXE и могут вызвать зависание прошивки, сбой или исключение. Сбой или повреждённое значение регистра не является доказательством успешного выполнения произвольного кода. Скрипт RCE — это экспериментальная попытка, а не проверенный эксплойт RCE. Результаты могут различаться в зависимости от системы и сборки прошивки.
Инфраструктура лаборатории (код настройки, сборки и управления виртуальной машиной) была создана с помощью большой языковой модели (LLM) и протестирована автором. Скрипты proof-of-concept для DoS и RCE были написаны лично автором и протестированы с помощью ассистента на основе LLM. Тестирование не гарантирует корректность, безопасность, воспроизводимость или совместимость с другими системами.
Используйте этот код только на оборудовании, которым вы владеете и которое контролируете, в изолированной тестовой среде. Не используйте его против сторонних систем, сетей или устройств.
Весь код и скрипты предоставляются «КАК ЕСТЬ», без каких-либо гарантий. В максимальной степени, разрешённой применимым законодательством, автор отказывается от ответственности за ошибки, сбои, ущерб, потерю данных или последствия, возникшие в результате использования этого репозитория. Пользователи несут исключительную ответственность за свои действия и соблюдение применимых законов.