Description
DJI drones transmit DUML (DJI Universal Markup Language) protocol messages over BLE (Bluetooth Low Energy) without encryption. When a client attempts to connect to the drone over Wi-Fi, or when the drone is switched to QuickTransfer mode, the DJI Fly application exchanges DUML messages with the drone over BLE, including the Wi-Fi credentials. An attacker within BLE range can passively sniff this traffic and recover the credentials in cleartext, including the drone's Wi-Fi PSK, SSID, and trusted identifier UUID. Obtaining these credentials allows the attacker to join the drone's internal Wi-Fi network, interact with network services exposed by the drone, and decrypt Wi-Fi traffic exchanged between the drone and the legitimate user. * An attacker within BLE range recovers the Wi-Fi SSID and PSK in cleartext, and can then join the drone's network * The same capture also exposes the session UUID identifier, which is the only thing the drone uses to tell a trusted client from an unknown one, so the attacker can replay it and skip the physical confirmation of new connected devices. * The credentials do not change between sessions unless the operator manually resets the Wi-Fi settings, so one capture stays valid indefinitely * The attack is fully passive, with nothing transmitted and no connection made, so neither the operator nor the drone has any indication the session was observed * A BLE sniffer and presence during one normal DJI Fly connection are needed Affected models are DJI Neo until 01.00.0400, DJI Neo 2 until 01.00.0500, DJI Flip until 01.00.1200, DJI Air 3 until 01.00.1600, DJI Air 3S until 01.00.1400, DJI Avata 2 until 01.00.0400, DJI Avata 360 until 01.00.0300, DJI Mavic 3 until 01.00.1400, DJI Mavic 3 Classic until 01.00.0800, DJI Mavic 3 Pro until 01.01.0700, DJI Mavic 4 Pro until 01.00.0500, DJI Mini 2 until 01.07.0200, DJI Mini 3 until 01.00.0500, DJI Mini 3 Pro until 01.00.0900, DJI Mini 4 Pro until 01.00.1100, and DJI Mini 5 Pro until 01.00.0600. Remediation requires a firmware update from the vendor. There is no user-side mitigation that fully addresses the vulnerability without upgrading.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
DJI Neo
Default version status: unaffected
0 to ≤ 01.00.0400affected
DJI Neo 2
Default version status: unaffected
0 to ≤ 01.00.0500affected
DJI DJI Flip
Default version status: unaffected
0 to ≤ 01.00.1200affected
DJI Air 3
Default version status: unaffected
0 to ≤ 01.00.1600affected
DJI Air 3S
Default version status: unaffected
0 to ≤ 01.00.1400affected
DJI Avata 2
Default version status: unaffected
0 to ≤ 01.00.0400affected
DJI Avata 360
Default version status: unaffected
0 to ≤ 01.00.0300affected
DJI Mavic 3
Default version status: unaffected
0 to ≤ 01.00.1400affected
DJI Mavic 3 Classic
Default version status: unaffected
0 to ≤ 01.00.0800affected
DJI Mavic 3 Pro
Default version status: unaffected
0 to ≤ 01.01.0700affected
DJI Mavic 4 Pro
Default version status: unaffected
0 to ≤ 01.00.0500affected
DJI Mini 2
Default version status: unaffected
0 to ≤ 01.07.0200affected
DJI Mini 3
Default version status: unaffected
0 to ≤ 01.00.0500affected
DJI Mini 3 Pro
Default version status: unaffected
0 to ≤ 01.00.0900affected
DJI Mini 4 Pro
Default version status: unaffected
0 to ≤ 01.00.1100affected
DJI Mini 5 Pro
Default version status: unaffected
0 to ≤ 01.00.0600affected