Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect over unauthenticated ACL in radio range
-
DeliveryEnter CIS Create exchange (LL_CIS_REQ)
-
ExploitInject unexpected LL Control PDU before Host reply
-
ExecutionInvalid-PDU path leaks retained RX node
-
PersistRetained-node assertion faults controller
-
ImpactDevice 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-97107
NVD
CVE.org
EPSS
GitHub
Exploit-DB