Skip to main content

Zephyr Bluetooth AVRCP EUVDEUVD-2026-115821

| CVE-2026-85033 MEDIUM
Incomplete Cleanup (CWE-459)
2026-11-03 zephyr
4.6
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Pair and establish encrypted BR/EDR link
  2. Delivery
    Send multi-fragment vendor-dependent AVRCP command
  3. Exploit
    Receive START fragment, drop ACL link mid-response
  4. Execution
    Leave stale TX_ONGOING buffer on reused Target object
  5. Impact
    Persistent AVRCP Target stall and cross-session response leak

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incomplete cleanup
Exploitation Conditions

The target must run Zephyr 4.4.0-4.4.x (fixed in 4.5.0) built with the Bluetooth Classic AVRCP Target role enabled. The attacker must be a peer already paired with the device and within Bluetooth radio range, because the AVCTP control channel requires an encrypted BR/EDR link (BT_SECURITY_L2). The trigger is concrete and stated in the source: send a vendor-dependent command whose response exceeds one AVRCP fragment (e.g. GetElementAttributes or GetCapabilities), allow the START fragment to be emitted, then drop the ACL link instead of sending REQUEST_CONTINUING_RESPONSE. No user interaction is needed. Limiting factors: the mandatory prior pairing and encryption, physical adjacency, and the requirement that the device actually implements the AVRCP Target role with fragmented vendor-dependent responses - devices without BR/EDR AVRCP Target are unaffected.

Impact

This is a genuine-but-moderate issue, correctly rated below critical. The CVSS 3.1 vector (AV:A/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L, 4.6 Medium) is consistent with the mechanism described: exploitation needs adjacency (Bluetooth radio range) and an already-paired, encrypted BR/EDR link (the AVCTP control channel enforces BT_SECURITY_L2), so PR:L reflects that the attacker must be a previously-paired peer, not an anonymous remote actor. No EPSS score and no SSVC exploitation/automatable/technical-impact values were supplied, and there is no CISA KEV listing and no public exploit reference - only the vendor patch commit and GHSA advisory. The vuln.today priority is 'this_month' (not act_now/emergency), which aligns with the picture: a confirmed, deterministically-triggerable denial of the AVRCP Target function (persistent until reboot, no timeout clears it) plus a slow buffer leak from a shallow pool, and a secondary confidentiality concern where a later peer sending REQUEST_CONTINUING_RESPONSE receives the un-sent remainder of the previous peer's response. The primary limiting factors keep real-world risk contained: the pairing/encryption requirement, adjacency, and the need for the device to actually build and use the BR/EDR AVRCP Target role (a feature only introduced in 4.4.0). No signals conflict here; rather, several key risk signals (EPSS, SSVC, KEV, POC) are simply absent, so prioritization rests on the confirmed vendor patch and the 'this_month' label rather than on evidence of active or probable exploitation.

Exploit ScenarioDerived

A peer already paired with a Zephyr-based device (e.g. a phone paired to an embedded audio/IoT product) acting as an AVRCP Controller sends a vendor-dependent command whose response spans more than one AVRCP fragment, such as GetElementAttributes or GetCapabilities, lets the Target emit the START fragment, then drops the ACL link instead of sending REQUEST_CONTINUING_RESPONSE. This leaves a buffer stuck on the pending list with TX_ONGOING set; because Target objects are static and reused by connection index, every subsequent connection on that index can never send vendor-dependent responses until reboot, and a new peer can even receive the leaked remainder of the prior peer's response. No public exploit identified at time of analysis; the attack is described by the vendor as deterministically triggerable.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

Zephyr 4.4.0 through 4.4.x (fixed in 4.5.0) drops a Bluetooth Classic AVRCP Target connection without cancelling its vendor-dependent response transmit work or releasing the response buffers still parked on the pending list, so a partly transmitted fragmented response is left behind with the TX_ONGOING flag set. Because the Target objects are static and reused by connection index, the next peer landing on that index inherits a permanently stalled TX machine: every vendor-dependent response queues behind the stale head and never leaves the device, one buffer leaks per cycle from a shallow pool, and a new peer that issues REQUEST_CONTINUING_RESPONSE can be sent the un-transmitted remainder of the previous peer's response. The attack is deterministic but requires an already-paired peer within radio range because the AVCTP control channel mandates an encrypted BR/EDR link; no user interaction is needed, the severity is moderate (CVSS 4.6), and no public exploit code was identified at time of analysis.

RemediationAI

Vendor-released patch: Zephyr 4.5.0. Upgrade to 4.5.0 or later, or cherry-pick commit 47728746bb52863607f06072c13a0a524ad6b654 (main PR #116196, v4.4-branch PR #118951), which adds k_work_cancel_delayable(&tg->vd_rsp_tx_work) and drains tg->vd_rsp_tx_pending with net_buf_unref() in avrcp_disconnected(); since the TX context lives in the buffer user_data, dropping the buffers also resets the TX_ONGOING state. Details are in the advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2fqc-xhj4-qvp7. On unpatched 4.4.x builds there is no timeout-based recovery: once the TX machine stalls, only a device reboot restores vendor-dependent AVRCP Target responses, so budget reboots for field units until the backport lands. As a compensating control, disable the Bluetooth Classic AVRCP Target role (and, where practical, BR/EDR Classic altogether) on builds that do not need remote-control or metadata services; the trade-off is loss of AVRCP Target functionality for controllers, and devices without the role are unaffected by this bug. Restricting which peers may pair and stay within range lowers exposure, but because the trigger only needs an already-paired, encrypted link and no user interaction, pairing hygiene alone does not eliminate the risk.

Affected VersionsENISA

Zephyr 4.4.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

AVRCP (Audio/Video Remote Control Profile) runs over AVCTP on L2CAP, and in the Target role Zephyr keeps a per-connection object obtained from get_avrcp_tg(), which selects the object by bt_conn_index(). The per-transfer transmit context - transaction ID, sent length and the BT_AVRCP_TG_FLAG_TX_ONGOING flag - is stored in the user_data of the queued response net_buf rather than in the TG object, and buffers are appended to tg->vd_rsp_tx_pending by bt_avrcp_tg_send_vendor_rsp(). bt_avrcp_tg_vendor_tx_work() peeks the list head and returns immediately whenever TX_ONGOING is set, parking the buffer after each fragment until the peer answers with REQUEST_CONTINUING_RESPONSE. The teardown handler avrcp_disconnected() only cleared notify state and dropped the connection; it never called k_work_cancel_delayable() on tg->vd_rsp_tx_work and never drained vd_rsp_tx_pending. That is a CWE-459 incomplete-cleanup defect rather than memory corruption: the abandoned buffer keeps a live reference, so no use-after-free arises, but the TX state machine survives the connection because vd_rsp_tx_pending and vd_rsp_tx_work are initialised only once in bt_avrcp_init() under an if (!initialized) guard. The fix in commit 47728746bb52 cancels the delayable work and unrefs every node on the pending list synchronously, which incidentally resets the state machine because the context lives in the buffer user_data. The AVCTP server sets l2cap.sec_level = BT_SECURITY_L2, which is why an encrypted, paired BR/EDR link is a prerequisite and the vector carries PR:L. Despite the 'Buffer Overflow' tag on the record, the advisory and diff describe a lifecycle/cleanup bug, not an overflow.

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 (zephyr) PRIMARY 4.6 MEDIUM
AV:A/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L
vuln.today AI 4.6 MEDIUM

Adjacent Bluetooth (AV:A) over a mandatory paired encrypted link (PR:L); deterministic trigger (AC:L); C:L for cross-session response leak, A:L for persistent loss of AVRCP Target function until reboot.

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
Low

DescriptionCVE.org

The AVRCP Target role in subsys/bluetooth/host/classic/avrcp.c keeps its vendor-dependent response transmit state in a per-connection object selected by connection index (get_avrcp_tg()), with the per-transfer context (tid, sent_len, and the BT_AVRCP_TG_FLAG_TX_ONGOING flag) stored in the user_data of the queued response net_buf. The AVCTP teardown handler avrcp_disconnected() did not cancel tg->vd_rsp_tx_work and did not release the buffers still queued on tg->vd_rsp_tx_pending, so a link drop in the middle of a fragmented response left the buffer on the list with TX_ONGOING still set.

A remote AVRCP Controller can trigger this deterministically: it issues a vendor-dependent command whose response exceeds one AVRCP fragment (for example GetElementAttributes or GetCapabilities), lets bt_avrcp_tg_vendor_tx_work() emit the START fragment, and then drops the ACL link instead of sending REQUEST_CONTINUING_RESPONSE. The AVCTP control channel requires an encrypted BR/EDR link (BT_SECURITY_L2), so the attacker must be a paired peer within radio range; no user interaction is needed.

Because the Target objects are static and reused, the next connection landing on the same connection index finds the stale buffer at the head of vd_rsp_tx_pending. Every run of the TX work sees TX_ONGOING and returns immediately, so all further vendor-dependent responses queue behind the stale head and are never sent - a persistent loss of AVRCP Target function that no timeout clears and only a reboot recovers. Each cycle also leaks one response buffer from a shallow application pool, and a new peer that sends REQUEST_CONTINUING_RESPONSE clears the stale TX_ONGOING via bt_avrcp_tg_process_continuing_cmd(), causing the un-sent remainder of the previous peer's response to be transmitted to it.

The fix cancels tg->vd_rsp_tx_work and unrefs every buffer on tg->vd_rsp_tx_pending in avrcp_disconnected(); since the TX context lives in the buffer user_data, releasing the buffers also resets the TX state machine. There is no memory corruption: the pre-fix buffer is leaked with a live reference, so no use-after-free arises.

Threat Intelligence Overview

Prevalence
Low
niche BR/EDR AVRCP Target feature, added only in Zephyr 4.4.0
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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 N/A
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
None
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

23
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +23
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
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-118603 HIGH
8.0 Oct 28

A stack-based buffer overflow in the vCard parser of the Alpine iLX-F511 in-dash multimedia receiver (build 7.0.0000) le

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