Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Dji_ble_vuln — Injection de commande DUML sur drone DJI via Bluetooth — Preuve de concept pour CVE-2026-78306 | Kitploit
Outils/GitHubGitHub/feedbeef/dji_ble_vuln
Sécurité des Systèmes EmbarquésSécurité BluetoothSécurité IoTGénération de PayloadsAnalyse des VulnérabilitésExploitationSécurité Sans FilCommandement et ContrôleSécurité Matériel et IoT
GitHubfeedbeef/dji_ble_vuln

Dji_ble_vuln

Injection de commande DUML sur drone DJI via Bluetooth — Preuve de concept pour CVE-2026-78306

12il y a 1 jourPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

CVE-2026-78306 — Injection de commande DUML sur drone DJI via Bluetooth POC

CVE-2026-78306

Enregistrement CVE : https://www.cve.org/CVERecord?id=CVE-2026-78306

NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-78306

image image

Description

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 :

  • Get SSID
  • Get PSK
  • Get MAC address

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.

Produits affectés


DÉMO

https://github.com/user-attachments/assets/57f51df2-5160-404c-9fd3-2a3a8b700008

Installation

1. Installer le POC

root@kitploit:~
# 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

2. Allumer le drone

3. Exécuter le POC

root@kitploit:~
python3 ble_console.py

4. Après le scan, sélectionner le SSID du drone

Référence des commandes

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.

Commandes de lecture

Commandes d'écriture de configuration

Ces opérations sont classées comme danger dans le POC et nécessitent donc une confirmation explicite avant d'être envoyées.

Commandes de contrôle radio

Commandes de réinitialisation

CommandeCe qu'elle fait
Factory Reset WIFIRestaure la configuration Wi-Fi à son état par défaut.
Factory Restore ParamsRestaure 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.

Commandes système

Commandes de paramètres

CommandeCe qu'elle fait
Change a parameterModifie un paramètre de configuration du drone à l'aide de son hash de nom 32 bits.
Reset a parameterRéinitialise un paramètre de configuration à sa valeur par défaut du firmware.

Le POC obtient les noms de paramètres depuis flyc_parameters.txt et fournit une sélection interactive des paramètres. Pour ajouter un paramètre connu que vous souhaitez modifier ou réinitialiser, ajoutez son nom à flyc_parameters.txt. Le paramètre sera alors disponible pour sélection au démarrage du POC.

Écran de confirmation

Les commandes classées comme danger nécessitent une confirmation explicite avant transmission.

L'écran de confirmation affiche des informations telles que :

root@kitploit:~
──────────────────────────────────────────────────────────────────────
  !!!  DANGEROUS COMMAND  !!!
──────────────────────────────────────────────────────────────────────
 COMMAND    device_reset L1 config
 ROUTE      00/de -> ve_air:1
 PAYLOAD    11 01 00 00 00 00
 DOES       system / FC / gimbal / camera / wifi / sdr config reset
 WARNING    The FC configuration reset can restart the motors.
──────────────────────────────────────────────────────────────────────
 Type YES to send:

Paramètres

La fonction Change a parameter donne accès aux paramètres de configuration connus listés dans flyc_parameters.txt.

Reset a parameter utilise reset_cfg_item pour restaurer le paramètre sélectionné à sa valeur par défaut du firmware.

Pour une liste complète des paramètres extraits et plus de détails, consultez la page wiki FLYC Parameters.


Macros

Le POC fournit également plusieurs macros prédéfinies :

MacroDescription
Restart WifiArrête et démarre le Wi-Fi (0x42 suivi de 0x41).
SET NEW PSK + Restart wifiModifie la PSK puis redémarre le Wi-Fi.
Probe read commandsEnvoie les commandes de lecture enregistrées et indique quelles commandes répondent.

Les macros sont définies séparément des entrées de commandes individuelles.


Fichiers


⚠️ Avertissement

⚠️ ATTENTION : Cette preuve de concept est destinée strictement à des fins éducatives, de recherche en sécurité et de tests d'intrusion autorisés.

Ce POC démontre des problèmes de sécurité dans l'interface de gestion des commandes Bluetooth/DUML de DJI. Certaines commandes peuvent modifier la configuration de l'appareil, désactiver les interfaces radio, interrompre la connectivité, redémarrer ou éteindre l'aéronef, réinitialiser la configuration ou supprimer des données stockées.

⚠️ N'utilisez PAS ce POC contre tout aéronef, appareil, réseau ou système que vous ne possédez pas ou pour lequel vous ne disposez pas d'une autorisation explicite de test.

Certaines commandes peuvent entraîner une perte de données, des modifications de configuration, une perte de connectivité, une perturbation de l'appareil ou d'autres conséquences imprévues. Les tests ne doivent être effectués que dans un environnement contrôlé où l'aéronef ainsi que les personnes et biens environnants ne sont pas exposés à un risque.

Les auteurs ne sont pas responsables des dommages, pertes de données, interruptions de service, opérations de l'aéronef ou autres conséquences résultant de l'utilisation ou de l'utilisation abusive de ce POC.

⚠️ En utilisant ce POC, vous acceptez la responsabilité de vous assurer que vos tests sont autorisés et conformes à toutes les lois, réglementations et exigences de divulgation responsable applicables.

Télécharger l’outil
ProduitVersion affectée
DJI Neo0 – 01.00.0400
DJI Neo 20 – 01.00.0500
DJI Flip0 – 01.00.1200
DJI Air 30 – 01.00.1600
DJI Air 3S0 – 01.00.1400
DJI Avata 20 – 01.00.0400
DJI Avata 3600 – 01.00.0300
DJI Mavic 30 – 01.00.1400
DJI Mavic 3 Classic0 – 01.00.0800
DJI Mavic 3 Pro0 – 01.01.0700
DJI Mavic 4 Pro0 – 01.00.0500
DJI Mini 20 – 01.07.0200
DJI Mini 30 – 01.00.0500
DJI Mini 3 Pro0 – 01.00.0900
DJI Mini 4 Pro0 – 01.00.1100
DJI Mini 5 Pro0 – 01.00.0600
CommandeCe qu'elle fait
GET SSIDRécupère le SSID Wi-Fi configuré.
GET PSKRécupère la clé pré-partagée WPA2 du Wi-Fi.
GET MACRécupère l'adresse MAC du point d'accès Wi-Fi.
GET Country CodeRécupère le code pays réglementaire à deux lettres.
GET ChannelRécupère le canal Wi-Fi actuellement actif.
GET BandRécupère la sélection de bande 2,4/5 GHz configurée.
GET RSSIInterroge le gestionnaire RSSI ; cette version du firmware contient une implémentation stub.
GET WiFi/BT statusRécupère l'état des radios Wi-Fi et Bluetooth.
GET Device Info/ModelRécupère les informations sur l'appareil et le modèle.
GET VersionRécupère la version du démon.
GET Bluetooth NameRécupère le nom de l'appareil Bluetooth.
CommandeCe qu'elle fait
SET SSIDModifie le SSID Wi-Fi configuré.
SET PSKModifie le mot de passe Wi-Fi configuré.
SET MAC AddressModifie la configuration BSSID Wi-Fi à l'exécution.
SET Country CodeModifie le code pays réglementaire configuré.
SET Country Code ExtGère la configuration étendue du code pays.
SET ChannelModifie le canal Wi-Fi et provoque le redémarrage du point d'accès.
CommandeCe qu'elle fait
Start WIFIDémarre l'interface Wi-Fi et les services associés.
Stop WIFIArrête l'interface Wi-Fi.
Restart WIFI + BTRedémarre les sous-systèmes Wi-Fi et Bluetooth.
Start BluetoothDémarre le sous-système Bluetooth.
Stop BluetoothArrête le sous-système Bluetooth et met fin à la session en cours.
Sysmode power controlContrôle l'état d'alimentation Wi-Fi/Bluetooth.
CommandeCe qu'elle fait
ftpd_startDémarre le service dji_ftpd.
storage_export_enableActive la configuration d'export du stockage.
storage_export_disableDésactive la configuration d'export du stockage.
play_soundDéclenche un son de l'aéronef.
muteCoupe le son du haut-parleur de l'aéronef.
unmuteRéactive le son du haut-parleur de l'aéronef.
reboot_plainRedémarre l'aéronef.
reboot_poweroffÉteint l'aéronef.
reboot_powersavePlace l'aéronef en mode économie d'énergie.
device_reset L1 configRéinitialise les configurations du système, du contrôleur de vol, de la nacelle, de la caméra, du Wi-Fi et du SDR.
device_reset L2 +MEDIAEffectue la réinitialisation L1 et efface le stockage multimédia, y compris les photos et vidéos capturées par le drone.
device_reset L3 +logEffectue la réinitialisation L2 et efface en plus les journaux système.
FichierRôle
ble_console.pyPoint d'entrée principal, menu et exécution des commandes.
commands.jsonRegistre des commandes et descriptions des commandes.
ble_transport.pyScan GATT Bluetooth, connexion et gestion des réponses.
duml_protocol.pyConstruction des paquets DUML v1 et gestion du CRC.
duml_decoders.pyDécodage des réponses et gestion des codes de retour.
payload_builders.pyGénération interactive des charges utiles.
parameters.pyHachage et opérations sur les paramètres de configuration.
terminal.pyInterface terminal, invites et gestion de la sortie.
flyc_parameters.txtNoms des paramètres de configuration connus.
requirements.txtDépendances Python.