# CVE-2026-77812: Cleartext Exposure of DJI Drone Wi-Fi Credentials via BLE

> Attackers can passively sniff BLE traffic to steal cleartext Wi-Fi credentials and session UUIDs, allowing unauthorized network access and traffic decryption.

- **Severity:** Critical 9.4 (`CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** Not needed
- **Fix available:** No
- **Published:** 21 Aug 2026
- **Updated:** 12 Oct 2026
- **Also known as:** GHSA-gh7r-589j-33x7

## What is CVE-2026-77812?

CVE-2026-77812 is a critical vulnerability in DJI Air 3, published on 21 Aug 2026. It can only be exploited from the same machine or local network, with no action from the victim.

### Official 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.

Weakness: CWE-311 (Missing Encryption of Sensitive Data)

## Which versions are affected by CVE-2026-77812?


## How do I fix CVE-2026-77812?

No fix has been published for CVE-2026-77812 yet. Limit exposure of the affected software until one is available.

## Is CVE-2026-77812 being exploited?

There is no known exploitation of CVE-2026-77812 in the wild and no public exploit code.

Public exploit code:

- DJI Drone Cleartext Bluetooth Transmission of Wi-Fi PSK and Session UUID — Proof of Concept for CVE-2026-77812. (github_poc): https://github.com/Wh02m1/CVE-2026-77812

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-77812 and fix it if it is affected.

What it is: CVE-2026-77812 is a critical vulnerability in DJI Air 3, published on 21 Aug 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-77812 in the wild and no public exploit code.

Affected product: DJI Air 3. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-77812/ (Markdown: https://insights.sbomify.com/CVE-2026-77812/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-77812
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-77812
- OSV: https://osv.dev/vulnerability/CVE-2026-77812

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-77812/
Summaries are generated and may contain mistakes; the official description above is the record.
