Skip to main content

Espressif ESP-IDF CVE-2025-68474

MEDIUM
Out-of-bounds Write (CWE-787)
2025-12-27 security-advisories@github.com
6.1
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Within Bluetooth range of AVRCP device
  2. Delivery
    Induce vendor-dependent AVRCP command with large vendor_len
  3. Exploit
    Undersized buffer allocated via 20-byte AVRC_MIN_CMD_LEN
  4. Execution
    Vendor data copied past buffer end
  5. Impact
    Heap memory corruption and crash/DoS

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the target ESP-IDF device to use the BlueDroid Bluetooth Classic stack with the AVRCP profile active, and to process/construct a vendor-dependent AVRCP command (avrc_vendor_msg) with a vendor_len approaching the buffer limit. The attacker must be within Bluetooth (adjacent) range, and the CVSS AT:P reflects the specific condition that vendor_len must be large enough to exceed the 29-byte real header footprint. Limiting factors: impact is bounded to adjacent radio proximity (not internet-remote), requires AVRCP to be enabled/in use (not all ESP32 firmware uses Bluetooth or AVRCP), and the severity is worst on builds with assertions disabled; devices with no Bluetooth or without the AVRCP profile are not affected.

Impact

This is a moderate-severity memory-corruption flaw (CWE-787 out-of-bounds write) in the BlueDroid AVRCP stack of ESP-IDF, rated CVSS 4.0 6.1 by the GitHub advisory (AV:A/AC:L/AT:P/PR:N/UI:N, impacts VC:L/VI:L/VA:H). The vendor-supplied vector indicates an adjacent (Bluetooth-range) attack with no privileges or user interaction, but AT:P signals a non-default attack requirement - consistent with the root cause: avrc_vendor_msg() validated allocations against AVRC_MIN_CMD_LEN (20 bytes) when 29 bytes of fixed header are actually written before the vendor payload, so a large vendor_len can overflow the buffer. No EPSS score, KEV listing, or POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the realistic risk is primarily availability/crash (VA:H) rather than confirmed code execution, which the advisory conservatively scores as only low confidentiality/integrity impact. The signals are internally consistent (no KEV-vs-EPSS conflict), but one caveat: avrc_vendor_msg() constructs an outgoing AVRCP command and vendor_len is set by the calling code/application, so whether an over-the-air adjacent attacker can directly control vendor_len depends on the device's AVRCP usage - the AV:A rating should be verified against the actual call path for a given product. Note the description states the overflow can be larger when assertions are disabled (typical of production/NDEBUG builds), which raises real-world impact versus debug builds.

Exploit ScenarioDerived

An attacker within Bluetooth range of an ESP32-based device that uses the BlueDroid AVRCP profile triggers construction of a vendor-dependent AVRCP command with a vendor_len close to the buffer limit; because allocation was sized using the 20-byte AVRC_MIN_CMD_LEN while 29 bytes of header are written first, the vendor-data copy writes past the allocated buffer. This corrupts adjacent heap memory, most reliably causing a crash/denial of service, with the overflow larger on production builds where assertions are disabled. No public proof-of-concept was provided in the intelligence sources.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 05, 2026

An out-of-bounds write in the BlueDroid AVRCP implementation of Espressif's ESP-IDF (avrc_vendor_msg) allows an attacker within Bluetooth Classic radio range to corrupt memory on affected ESP32-class devices, potentially causing crashes, undefined behavior, or controlled memory modification. The flaw affects ESP-IDF 5.5.1, 5.4.3, 5.3.4, 5.2.6, 5.1.6 and earlier, but only firmware that actually uses the BlueDroid Bluetooth Classic host stack with the AVRCP profile active and that constructs or passes through vendor-dependent AVRCP commands with a large vendor_len; the CVE carries a CVSS 4.0 base score of 6.1 (AV:A/AC:L/AT:P/PR:N/UI:N) from the GitHub advisory, and an independent mapping to CVSS 3.1 (AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H) rates it moderate rather than critical because exploitation is proximity-bound and profile-dependent. No public exploit code has been identified at time of analysis, and vendor fixes are available through upstream commits referenced in GitHub advisory GHSA-43gh-7r4f-qp57. Note that the vulnerability's impact is worst on builds where assertions are disabled, since the original length check was implemented as an assert; mitigation is an update, not a configuration change, for devices that require AVRCP.

RemediationAI

Apply the vendor fixes published with GitHub security advisory GHSA-43gh-7r4f-qp57 and rebuild firmware from an ESP-IDF release that includes the six upstream commits (0b0b59f2e19cb99dfa1b28c284d1c5c1d276a132, 565fa98d0cfd58102204c1cb636747e17ee59845, 8262ee807d5cd425f66304f703eeb3382fb888c0, a6c1bc5e3e91ad1cb964ce2c178ee40a5d10a4a0, aa0e3d75db995b7137b55349fc92ee684b47092d and b9ba1e29b65536ab4b670ac099585d09adce0376); the patch refactors avrc_vendor_msg() to use AVRC_MIN_VENDOR_CMD_LEN (BT_HDR_SIZE + AVCT_MSG_OFFSET + AVRC_VENDOR_HDR_SIZE) and replaces the assert-based size checks with enforced runtime bounds checks plus a NULL guard. Note that the supplied data identifies the fix at the commit level rather than by a tagged release number, so validate that the specific ESP-IDF branch you ship actually contains the commit before declaring remediation complete. If updating immediately is not possible, the most effective compensating control is to disable the Bluetooth Classic host stack or the AVRCP profile on firmware that does not need it, accepting the functional loss of media/remote-control features; where AVRCP is required, treat the risk as proximity-bound by limiting physical and radio access to the device (shielding, pairing policy, operational placement), which reduces but does not eliminate exposure since the CVSS vector is AV:A/PR:N. Do not rely on assertions being enabled as a mitigation: with assertions active the failure typically manifests as an abort rather than a controlled overflow, and release builds commonly compile them out, which is precisely the configuration in which the description notes the overflow can be larger.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ESP-IDF is Espressif's IoT development framework for ESP32 family SoCs, and its Bluetooth Classic support is provided by the BlueDroid host stack (an Android-derived Bluetooth stack) under components/bt/host/bluedroid. The affected routine is avrc_vendor_msg() in stack/avrc/avrc_opt.c, which allocates a command buffer (AVRC_META_CMD_BUF_SIZE or AVRC_CMD_BUF_SIZE) and then writes a fixed AVRCP vendor-dependent header followed by copying p_msg->p_vendor_data. The root cause, classified CWE-787 (out-of-bounds write), is that the size sanity check used AVRC_MIN_CMD_LEN (20 bytes) as the fixed-header footprint, but the bytes actually written before the vendor payload - the BT_HDR, AVCT_MSG_OFFSET, the three ctype/subunit_type/op_vendor bytes, and the three company_id bytes - total 29 bytes. Because the check under-counted the pre-payload overhead by roughly nine bytes, a vendor_len close to the buffer limit passes validation while the subsequent copy of vendor data writes past the end of the osi_malloc'd allocation, leading to heap corruption, crashes, or other undefined behavior. The upstream diff confirms the semantic fix: it introduces AVRC_MIN_VENDOR_CMD_LEN defined as BT_HDR_SIZE + AVCT_MSG_OFFSET + AVRC_VENDOR_HDR_SIZE and converts the previous assert()-only guards into real runtime conditions (plus a NULL check on p_msg), so the bounds check now reflects the true header size and is enforced in all build configurations. The AVRCP (Audio/Video Remote Control Profile) context matters because the flaw is reachable only where the stack processes vendor-dependent control commands over Bluetooth Classic, and the CPE data pins the exact affected releases as espressif:esp-idf 5.5.1, 5.4.3, 5.3.4, 5.2.6 and 5.1.6.

Know when Bluetooth gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 6.1 MEDIUM
CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H/SC:L/SI:L/SA:L
vuln.today AI 6.4 MEDIUM

Adjacent Bluetooth range (AV:A) with no auth/UI, but a large vendor_len/AVRCP-config precondition makes it AC:H; impact is mainly availability (crash) with limited C/I.

3.1 AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H
4.0 AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Adjacent
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
High
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

DescriptionCVE.org

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 avrc_vendor_msg() function of the ESP-IDF BlueDroid AVRCP stack, the allocated buffer size was validated using AVRC_MIN_CMD_LEN (20 bytes). However, the actual fixed header data written before the vendor payload exceeds this value. This totals 29 bytes written before p_msg->p_vendor_data is copied. Using the old AVRC_MIN_CMD_LEN could allow an out-of-bounds write if vendor_len approaches the buffer limit. For commands where vendor_len is large, the original buffer allocation may be insufficient, causing writes beyond the allocated memory. This can lead to memory corruption, crashes, or other undefined behavior. The overflow could be larger when assertions are disabled.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
High
ESP-IDF/ESP32 is very widely deployed across IoT and embedded devices
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

Affected Products (CPE)CVE.org

cpe:2.3:a:espressif:esp-idf:5.1.6:*:*:*:*:*:*:*
cpe:2.3:a:espressif:esp-idf:5.2.6:*:*:*:*:*:*:*
cpe:2.3:a:espressif:esp-idf:5.3.4:*:*:*:*:*:*:*
cpe:2.3:a:espressif:esp-idf:5.4.3:*:*:*:*:*:*:*
cpe:2.3:a:espressif:esp-idf:5.5.1:*:*:*:*:*:*:*
CVE-2025-65824 HIGH POC
8.8 Dec 10

Unauthenticated Bluetooth Low Energy OTA firmware upgrade in the Meatmeet Pro WiFi & Bluetooth Meat Thermometer firmware

CVE-2025-32879 HIGH POC
8.8 Jun 20

CVE-2025-32879 is a security vulnerability (CVSS 8.8) that allows an attacker. Risk factors: public PoC available.

CVE-2025-10457 HIGH POC
8.1 Sep 19

Zephyr's Bluetooth Low Energy connection-response handler fails to verify that a connection request was actually initiat

CVE-2025-20672 CRITICAL
9.8 Jun 02

Heap OOB write in Android Bluetooth driver via incorrect bounds check.

CVE-2026-55330 CRITICAL
9.8 Oct 06

A use-after-free in the Android Bluetooth stack (bluetooth_ccc.cc, function BluetoothCccHandlerCallbackImpl) lets an att

CVE-2020-10135 MEDIUM POC
5.4 May 19

Legacy pairing and secure-connections pairing authentication in Bluetooth BR/EDR Core Specification v5.2 and earlier may

CVE-2026-19570 HIGH
8.8 Oct 09

Memory corruption in the Zephyr RTOS LE Audio Broadcast Sink (subsys/bluetooth/audio/bap_broadcast_sink.c) lets an attac

CVE-2026-90255 HIGH
8.8 Sep 17

A memory leak combined with a use-after-free in the Linux kernel's Bluetooth HCI connection-setup path can crash the ker

CVE-2026-90256 HIGH
8.8 Sep 17

A race condition in the Linux kernel's Bluetooth L2CAP subsystem allows a use-after-free of the hci_conn::l2cap_data poi

CVE-2026-8374 HIGH
8.5 Oct 09

Bluetooth authentication bypass in SwitchBot Door Lock Series allows an attacker within BLE range to manipulate the lock

CVE-2026-89583 HIGH
8.1 Sep 11

Out-of-bounds read in the Linux kernel Bluetooth subsystem's eir_get_service_data() leaks kernel heap memory into usersp

CVE-2026-90092 HIGH
8.0 Sep 17

Use-after-free in the Linux kernel Bluetooth L2CAP stack lets a Bluetooth-adjacent attacker corrupt kernel memory by rac

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy