CVE 记录: https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78306
DJI 无人机暴露了一个蓝牙接口,用于建立与无人机 Wi-Fi 接口的连接并交换 Wi-Fi 凭据
该蓝牙接口会针对三个命令检查设备的受信任 UUID:
其余命令不需要相同的身份验证检查。因此,处于蓝牙范围内的远程攻击者可能能够向无人机发送未经授权的 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] | 获取已配置的 Wi-Fi SSID。需要可信 UUID。 |
| GET WiFi Password [AUTH] | 获取 Wi-Fi WPA2 预共享密钥。需要可信 UUID。 |
| GET WiFi MAC address [AUTH] | 获取 Wi-Fi AP MAC 地址。需要可信 UUID。 |
| GET Country Code | 获取两位字母的监管国家代码。 |
| GET Channel | 获取当前活动的 Wi-Fi 信道。 |
| GET Band | 获取已配置的 2.4/5 GHz 频段选择。 |
| GET RSSI [stub] | 查询 RSSI 处理程序;此构建返回一个占位值。 |
| GET WiFi/BT status | 获取 Wi-Fi 和蓝牙无线电状态。 |
| GET Version | 获取固件版本字符串。 |
| 命令 | 功能说明 |
|---|---|
| SET NEW WiFi SSID | 更改已配置的 Wi-Fi SSID。 |
| SET NEW WiFi Password | 更改已配置的 Wi-Fi 密码。 |
| SET NEW WiFi MAC Address | 更改运行时 Wi-Fi BSSID 配置。 |
| SET NEW Country Code | 更改已配置的监管国家代码。 |
| SET NEW Country Code Ext | 处理扩展国家代码配置。 |
| SET NEW Channel | 更改 Wi-Fi 信道并导致 AP 重启。 |
这些操作在 POC 中被归类为 danger,因此发送前需要显式确认。
| 命令 | 功能说明 |
|---|---|
| Start WiFi | 启动 Wi-Fi 接口。 |
| Stop WiFi | 停止 Wi-Fi 接口。 |
| Restart WiFi + Bluetooth | 重启 Wi-Fi 和蓝牙无线电。 |
| Start Bluetooth | 启动蓝牙无线电。 |
| Stop Bluetooth | 停止蓝牙无线电并终止当前会话。 |
| Sysmode power control | 控制 Wi-Fi/蓝牙无线电电源状态。 |
| 命令 | 功能说明 |
|---|---|
| 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 wiki 页面。
该 POC 还提供了若干预定义宏:
| 命令 | 描述 |
|---|---|
| Restart Wifi | 停止并启动 Wi-Fi(0x42 后跟 0x41)。 |
| SET NEW PSK + Restart wifi | 更改 PSK,然后重启 Wi-Fi。 |
| Probe read commands | 发送已注册的读取命令,并报告哪些命令有响应。 |
这些宏与各个命令条目分开定义。
⚠️ 警告:本概念验证严格用于教育、安全研究和经授权的渗透测试目的。
本 POC 演示了 DJI 蓝牙/DUML 命令处理接口中的安全问题。某些命令可能会修改设备配置、禁用无线电接口、中断连接、重启或关闭飞行器、重置配置或删除存储的数据。
⚠️ 请勿对任何您不拥有或未获得明确测试授权的飞行器、设备、网络或系统使用本 POC。
某些命令可能导致数据丢失、配置更改、连接中断、设备中断或其他意外后果。测试应仅在受控环境中进行,确保飞行器及周围人员和财产不面临风险。
作者不对因使用或滥用本 POC 而导致的任何损害、数据丢失、服务中断、飞行器运行或其他后果承担责任。
⚠️ 使用本 POC 即表示您接受确保测试获得授权并遵守所有适用法律、法规和负责任披露要求的责任。