
Inyección de comandos DUML en drones DJI a través de Bluetooth — Prueba de concepto para CVE-2026-78306
Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78306
Los drones DJI exponen una interfaz Bluetooth utilizada para establecer una conexión con la interfaz Wi-Fi del dron e intercambiar credenciales Wi-Fi.
La interfaz Bluetooth verifica el UUID de confianza del dispositivo para tres comandos:
El resto de comandos no requieren la misma verificación de autenticación. Como resultado, un atacante remoto dentro del alcance Bluetooth podría enviar comandos DUML no autorizados al dron.
Dependiendo del comando, un atacante podría modificar la configuración del dron, incluyendo cambiar la contraseña Wi-Fi y potencialmente obtener acceso a la red interna del dron; habilitar o deshabilitar interfaces de radio; reiniciar o apagar la aeronave; restablecer la configuración, lo que borra todos los vídeos e imágenes capturados por el dron; y realizar otras acciones.
El POC proporciona un registro de comandos que permite probar los comandos disponibles sin modificar el código fuente de Python. El registro de comandos, incluyendo el comando, el receptor, los requisitos de autenticación y la descripción de cada comando, se define en commands.json.
| Producto | Versión afectada |
|---|---|
| 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
Los siguientes comandos están registrados en commands.json. El POC separa los comandos en operaciones de lectura, configuración, control de radio, restablecimiento, sistema y parámetros.
| Comando | Qué hace |
|---|---|
| GET SSID | Recupera el SSID Wi-Fi configurado. |
| GET PSK | Recupera la clave precompartida WPA2 del Wi-Fi. |
| GET MAC | Recupera la dirección MAC del AP Wi-Fi. |
| GET Country Code | Recupera el código de país regulatorio de dos letras. |
| GET Channel | Recupera el canal Wi-Fi actualmente activo. |
| GET Band | Recupera la selección de banda 2.4/5 GHz configurada. |
| GET RSSI | Consulta el manejador RSSI; esta compilación de firmware contiene una implementación stub. |
| GET WiFi/BT status | Recupera el estado de las radios Wi-Fi y Bluetooth. |
| GET Device Info/Model | Recupera la información del dispositivo y del modelo. |
| GET Version | Recupera la versión del daemon. |
| GET Bluetooth Name | Recupera el nombre del dispositivo Bluetooth. |
| Comando | Qué hace |
|---|---|
| SET SSID | Cambia el SSID Wi-Fi configurado. |
| SET PSK | Cambia la contraseña Wi-Fi configurada. |
| SET MAC Address | Cambia la configuración del BSSID Wi-Fi en tiempo de ejecución. |
| SET Country Code | Cambia el código de país regulatorio configurado. |
| SET Country Code Ext | Gestiona la configuración extendida del código de país. |
| SET Channel | Cambia el canal Wi-Fi y provoca el reinicio del AP. |
Estas operaciones se clasifican como danger en el POC y, por lo tanto, requieren confirmación explícita antes de ser enviadas.
| Comando | Qué hace |
|---|---|
| Start WIFI | Inicia la interfaz Wi-Fi y los servicios asociados. |
| Stop WIFI | Detiene la interfaz Wi-Fi. |
| Restart WIFI + BT | Reinicia los subsistemas Wi-Fi y Bluetooth. |
| Start Bluetooth | Inicia el subsistema Bluetooth. |
| Stop Bluetooth | Detiene el subsistema Bluetooth y termina la sesión actual. |
| Sysmode power control | Controla el estado de energía de Wi-Fi/Bluetooth. |
| Comando | Qué hace |
|---|---|
| Factory Reset WIFI | Restaura la configuración Wi-Fi a su estado predeterminado. |
| Factory Restore Params | Restaura la tabla de parámetros de configuración de red a los valores de fábrica. |
El POC marca ambas operaciones como peligrosas porque modifican la configuración persistente.