Full Report
Someone tries to remote control his own DJI Romo vacuum, and ends up controlling 7,000 of them from all around the world. The IoT is horribly insecure, but we already knew that.
Analysis Summary
# Vulnerability: DJI Romo Vacuum Global MQTT Command Injection
## CVE Details
- **CVE ID**: Not explicitly assigned in the source (Note: IoT vulnerabilities of this nature often receive CVEs following coordinated disclosure).
- **CVSS Score**: Estimated 9.8 (Critical)
- **CWE**: CWE-284: Improper Access Control / CWE-419: Unprotected Primary Channel (MQTT)
## Affected Systems
- **Products**: DJI Romo Robot Vacuums
- **Versions**: All versions prior to the March 2026 security update.
- **Configurations**: Devices connected to the DJI cloud infrastructure via the mobile application.
## Vulnerability Description
The vulnerability stems from a fundamental flaw in the implementation of the MQTT (Message Queuing Telemetry Transport) protocol used for remote orchestration. The vendor utilized a shared or poorly partitioned MQTT broker architecture without sufficient authentication or topic-level authorization.
An attacker could connect to the regional/global broker and, by altering the client ID or subscribing to wildcard topics (e.g., `#`), intercept telemetry and broadcast commands to any registered vacuum on the network. This allows for unauthorized remote control and access to onboard sensors.
## Exploitation
- **Status**: PoC available / Validated by security researchers.
- **Complexity**: Low (Requires standard MQTT client tools).
- **Attack Vector**: Network (Remote via Internet).
## Impact
- **Confidentiality**: High (Access to camera feeds, room maps, and microphone data).
- **Integrity**: High (Ability to send arbitrary movement commands and modify device firmware/settings).
- **Availability**: High (Ability to disable the units or deplete battery).
## Remediation
### Patches
- DJI has reportedly addressed the backend broker configuration. Users should ensure their DJI Romo app is updated to the latest version and that the vacuum's firmware is updated via the "Auto-Update" feature.
### Workarounds
- **Isolate the Device**: Place the robot vacuum on a dedicated IoT VLAN with restricted internet access.
- **Physical Mitigation**: Use physical privacy shutters on the camera lens if the device is not in use.
- **Disable Cloud Features**: If possible, operate the device in an "offline" or "local-only" mode, though this usually disables remote app functionality.
## Detection
- **Indicators of Compromise**:
- Unusual vacuum activity (device moving when not scheduled).
- Unexplained data spikes in outbound traffic to DJI-controlled IP ranges.
- Camera/Microphone "in-use" LEDs activating unexpectedly.
- **Detection Methods**: Monitor network logs for persistent MQTT connections to unusual third-party brokers or high volumes of publish/subscribe traffic on non-standard ports.
## References
- Schneier on Security: hxxps[://]www[.]schneier[.]com/blog/archives/2026/03/hacking-a-robot-vacuum[.]html
- The Verge report: hxxps[://]www[.]theverge[.]com/tech/879088/dji-romo-hack-vulnerability-remote-control-camera-access-mqtt