Skip to main content

Zephyr Bluetooth EUVDEUVD-2026-97107

| CVE-2026-19738 MEDIUM
Memory Leak (CWE-401)
2026-10-11 zephyr
6.5
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Connect over unauthenticated ACL in radio range
  2. Delivery
    Enter CIS Create exchange (LL_CIS_REQ)
  3. Exploit
    Inject unexpected LL Control PDU before Host reply
  4. Execution
    Invalid-PDU path leaks retained RX node
  5. Persist
    Retained-node assertion faults controller
  6. Impact
    Device fatal error and reboot

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
Exploitation Conditions

Exploitation requires the target firmware to be compiled with CONFIG_BT_CTLR_PERIPHERAL_ISO or CONFIG_BT_CTLR_CENTRAL_ISO (Bluetooth LE isochronous/CIS support) - if neither is enabled, the vulnerable code in ull_llcp_cc.c is not compiled in and the device is not affected. The attacker must be within Bluetooth LE radio range (AV:A) and able to establish an unauthenticated, unencrypted ACL link; no pairing, encryption, or user interaction is needed (PR:N/UI:N). The device must be mid-CIS-Create: against a peripheral, the attacker sends a valid LL_CIS_REQ and then injects any unrelated LL Control PDU (e.g. LL_VERSION_IND) before the Host replies; against a central performing a CIS Create, a malicious peripheral must respond to the CIS_REQ with LL_UNKNOWN_RSP. Limiting factors: proximity requirement confines attacks to physically nearby devices (no remote/internet exploitation), and devices not using Bluetooth ISO are entirely unaffected. In default builds (CONFIG_BT_CTLR_ASSERT_DEBUG=y) a single PDU causes an immediate fatal assertion/reset; with assertions disabled, repeated connect-attack-reconnect cycles are needed to exhaust the LL notification pool (LL_PDU_RX_CNT = 2 * CONFIG_BT_CTLR_LLCP_CONN).

Impact

This is a genuine but bounded availability issue, not a high-priority emergency. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 6.5) is internally consistent with the description: exploitation is over-the-air within Bluetooth radio range (Adjacent, not Network), requires no pairing/encryption (PR:N) and no user interaction, is low-complexity (a single injected LL Control PDU), and impacts availability only (C:N/I:N) - matching the CWE-401 memory-leak/DoS nature. No EPSS score, KEV listing, or public POC was provided; per the precision rules this is 'no public exploit identified at time of analysis.' SSVC-style reading: technical impact is partial (DoS/reboot, no code execution or data exposure), and while the trigger is mechanically simple, it is NOT automatable at scale because AV:A confines each attack to devices in physical radio proximity - ruling out internet-wide mass exploitation. The one nuance worth flagging: default builds (CONFIG_BT_CTLR_ASSERT_DEBUG=y) fault and reset on the FIRST injected PDU, so the realistic default-config impact is an instant assertion-driven reboot rather than the slower pool-exhaustion path described for assertion-disabled builds. Overall: a legitimate, patch-worthy DoS against Bluetooth-ISO-enabled Zephyr devices in proximity, but not a widespread or remotely-mass-exploitable threat.

Exploit ScenarioDerived

An attacker within Bluetooth radio range of a Zephyr device built with CIS/isochronous support connects over an unauthenticated, unencrypted ACL link and initiates or responds to a CIS Create exchange. Against a peripheral they send a valid LL_CIS_REQ then, before the Host replies, inject any unrelated LL Control PDU (e.g. LL_VERSION_IND); against a central they answer the CIS_REQ with LL_UNKNOWN_RSP. In default builds the retained-node assertion fires immediately, producing a controller fatal error and system reset from that single injected PDU. No public exploit code is identified, though the vendor's regression tests demonstrate the exact trigger.

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

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

Alert me

AnalysisAIv1 – Oct 11, 2026

Zephyr's Bluetooth LE controller leaks a retained RX node when the Connected Isochronous Stream (CIS) Create control procedure is aborted through its "invalid PDU received" path, giving a radio-range attacker a denial-of-service primitive against affected devices. Any build with CONFIG_BT_CTLR_PERIPHERAL_ISO or CONFIG_BT_CTLR_CENTRAL_ISO is affected if it is mid-CIS-Create: against a peripheral the attacker sends a valid LL_CIS_REQ and then any unrelated LL Control PDU (for example LL_VERSION_IND) before the Host replies, while against a central a malicious peripheral simply answers LL_CIS_REQ with LL_UNKNOWN_RSP. In default builds the retained-node assertion fires immediately and produces a controller fatal error and usually a system reset from a single injected PDU; with CONFIG_BT_CTLR_ASSERT_DEBUG disabled, repeated connect-attack-reconnect cycles permanently drain the small LL notification pool until allocation always fails, RX flow control stalls, and the non-disableable LL_ASSERT_ERR() in llcp_lp_cc_flush() faults, with recovery requiring a reboot. Only availability is impacted - the leaked node is orphaned and never reused or double-freed - and no public exploit identified at time of analysis. Exploitation requires the attacker to be within Bluetooth LE radio range of an unauthenticated, unencrypted ACL link; no pairing, encryption, or user interaction is needed.

RemediationAI

Apply the upstream fix commit fde17f2c3de0118f3796c2a83958ee4ce4b5efd6, which adds llcp_rx_node_release(ctx) to the invalid-PDU error paths of llcp_rp_cc_rx() and llcp_lp_cc_rx() in subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c; note that this is an upstream fix available as a PR/commit and a released patched Zephyr version is not independently confirmed, so downstream integrators should backport it or track the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6mcj-5jw8-ff36. The most effective compensating control for products that do not need Bluetooth LE isochronous operation is to disable CONFIG_BT_CTLR_PERIPHERAL_ISO and CONFIG_BT_CTLR_CENTRAL_ISO, which removes the vulnerable code from the build entirely - the trade-off being loss of CIS/LE Audio functionality; this is a compile-time decision and cannot be applied at runtime. Do not disable CONFIG_BT_CTLR_ASSERT_DEBUG as a mitigation: it does not remove the leak, it merely converts a deterministic fatal assertion and reset on the first injected PDU into a silent, cumulative exhaustion of the LL notification pool (LL_PDU_RX_CNT = 2 * CONFIG_BT_CTLR_LLCP_CONN) that eventually faults in llcp_lp_cc_flush() and still requires a reboot, so keeping assertions enabled is preferable for fail-fast detection. Because exploitation requires an attacker within Bluetooth LE radio range on an unauthenticated ACL link, physical site controls and RF containment are the only meaningful boundary mitigations, while host-side monitoring for repeated controller resets or CIS create failures can serve as a detection signal. Recovery from a successful attack requires a device reboot; there is no runtime repair path for the orphaned node.

Affected VersionsENISA

Zephyr 3.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

The flaw is a CWE-401 missing release of memory after effective lifetime, located in the Zephyr Bluetooth controller Link Layer Control Procedure (LLCP) implementation at subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c. During Connected Isochronous Stream creation, the controller retains an RX node (ctx->node_ref.rx, tagged NODE_RX_TYPE_RETAIN) so the same buffer can later be reused as the host notification - held on the peripheral while awaiting the Host's reply to an LL_CIS_REQ, and on the central for the entire duration of a locally initiated CIS Create. The "invalid PDU received" error paths of llcp_rp_cc_rx() (remote/peripheral-role procedure) and llcp_lp_cc_rx() (local/central-role procedure) terminate the connection and complete the procedure without ever calling llcp_rx_node_release(), which both breaks the retained-node invariant checked by llcp_lr_check_done() and llcp_rr_check_done() and orphans the node and its memq_link_t. Routing into those paths is straightforward: ull_cp_rx() dispatches an unexpected LL Control PDU into whatever procedure is currently active, so injecting LL_VERSION_IND during a peripheral's pending CIS request, or returning LL_UNKNOWN_RSP to a central's CIS_REQ, is sufficient. The code is only compiled in when CONFIG_BT_CTLR_PERIPHERAL_ISO or CONFIG_BT_CTLR_CENTRAL_ISO is enabled, and the blast radius scales with the controller's notification pool, LL_PDU_RX_CNT, sized as 2 * CONFIG_BT_CTLR_LLCP_CONN. The upstream fix (commit fde17f2c3de0118f3796c2a83958ee4ce4b5efd6) inserts llcp_rx_node_release(ctx) before procedure completion in both error paths, and adds ZTEST coverage for both the peripheral-awaiting-reply and central-awaiting-response scenarios.

Know when Zephyr 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 6.5 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Over-the-air within BLE range (AV:A), single PDU on an unauthenticated unencrypted link (AC:L/PR:N/UI:N), and leak causes controller fault/reboot with no confidentiality or integrity impact (A:H only).

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

The Bluetooth Link Layer Control Procedure (LLCP) implementation for Connected Isochronous Stream (CIS) creation retains an RX node (ctx->node_ref.rx, marked NODE_RX_TYPE_RETAIN) so it can later be reused as the host notification - on the peripheral while awaiting the Host's reply to an LL_CIS_REQ, and on the central for the whole duration of a locally initiated CIS Create. In subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c, the "invalid PDU received" paths of llcp_rp_cc_rx() and llcp_lp_cc_rx() terminated the connection and completed the procedure without releasing that retained node, breaking the invariant checked in llcp_lr_check_done() and llcp_rr_check_done() and orphaning the node's memory.

A peer device within radio range can reach this with a single extra LL Control PDU on an unauthenticated, unencrypted ACL link. Against a peripheral, the attacker sends a valid LL_CIS_REQ and then, before the Host replies, any unrelated LL Control PDU (for example LL_VERSION_IND), which ull_cp_rx() routes into the active remote procedure. Against a central performing a CIS Create, a malicious peripheral answers with LL_UNKNOWN_RSP for CIS_REQ, which is dispatched into the active local procedure. No pairing, encryption or user interaction is required; the code is compiled in when CONFIG_BT_CTLR_PERIPHERAL_ISO or CONFIG_BT_CTLR_CENTRAL_ISO is enabled.

In default builds (CONFIG_BT_CTLR_ASSERT_DEBUG is default y) the retained-node assertion fires immediately, producing a controller fatal error and, typically, a system reset from one injected PDU. With the development assertions disabled, each attempt permanently loses one node from the controller's small LL notification pool (LL_PDU_RX_CNT, 2 * CONFIG_BT_CTLR_LLCP_CONN) together with its memq_link_t; repeating the connect-attack-reconnect cycle exhausts the pool, after which notification allocation always fails, RX flow control stalls, and the non-disableable LL_ASSERT_ERR() in llcp_lp_cc_flush() faults. The impact is limited to availability - the leaked node is orphaned, never reused or double-freed - and recovery requires a reboot.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
popular embedded RTOS, but vulnerable path needs Bluetooth ISO/CIS feature enabled
Social Media
1
Sightings
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.1%
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

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

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