
Preuve de concept d'exploitation pour CVE-2025-5640, un débordement de pile dans le pilote automatique de drone militaire PX4 <=1.12.3. Envoie des paquets MAVLink conçus pour déclencher un déni de service via UDP, destiné aux tests de sécurité et à la recherche autorisés.
Auteur : Mohammed Idrees Banyamer (@banyamer_security)
GitHub : https://github.com/mbanyamer
Date : 2025-06-21
Testé sur : Ubuntu 20.04 LTS + PX4 SITL (jMAVSim)
CVE : CVE-2025-5640
Type : Déni de service (DoS) par débordement de tampon de pile
Plateforme : Multi-plateforme (UAV militaires / PX4 SITL / station sol d'autopilote basée sur Linux)
Pays de l'auteur : Jordanie
Une vulnérabilité de débordement de tampon basé sur la pile existe dans les versions <= 1.12.3 de l'autopilote UAV militaire PX4.
La vulnérabilité est déclenchée lors du traitement d'un message MAVLink malformé de type TRAJECTORY_REPRESENTATION_WAYPOINTS.
Un attaquant ayant accès au canal de communication MAVLink peut envoyer un paquet conçu pour faire planter l'autopilote, perturbant potentiellement les opérations des UAV militaires.
Ce dépôt contient une preuve de concept (PoC) qui envoie un paquet UDP MAVLink malveillant pour déclencher la vulnérabilité et provoquer un déni de service (crash) de l'autopilote PX4.
python3 px4_military_exploit.py [OPTIONS]
# Lancer une attaque DoS sur le PX4 SITL par défaut
python3 px4_military_exploit.py --mode dos
# Tester la connectivité avec un drone réel
python3 px4_military_exploit.py --mode check --ip 192.168.10.10 --port 14550
Options : --ip Adresse IP cible (par défaut : 127.0.0.1) --port Port UDP cible (par défaut : 14540) --mode Mode de fonctionnement : dos (par défaut), check --timeout Délai d'attente en secondes pour le heartbeat (par défaut : 5) --verbose Activer la sortie détaillée
Ce PoC est fourni à des fins éducatives et de recherche uniquement.
Toute utilisation non autorisée contre des systèmes sans permission est illégale et contraire à l'éthique.
Utilisez-le de manière responsable et assurez-vous d'avoir une autorisation explicite avant de tester.
"""
Installez pymavlink via pip :
pip install pymavlink