
Эксплойт proof-of-concept, использующий инъекцию команд DUML через Bluetooth дронов DJI, отправляющий неаутентифицированные команды для чтения учётных данных, изменения конфигурации Wi-Fi и управления системами летательного аппарата.
Запись CVE: https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78306
Дроны DJI предоставляют Bluetooth-интерфейс, используемый для установления соединения с Wi-Fi-интерфейсом дрона и обмена учётными данными Wi-Fi.
Bluetooth-интерфейс проверяет доверенный UUID устройства для трёх команд:
Для остальных команд такая же проверка аутентификации не требуется. В результате удалённый злоумышленник в пределах радиуса действия Bluetooth может отправлять дрону несанкционированные команды DUML.
В зависимости от команды злоумышленник может изменить конфигурацию дрона, включая смену пароля Wi-Fi и потенциальное получение доступа к внутренней сети дрона; включение или отключение радиинтерфейсов; перезагрузку или выключение аппарата; сброс конфигурации, который стирает все видео и фотографии, снятые дроном; а также выполнять другие действия.
Примечание: Эксплойт в настоящее время работает в полёте при управлении дроном по Wi-Fi, а на земле/при посадке дрона — при управлении дроном по радио.
| Продукт | Затронутая версия |
|---|---|
| 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
Следующие команды зарегистрированы в commands.json и генерируются непосредственно из него. Команды, помеченные как danger, требуют явного подтверждения перед отправкой.
| Команда | Что она делает |
|---|---|
| GET WiFi SSID [AUTH] | Получает настроенный SSID Wi-Fi. Требует доверенный UUID. |
| GET WiFi Password [AUTH] | Получает предварительный ключ WPA2 для Wi-Fi. Требует доверенный UUID. |
| GET WiFi MAC address [AUTH] | Получает MAC-адрес точки доступа Wi-Fi. Требует доверенный UUID. |
| GET Country Code | Получает двухбуквенный код страны регулирования. |
| GET Channel | Получает текущий активный канал Wi-Fi. |
| GET Band | Получает настроенный выбор диапазона 2,4/5 ГГц. |
| GET RSSI [stub] | Запрашивает обработчик RSSI; в этой сборке возвращается заглушка. |
| GET WiFi/BT status | Получает состояние радиомодулей Wi-Fi и Bluetooth. |
| GET Version | Получает строку версии прошивки. |
| Команда | Что она делает |
|---|---|
| SET NEW WiFi SSID | Изменяет настроенный SSID Wi-Fi. |
| SET NEW WiFi Password | Изменяет настроенный пароль Wi-Fi. |
| SET NEW WiFi MAC Address | Изменяет конфигурацию BSSID Wi-Fi во время выполнения. |
| SET NEW Country Code | Изменяет настроенный код страны регулирования. |
| SET NEW Country Code Ext | Обрабатывает расширенную конфигурацию кода страны. |
| SET NEW Channel | Изменяет канал Wi-Fi и вызывает перезапуск точки доступа. |
Эти операции классифицируются в POC как danger и поэтому требуют явного подтверждения перед отправкой.
| Команда | Что она делает |
|---|---|
| Start WiFi | Запускает интерфейс Wi-Fi. |
| Stop WiFi | Останавливает интерфейс Wi-Fi. |
| Restart WiFi + Bluetooth | Перезапускает радиомодули Wi-Fi и Bluetooth. |
| Start Bluetooth | Запускает радиомодуль Bluetooth. |
| Stop Bluetooth | Останавливает радиомодуль Bluetooth и завершает текущий сеанс. |
| Sysmode power control | Управляет состоянием питания радиомодулей Wi-Fi/Bluetooth. |
| Команда | Что она делает |
|---|---|
| Factory Reset WIFI | Восстанавливает конфигурацию Wi-Fi в состояние по умолчанию. |
| Factory Restore Params | Восстанавливает сетевую конфигурацию до заводских настроек. |
POC помечает обе операции как опасные, поскольку они изменяют постоянную конфигурацию.
| Команда | Что она делает |
|---|---|
| Start The Drone FTP server | Запускает FTP-сервис аппарата. |
| Enable Storage Export | Включает экспорт хранилища. |
| Disable Storage Export | Отключает экспорт хранилища. |
| reboot The Drone | Перезагружает аппарат. |
| poweroff The Drone | Выключает аппарат (для повторного включения требуется физический доступ). |
| powersave mode The Drone | Переводит аппарат в режим энергосбережения. |
| Команда | Что она делает |
|---|---|
| Start Remote Controller DoS | Первый шаг последовательности отказа в обслуживании пульта дистанционного управления; переводит аппарат в состояние, необходимое для шага отключения. |
| Stop Remote Controller DoS | Завершает последовательность: аппарат перестаёт обслуживать канал связи с пультом, из-за чего пульт теряет аппарат. Сначала выполните первый шаг. |
| Remote Controller Recover | Пытается вернуть аппарат в нормальный режим работы. |
| Команда | Что она делает |
|---|---|
| Change a parameter | Изменяет параметр конфигурации дрона, используя его 32-битный хеш имени. |
| Reset a parameter | Сбрасывает параметр конфигурации к значению по умолчанию из прошивки. |
POC получает имена параметров из flyc_parameters.txt и предоставляет интерактивный выбор параметров. Чтобы добавить известный параметр, который вы хотите изменить или сбросить, добавьте его имя в flyc_parameters.txt. После этого параметр станет доступен для выбора при запуске POC.
Команды, классифицированные как danger, требуют явного подтверждения перед отправкой.
Экран подтверждения отображает такую информацию, как:
──────────────────────────────────────────────────────────────────────
!!! 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:
Функция Change a parameter предоставляет доступ к известным параметрам конфигурации, перечисленным в flyc_parameters.txt.
Reset a parameter использует reset_cfg_item для восстановления выбранного параметра до значения по умолчанию из прошивки.
Полный список извлечённых параметров и дополнительные сведения см. на странице вики FLYC Parameters.