
Laboratorio didattico che compila firmware EDK II/OVMF con pinning, avvia una VM UEFI in QEMU ed esegue script PoC in Python per una vulnerabilità DoS e di corruzione della memoria nel boot di rete PXE.
Un laboratorio didattico per lo studio di una vulnerabilità nel boot di rete PXE in EDK II / OVMF. Compila una revisione fissata di EDK II, avvia una macchina virtuale UEFI in QEMU e include script Python proof-of-concept per indagare su denial of service (DoS) e corruzione della memoria.
Riferimenti: EDK II security advisory · Upstream fix
dnsmasq, ip/tc (tipicamente da iproute2 o iproute) e privilegi sudo/root.Dall'archivio estratto:
cd pxe-lab-public
chmod +x *.sh
./start.sh
Il launcher verifica le dipendenze, propone di installare i pacchetti mancanti, compila edk2-stable202608 (commit 2970e5699ba6267f3384ffab20f96647578aebc8) se necessario e apre il menu di controllo della VM. Non eseguire start.sh o la build del firmware con sudo.
Comandi utili:
./start.sh --check # Check the environment
./start.sh --build-only # Build the pinned firmware without starting QEMU
./start.sh --system # Use system OVMF instead (not suitable for verifying the pinned vulnerability)
./lab_run.sh --help # Show networking, capture, and QEMU options
La rete predefinita in modalità user di QEMU è isolata e non richiede root. Per registrare una cattura di pacchetti, eseguire ./lab_run.sh --pcap session.pcap dopo aver compilato il firmware.
Gli script PoC richiedono la modalità bridge; non possono iniettare pacchetti nella rete predefinita in modalità user di QEMU.
Per prima cosa, compilare il firmware come utente normale con ./start.sh --build-only. Poi, in un terminale:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
Selezionare 1 (Start) nel menu. In un terminale separato, eseguire uno dei seguenti comandi dalla radice dell'archivio estratto:
cd PoC-DoS
sudo bash ./start_dos.sh
Oppure, per il tentativo sperimentale di corruzione della memoria / RCE:
cd PoC-RCE
sudo bash ./start_rce.sh
Questi esperimenti inviano traffico appositamente costruito all'ambiente PXE virtuale isolato e possono causare un blocco, un crash o un'eccezione del firmware. Un crash o un valore di registro corrotto non costituisce prova che l'esecuzione di codice arbitrario sia riuscita. Lo script RCE è un tentativo sperimentale, non un exploit RCE verificato. I risultati possono variare in base al sistema e alla build del firmware.
L'infrastruttura del laboratorio (codice di setup, build e gestione della VM) è stata generata con l'assistenza di un modello linguistico di grandi dimensioni (LLM) e testata dall'autore. Gli script proof-of-concept DoS e RCE sono stati scritti personalmente dall'autore e testati con l'assistenza di un LLM. I test non garantiscono correttezza, sicurezza, riproducibilità o compatibilità con altri sistemi.
Utilizzare questo codice solo su apparecchiature di propria proprietà e sotto il proprio controllo, in un ambiente di test isolato. Non utilizzarlo contro sistemi, reti o dispositivi di terzi.
Tutto il codice e gli script sono forniti “COSÌ COME SONO,” senza garanzie di alcun tipo. Nella misura massima consentita dalla legge applicabile, l'autore declina ogni responsabilità per errori, malfunzionamenti, danni, perdita di dati o conseguenze derivanti dall'uso di questo repository. Gli utenti sono gli unici responsabili delle proprie azioni e del rispetto delle leggi applicabili.