Laboratorio educativo que compila firmware EDK II/OVMF fijado, arranca una VM UEFI en QEMU y ejecuta scripts PoC en Python para una vulnerabilidad de DoS en el arranque de red PXE y de corrupción de memoria.
Un laboratorio educativo para estudiar una vulnerabilidad de arranque por red PXE en EDK II / OVMF. Compila una revisión fijada de EDK II, arranca una máquina virtual UEFI en QEMU e incluye scripts de prueba de concepto en Python para investigar la denegación de servicio (DoS) y la corrupción de memoria.
Referencias: Aviso de seguridad de EDK II · Corrección upstream
dnsmasq, ip/tc (normalmente de iproute2 o iproute) y privilegios de sudo/root.Desde el archivo extraído:
cd pxe-lab-public
chmod +x *.sh
./start.sh
El lanzador comprueba las dependencias, ofrece instalar los paquetes que falten, compila edk2-stable202608 (commit 2970e5699ba6267f3384ffab20f96647578aebc8) si es necesario y abre el menú de control de la VM. No ejecute start.sh ni la compilación del firmware con sudo.
Comandos útiles:
./start.sh --check # Comprobar el entorno
./start.sh --build-only # Compilar el firmware fijado sin iniciar QEMU
./start.sh --system # Usar el OVMF del sistema en su lugar (no apto para verificar la vulnerabilidad fijada)
./lab_run.sh --help # Mostrar las opciones de red, captura y QEMU
La red en modo usuario de QEMU predeterminada está aislada y no requiere root. Para registrar una captura de paquetes, ejecute ./lab_run.sh --pcap session.pcap después de compilar el firmware.
Los scripts de PoC requieren el modo puente; no pueden inyectar paquetes en la red en modo usuario de QEMU predeterminada.
Primero, compile el firmware como usuario normal con ./start.sh --build-only. Después, en una terminal:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
Seleccione 1 (Start) en el menú. En otra terminal, ejecute uno de los siguientes comandos desde la raíz del archivo extraído:
cd PoC-DoS
sudo bash ./start_dos.sh
O, para el intento experimental de corrupción de memoria / RCE:
cd PoC-RCE
sudo bash ./start_rce.sh
Estos experimentos envían tráfico manipulado al entorno PXE virtual aislado y pueden provocar que el firmware se bloquee, falle o genere una excepción. Un fallo o un valor de registro corrupto no es prueba de que la ejecución de código arbitrario haya tenido éxito. El script de RCE es un intento experimental, no un exploit de RCE verificado. Los resultados pueden variar según el sistema y la compilación del firmware.
La infraestructura del laboratorio (código de configuración, compilación y gestión de la VM) se generó con la ayuda de un modelo de lenguaje grande (LLM) y fue probada por el autor. Los scripts de prueba de concepto de DoS y RCE fueron escritos personalmente por el autor y probados con la ayuda de un asistente LLM. Las pruebas no garantizan la corrección, seguridad, reproducibilidad ni compatibilidad con otros sistemas.
Utilice este código únicamente en equipos que posea y controle, en un entorno de pruebas aislado. No lo utilice contra sistemas, redes o dispositivos de terceros.
Todo el código y los scripts se proporcionan “TAL CUAL”, sin garantías de ningún tipo. En la máxima medida permitida por la ley aplicable, el autor declina toda responsabilidad por errores, fallos de funcionamiento, daños, pérdida de datos o consecuencias derivadas del uso de este repositorio. Los usuarios son los únicos responsables de sus acciones y del cumplimiento de las leyes aplicables.