
Bildungslabor, das gepinnte EDK II/OVMF-Firmware erstellt, eine UEFI-VM in QEMU startet und Python-PoC-Skripte für eine PXE-Netzwerk-Boot-DoS- und Speicherkorruptions-Schwachstelle ausführt.
Ein Lehrlabor zur Untersuchung einer PXE-Netzwerk-Boot-Schwachstelle in EDK II / OVMF. Es baut eine festgelegte EDK II-Revision, startet eine UEFI-Virtual-Maschine in QEMU und enthält Python-Proof-of-Concept-Skripte zur Untersuchung von Denial of Service (DoS) und Speicherkorruption.
Referenzen: EDK II-Sicherheitshinweis · Upstream-Fix
dnsmasq, ip/tc (üblicherweise aus iproute2 oder iproute) sowie sudo/Root-Rechte.Aus dem entpackten Archiv:
cd pxe-lab-public
chmod +x *.sh
./start.sh
Der Launcher prüft die Abhängigkeiten, bietet die Installation fehlender Pakete an, baut bei Bedarf edk2-stable202608 (Commit 2970e5699ba6267f3384ffab20f96647578aebc8) und öffnet das VM-Steuerungsmenü. Führen Sie start.sh oder den Firmware-Build nicht mit sudo aus.
Nützliche Befehle:
./start.sh --check # Die Umgebung prüfen
./start.sh --build-only # Die festgelegte Firmware bauen, ohne QEMU zu starten
./start.sh --system # Stattdessen das System-OVMF verwenden (nicht geeignet, um die festgelegte Schwachstelle zu verifizieren)
./lab_run.sh --help # Netzwerk-, Capture- und QEMU-Optionen anzeigen
Das standardmäßige QEMU-User-Mode-Netzwerk ist isoliert und erfordert keine Root-Rechte. Um einen Paketmitschnitt aufzuzeichnen, führen Sie nach dem Bau der Firmware ./lab_run.sh --pcap session.pcap aus.
Die PoC-Skripte erfordern den Bridge-Modus; sie können keine Pakete in das standardmäßige QEMU-User-Mode-Netzwerk einspeisen.
Bauen Sie zunächst die Firmware als normaler Benutzer mit ./start.sh --build-only. Führen Sie dann in einem Terminal aus:
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
Wählen Sie 1 (Start) im Menü. Führen Sie in einem separaten Terminal eines der folgenden Skripte aus dem Stammverzeichnis des entpackten Archivs aus:
cd PoC-DoS
sudo bash ./start_dos.sh
Oder für den experimentellen Versuch zur Speicherkorruption / RCE:
cd PoC-RCE
sudo bash ./start_rce.sh
Diese Experimente senden manipulierte Datenverkehr an die isolierte virtuelle PXE-Umgebung und können einen Firmware-Hänger, einen Absturz oder eine Ausnahme verursachen. Ein Absturz oder ein beschädigter Registerwert ist kein Beweis dafür, dass eine Ausführung beliebigen Codes erfolgreich war. Das RCE-Skript ist ein experimenteller Versuch, kein verifizierter RCE-Exploit. Die Ergebnisse können je nach System und Firmware-Build variieren.
Die Laborinfrastruktur (Setup-, Build- und VM-Verwaltungscode) wurde mit Unterstützung eines großen Sprachmodells (LLM) erstellt und vom Autor getestet. Die DoS- und RCE-Proof-of-Concept-Skripte wurden vom Autor persönlich geschrieben und mit einem LLM-Assistenten getestet. Tests garantieren weder Korrektheit, Sicherheit, Reproduzierbarkeit noch Kompatibilität mit anderen Systemen.
Verwenden Sie diesen Code nur auf Geräten, die Ihnen gehören und die Sie kontrollieren, in einer isolierten Testumgebung. Verwenden Sie ihn nicht gegen Systeme, Netzwerke oder Geräte Dritter.
Der gesamte Code und alle Skripte werden „WIE BESEHEN“ („AS IS“) und ohne jegliche Gewährleistung bereitgestellt. Soweit nach geltendem Recht zulässig, lehnt der Autor jede Haftung für Fehler, Fehlfunktionen, Schäden, Datenverlust oder Folgen ab, die sich aus der Nutzung dieses Repositorys ergeben. Die Nutzer sind allein für ihr Handeln und die Einhaltung der geltenden Gesetze verantwortlich.