
Injection de commande DUML sur drone DJI via Bluetooth — Preuve de concept pour CVE-2026-78306
Enregistrement CVE : https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-78306
Les drones DJI exposent une interface Bluetooth utilisée pour établir une connexion à l'interface Wi-Fi du drone et échanger les identifiants Wi-Fi.
L'interface Bluetooth vérifie l'UUID de confiance de l'appareil pour trois commandes :
Les autres commandes ne nécessitent pas la même vérification d'authentification. Par conséquent, un attaquant distant à portée Bluetooth peut être en mesure d'envoyer des commandes DUML non autorisées au drone.
Selon la commande, un attaquant peut être en mesure de modifier la configuration du drone, notamment en changeant le mot de passe Wi-Fi et en obtenant potentiellement l'accès au réseau interne du drone ; en activant ou désactivant les interfaces radio ; en redémarrant ou éteignant l'aéronef ; en réinitialisant la configuration, ce qui efface toutes les vidéos et photos capturées par le drone ; et en effectuant d'autres actions.
Le POC fournit un registre de commandes qui permet de tester les commandes disponibles sans modifier le code source Python. Le registre de commandes, incluant la commande, le récepteur, les exigences d'authentification et la description de chaque commande, est défini dans commands.json.
| Produit | Version affectée |
|---|---|
| DJI Neo | 0 – 01.00.0400 |
| DJI Neo 2 | 0 – 01.00.0500 |
| DJI Flip | 0 – 01.00.1200 |
| DJI Air 3 | 0 – 01.00.1600 |
| DJI Air 3S | 0 – 01.00.1400 |
| DJI Avata 2 | 0 – 01.00.0400 |
| DJI Avata 360 | 0 – 01.00.0300 |
| DJI Mavic 3 | 0 – 01.00.1400 |
| DJI Mavic 3 Classic | 0 – 01.00.0800 |
| DJI Mavic 3 Pro | 0 – 01.01.0700 |
| DJI Mavic 4 Pro | 0 – 01.00.0500 |
| DJI Mini 2 | 0 – 01.07.0200 |
| DJI Mini 3 | 0 – 01.00.0500 |
| DJI Mini 3 Pro | 0 – 01.00.0900 |
| DJI Mini 4 Pro | 0 – 01.00.1100 |
| DJI Mini 5 Pro | 0 – 01.00.0600 |
https://github.com/user-attachments/assets/57f51df2-5160-404c-9fd3-2a3a8b700008
# Clone the repository
git clone https://github.com/Wh02m1/CVE-2026-78306.git
cd CVE-2026-78306-POC
# Create and activate a Python virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
python3 ble_console.py
Les commandes suivantes sont enregistrées dans commands.json. Le POC sépare les commandes en opérations de lecture, de configuration, de contrôle radio, de réinitialisation, système et de paramètres.
| Commande | Ce qu'elle fait |
|---|---|
| GET SSID | Récupère le SSID Wi-Fi configuré. |
| GET PSK | Récupère la clé pré-partagée WPA2 du Wi-Fi. |
| GET MAC | Récupère l'adresse MAC du point d'accès Wi-Fi. |
| GET Country Code | Récupère le code pays réglementaire à deux lettres. |
| GET Channel | Récupère le canal Wi-Fi actuellement actif. |
| GET Band | Récupère la sélection de bande 2,4/5 GHz configurée. |
| GET RSSI | Interroge le gestionnaire RSSI ; cette version du firmware contient une implémentation stub. |
| GET WiFi/BT status | Récupère l'état des radios Wi-Fi et Bluetooth. |
| GET Device Info/Model | Récupère les informations sur l'appareil et le modèle. |
| GET Version | Récupère la version du démon. |
| GET Bluetooth Name | Récupère le nom de l'appareil Bluetooth. |
| Commande | Ce qu'elle fait |
|---|---|
| SET SSID | Modifie le SSID Wi-Fi configuré. |
| SET PSK | Modifie le mot de passe Wi-Fi configuré. |
| SET MAC Address | Modifie la configuration BSSID Wi-Fi à l'exécution. |
| SET Country Code | Modifie le code pays réglementaire configuré. |
| SET Country Code Ext | Gère la configuration étendue du code pays. |
| SET Channel | Modifie le canal Wi-Fi et provoque le redémarrage du point d'accès. |
Ces opérations sont classées comme danger dans le POC et nécessitent donc une confirmation explicite avant d'être envoyées.
| Commande | Ce qu'elle fait |
|---|---|
| Start WIFI | Démarre l'interface Wi-Fi et les services associés. |
| Stop WIFI | Arrête l'interface Wi-Fi. |
| Restart WIFI + BT | Redémarre les sous-systèmes Wi-Fi et Bluetooth. |
| Start Bluetooth | Démarre le sous-système Bluetooth. |
| Stop Bluetooth | Arrête le sous-système Bluetooth et met fin à la session en cours. |
| Sysmode power control | Contrôle l'état d'alimentation Wi-Fi/Bluetooth. |
| Commande | Ce qu'elle fait |
|---|---|
| Factory Reset WIFI | Restaure la configuration Wi-Fi à son état par défaut. |
| Factory Restore Params | Restaure la table des paramètres de configuration réseau aux valeurs d'usine. |
Le POC marque les deux opérations comme dangereuses car elles modifient la configuration persistante.