
Proof-of-concept che sfrutta l'iniezione di comandi DUML via Bluetooth sui droni DJI, inviando comandi non autenticati per leggere le credenziali, modificare la configurazione Wi-Fi e controllare i sistemi del velivolo.
Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78306
I droni DJI espongono un'interfaccia Bluetooth utilizzata per stabilire una connessione all'interfaccia Wi-Fi del drone e scambiare le credenziali Wi-Fi
L'interfaccia Bluetooth verifica l'UUID attendibile del dispositivo per tre comandi:
I comandi rimanenti non richiedono lo stesso controllo di autenticazione. Di conseguenza, un attaccante remoto nel raggio d'azione del Bluetooth potrebbe essere in grado di inviare comandi DUML non autorizzati al drone.
A seconda del comando, un attaccante potrebbe essere in grado di modificare la configurazione del drone, inclusa la modifica della password Wi-Fi e potenzialmente ottenere l'accesso alla rete interna del drone; abilitare o disabilitare le interfacce radio; riavviare o spegnere l'aeromobile; ripristinare la configurazione, il che cancella tutti i video e le foto catturate dal drone; ed eseguire altre azioni.
Nota: l'exploit attualmente funziona in volo quando si controlla il drone tramite Wi-Fi, e a terra/quando il drone è atterrato quando si controlla il drone via radio.
| Prodotto | Versione interessata |
|---|---|
| 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
I seguenti comandi sono registrati in commands.json e vengono generati direttamente da esso. I comandi contrassegnati come danger richiedono una conferma esplicita prima di essere inviati.
| Comando | Cosa fa |
|---|---|
| GET WiFi SSID [AUTH] | Recupera l'SSID Wi-Fi configurato. Richiede un UUID attendibile. |
| GET WiFi Password [AUTH] | Recupera la chiave pre-condivisa WPA2 del Wi-Fi. Richiede un UUID attendibile. |
| GET WiFi MAC address [AUTH] | Recupera l'indirizzo MAC dell'AP Wi-Fi. Richiede un UUID attendibile. |
| GET Country Code | Recupera il codice paese normativo di due lettere. |
| GET Channel | Recupera il canale Wi-Fi attualmente attivo. |
| GET Band | Recupera la selezione della banda 2.4/5 GHz configurata. |
| GET RSSI [stub] | Interroga il gestore RSSI; questa build restituisce un valore stub. |
| GET WiFi/BT status | Recupera lo stato delle radio Wi-Fi e Bluetooth. |
| GET Version | Recupera la stringa della versione del firmware. |
| Comando | Cosa fa |
|---|---|
| SET NEW WiFi SSID | Modifica l'SSID Wi-Fi configurato. |
| SET NEW WiFi Password | Modifica la password Wi-Fi configurata. |
| SET NEW WiFi MAC Address | Modifica la configurazione del BSSID Wi-Fi a runtime. |
| SET NEW Country Code | Modifica il codice paese normativo configurato. |
| SET NEW Country Code Ext | Gestisce la configurazione estesa del codice paese. |
| SET NEW Channel | Modifica il canale Wi-Fi e provoca il riavvio dell'AP. |
Queste operazioni sono classificate come danger nel POC e richiedono quindi una conferma esplicita prima di essere inviate.
| Comando | Cosa fa |
|---|---|
| Start WiFi | Avvia l'interfaccia Wi-Fi. |
| Stop WiFi | Arresta l'interfaccia Wi-Fi. |
| Restart WiFi + Bluetooth | Riavvia le radio Wi-Fi e Bluetooth. |
| Start Bluetooth | Avvia la radio Bluetooth. |
| Stop Bluetooth | Arresta la radio Bluetooth e termina la sessione corrente. |
| Sysmode power control | Controlla lo stato di alimentazione delle radio Wi-Fi/Bluetooth. |
| Comando | Cosa fa |
|---|---|
| Factory Reset WIFI | Ripristina la configurazione Wi-Fi allo stato predefinito. |
| Factory Restore Params | Ripristina la configurazione di rete ai valori di fabbrica. |
Il POC contrassegna entrambe le operazioni come pericolose perché modificano la configurazione persistente.
| Comando | Cosa fa |
|---|---|
| Start The Drone FTP server | Avvia il servizio FTP del velivolo. |
| Enable Storage Export | Abilita l'esportazione dello storage. |
| Disable Storage Export | Disabilita l'esportazione dello storage. |
| reboot The Drone | Riavvia il velivolo. |
| poweroff The Drone | Spegne il velivolo (è necessario l'accesso fisico per riaccenderlo). |
| powersave mode The Drone | Mette il velivolo in modalità risparmio energetico. |
| Comando | Cosa fa |
|---|---|
| Start Remote Controller DoS | Primo passo della sequenza di denial-of-service del radiocomando; porta il velivolo nello stato richiesto dal passo di disconnessione. |
| Stop Remote Controller DoS | Completa la sequenza: il velivolo smette di servire il collegamento con il radiocomando, quindi il radiocomando perde il velivolo. Esegui prima il primo passo. |
| Remote Controller Recover | Tenta di riportare il velivolo al funzionamento normale. |
| Comando | Cosa fa |
|---|---|
| Change a parameter | Modifica un parametro di configurazione del drone usando il suo hash del nome a 32 bit. |
| Reset a parameter | Ripristina un parametro di configurazione al valore predefinito del firmware. |
Il POC ottiene i nomi dei parametri da flyc_parameters.txt e fornisce una selezione interattiva dei parametri. Per aggiungere un parametro noto che desideri modificare o ripristinare, aggiungi il suo nome a flyc_parameters.txt. Il parametro sarà quindi disponibile per la selezione all'avvio del POC.
I comandi classificati come danger richiedono una conferma esplicita prima della trasmissione.
La schermata di conferma mostra informazioni quali:
──────────────────────────────────────────────────────────────────────
!!! DANGEROUS COMMAND !!!
──────────────────────────────────────────────────────────────────────
COMMAND Factory Reset WIFI
ROUTE 07/0f → 0x07
PAYLOAD (none)
DOES resets the Wi-Fi config and regenerates the PSK
WARNING Disconnects every device currently on the drone's Wi-Fi.
──────────────────────────────────────────────────────────────────────
Type YES to send:
La funzione Change a parameter fornisce accesso ai parametri di configurazione noti elencati in flyc_parameters.txt.