Laboratoire pédagogique qui compile un firmware EDK II/OVMF épinglé, démarre une VM UEFI dans QEMU et exécute des scripts PoC Python pour une vulnérabilité de déni de service et de corruption de mémoire lors du démarrage réseau PXE.
Un laboratoire pédagogique pour l'étude d'une vulnérabilité de démarrage réseau PXE dans EDK II / OVMF. Il compile une révision EDK II épinglée, démarre une machine virtuelle UEFI dans QEMU et inclut des scripts Python de preuve de concept pour l'analyse du déni de service (DoS) et de la corruption de mémoire.
Références : avis de sécurité EDK II · correctif amont
dnsmasq, ip/tc (généralement fournis par iproute2 ou iproute), et les privilèges sudo/root.Depuis l'archive extraite :
cd pxe-lab-public
chmod +x *.sh
./start.sh
Le lanceur vérifie les dépendances, propose d'installer les paquets manquants, compile edk2-stable202608 (commit 2970e5699ba6267f3384ffab20f96647578aebc8) si nécessaire, puis ouvre le menu de contrôle de la VM. N'exécutez pas start.sh ni la compilation du firmware avec sudo.
Commandes utiles :
./start.sh --check # Vérifier l'environnement
./start.sh --build-only # Compiler le firmware épinglé sans démarrer QEMU
./start.sh --system # Utiliser plutôt l'OVMF du système (inadapté pour vérifier la vulnérabilité épinglée)
./lab_run.sh --help # Afficher les options réseau, de capture et QEMU
Le réseau QEMU en mode utilisateur par défaut est isolé et ne nécessite pas root. Pour enregistrer une capture de paquets, exécutez ./lab_run.sh --pcap session.pcap après avoir compilé le firmware.
Les scripts PoC nécessitent le mode bridge ; ils ne peuvent pas injecter de paquets dans le réseau QEMU en mode utilisateur par défaut.
Tout d'abord, compilez le firmware en tant qu'utilisateur normal avec ./start.sh --build-only. Ensuite, dans un terminal :
cd pxe-lab-public
sudo ./lab.sh --network bridge --namespace pxelab
Sélectionnez 1 (Start) dans le menu. Dans un terminal séparé, exécutez l'un des scripts suivants depuis la racine de l'archive extraite :
cd PoC-DoS
sudo bash ./start_dos.sh
Ou, pour la tentative expérimentale de corruption de mémoire / RCE :
cd PoC-RCE
sudo bash ./start_rce.sh
Ces expériences envoient du trafic forgé vers l'environnement PXE virtuel isolé et peuvent provoquer un blocage, un plantage ou une exception du firmware. Un plantage ou une valeur de registre corrompue ne prouve pas qu'une exécution de code arbitraire a réussi. Le script RCE est une tentative expérimentale, pas un exploit RCE vérifié. Les résultats peuvent varier selon le système et la compilation du firmware.
L'infrastructure du laboratoire (code de configuration, de compilation et de gestion de la VM) a été générée avec l'aide d'un grand modèle de langage (LLM) et testée par l'auteur. Les scripts de preuve de concept DoS et RCE ont été écrits personnellement par l'auteur et testés avec l'assistance d'un LLM. Les tests ne garantissent ni l'exactitude, ni la sécurité, ni la reproductibilité, ni la compatibilité avec d'autres systèmes.
N'utilisez ce code que sur du matériel que vous possédez et contrôlez, dans un environnement de test isolé. Ne l'utilisez pas contre des systèmes, réseaux ou appareils tiers.
Tout le code et les scripts sont fournis « EN L'ÉTAT », sans garantie d'aucune sorte. Dans toute la mesure permise par la loi applicable, l'auteur décline toute responsabilité pour les erreurs, dysfonctionnements, dommages, pertes de données ou conséquences découlant de l'utilisation de ce dépôt. Les utilisateurs sont seuls responsables de leurs actions et du respect des lois applicables.