Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconApproach within Bluetooth radio range
-
DeliverySend LL_CONNECTION_UPDATE_IND with future instant
-
ExploitController retains RX node, awaits instant
-
InstallSend unexpected LL Control PDU (LL_LENGTH_REQ)
-
C2Invalid-PDU path leaks retained node
-
ExecuteRepeat across reconnects to exhaust RX pool
-
ImpactController crash or NULL-node DoS until reboot
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
|
| Exploitation Conditions | Requires the target to be a Zephyr device running the BLE Link Layer controller (ull_llcp_conn_upd.c) and reachable over the air within Bluetooth radio range; no pairing, bonding, or encryption is needed. The specific trigger is an active Connection Update / Connection Parameter procedure left waiting for its instant (RP_CU_STATE_WAIT_INSTANT) - reached against a peripheral via LL_CONNECTION_UPDATE_IND, against a central after it accepts LL_CONNECTION_PARAM_REQ, or via the local-procedure variant with LL_REJECT_IND - followed by any other LL Control PDU before the instant is reached. Limiting factors: exploitation is confined to Bluetooth proximity (not remote/Internet), impact is DoS only and clears on reboot, and the immediate-crash behavior depends on CONFIG_BT_CTLR_ASSERT_DEBUG being enabled (its default); with it disabled, impact requires repeated sequences to exhaust the small RX pool (CONFIG_BT_CTLR_RX_BUFFERS, default 1). |
| Impact | This is a genuine but bounded risk. 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: AV:A reflects that the attacker must be within Bluetooth radio range, PR:N/UI:N reflect that no pairing, bonding, encryption, or user interaction is needed, and the C:N/I:N/A:H profile matches a pure denial-of-service with no disclosure or corruption. Exploitation status is 'no public exploit identified at time of analysis' - there is no CISA KEV listing, no EPSS probability was provided, and no standalone proof-of-concept is referenced; the vendor did ship regression tests reproducing the two-PDU sequence, which lowers the bar for weaponization but is not itself an exploit in the wild. The practical ceiling on risk is the adjacency requirement (Bluetooth range, not Internet-reachable) and the DoS-only impact: with CONFIG_BT_CTLR_ASSERT_DEBUG at its default, a single two-PDU sequence crashes the controller, and with asserts disabled the fixed RX pool (CONFIG_BT_CTLR_RX_BUFFERS default 1) is exhausted quickly across reconnections - reliable and low-complexity, but recoverable by reboot. Net: a real patch-worthy issue for exposed BLE peripherals/centrals, not an emergency on the level of a remote-code-execution flaw. No SSVC decision data was supplied, so automatable/technical-impact framing cannot be cross-referenced. |
| Exploit ScenarioDerived | An attacker within Bluetooth range of a Zephyr-based device sends a well-formed LL_CONNECTION_UPDATE_IND with an instant a few connection events in the future, causing the controller to retain an RX node while awaiting that instant. Before the instant arrives the attacker sends any other LL Control PDU (e.g. LL_LENGTH_REQ), driving the active Connection Update procedure down the invalid-PDU termination path and leaking the retained node. No public exploit is published, though the vendor's committed regression tests demonstrate the exact triggering sequence. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 11, 2026
Denial of service affects Zephyr RTOS builds that include the Bluetooth Link Layer controller, where an over-the-air peer within Bluetooth radio range can trigger a retained RX node leak without pairing, bonding, or encryption. The peer sends a well-formed LL_CONNECTION_UPDATE_IND with a future instant (or reaches the same state as a central via LL_CONNECTION_PARAM_REQ, or through the local procedure via LL_REJECT_IND) and then, before that instant is reached, any other LL Control PDU such as LL_LENGTH_REQ; the invalid-PDU termination path completes the procedure without releasing the retained node, so llcp_rr_check_done() drops the last reference to it. With the default CONFIG_BT_CTLR_ASSERT_DEBUG enabled this produces an immediate fatal assertion in the controller, and with asserts disabled each occurrence permanently consumes a node from the small fixed RX pool until the receive path operates on NULL, with the impact being availability-only, limited to Bluetooth proximity, and persisting until reboot; no public exploit code was identified at time of analysis and there is no CISA KEV listing.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply commit 7b600129faaba8bb26dd5cb3e8f17ed1cb41ea7f (or a later Zephyr release that contains it, per advisory GHSA-84v8-vgp5-4vc9), which adds llcp_rx_node_release(ctx) to the invalid-PDU default arm of both llcp_lp_cu_rx() and llcp_rp_cu_rx() so the retained node is returned to the RX pool before the procedure context is freed. Until the fix is deployed, there is no configuration switch that disables the affected Connection Update / Connection Parameter procedure without also crippling normal BLE connection-parameter negotiation, so the practical compensating controls are limited and each has a trade-off: enabling CONFIG_BT_CTLR_ASSERT_DEBUG (the default) converts every attempt into an immediate controller assertion rather than a silent leak, which is exactly why it should be left at its default so the fault is caught and the connection terminated early rather than accumulating; increasing CONFIG_BT_CTLR_RX_BUFFERS above its default of 1 only delays pool exhaustion under the no-assert configuration at the cost of additional RAM and does not stop the leak; and because the attack requires an attacker radio within range and the damage is availability-only, physical/proximity isolation of the BLE environment and a documented reboot-or-reset recovery procedure are the remaining fallbacks, since a power cycle is the only way to reclaim leaked nodes and clear the induced NULL-node state.
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 vulnerability is a CWE-401 missing-release-of-memory defect in the Bluetooth Link Layer control procedure implementation at subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c. When a Connection Update / Connection Parameter procedure must defer the host notification until the negotiated connection instant, it calls llcp_rx_node_retain() on the received RX node, marking it NODE_RX_TYPE_RETAIN and suppressing the normal recycling performed in ull.c. The default: arm of llcp_rp_cu_rx() and llcp_lp_cu_rx() - the 'invalid PDU, terminate the connection' path - completes the procedure while the retained node is still un-consumed, so the procedure context is dequeued and freed by llcp_rr_check_done() with ctx->node_ref.rx still referencing the retained node; the last reference is lost and the node can never be returned to the controller's fixed RX pool (sized from CONFIG_BT_CTLR_RX_BUFFERS, default 1). The reachable procedure states are RP_CU_STATE_WAIT_INSTANT on the peripheral (LL_CONNECTION_UPDATE_IND), the symmetric central case after accepting LL_CONNECTION_PARAM_REQ, and the local procedure variant triggered with LL_REJECT_IND, with the second PDU routed by ull_cp_rx() into the still-active procedure. The upstream fix inserts llcp_rx_node_release(ctx) before procedure completion in both the local and remote handlers, and the accompanying Zephyr ztest toggles between a future instant and an unexpected LL Control PDU to assert that termination reason BT_HCI_ERR_LMP_PDU_NOT_ALLOWED is set and all LLCP context buffers are freed.
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
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Bluetooth-range delivery gives AV:A; no pairing/auth/interaction gives PR:N/UI:N; the deterministic two-PDU trigger is AC:L; impact is reboot-recoverable DoS, so A:H with C/I:N.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The Bluetooth Link Layer control procedure code in subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c retains the received RX node while a Connection Update / Connection Parameter procedure waits for its instant, so the node can later carry the host notification (llcp_rx_node_retain(), which marks it NODE_RX_TYPE_RETAIN and thereby suppresses the normal recycling in ull.c). The default: arm of llcp_rp_cu_rx() and llcp_lp_cu_rx() - the "invalid PDU, terminate the connection" path - completed the procedure without releasing that retained node. llcp_rr_check_done() then dequeued and freed the procedure context with ctx->node_ref.rx still pointing at the retained node, dropping the last reference to it.
A peer device in radio range can reach this without pairing, bonding, or encryption. Against a peripheral, the peer sends a well-formed LL_CONNECTION_UPDATE_IND with an instant a few connection events in the future (the node is retained and the procedure enters RP_CU_STATE_WAIT_INSTANT), then, before the instant is reached, sends any other LL Control PDU such as LL_LENGTH_REQ. ull_cp_rx() routes that PDU into the active remote Connection Update procedure, which takes the invalid-PDU path. The central role is reachable symmetrically after accepting an LL_CONNECTION_PARAM_REQ, and the local-procedure variant is reachable with LL_REJECT_IND.
With CONFIG_BT_CTLR_ASSERT_DEBUG enabled (its default), the resulting state violates the invariant asserted in llcp_rr_check_done(), so the two-PDU sequence produces an immediate fatal error in the controller. With those asserts disabled, each occurrence permanently loses one node from the controller's small fixed RX pool (sized from CONFIG_BT_CTLR_RX_BUFFERS, which defaults to 1); repeating the sequence across reconnections exhausts the pool, after which the link-layer receive path operates on a NULL node. The impact is an unauthenticated, remotely triggerable denial of service persisting until reboot; there is no memory-disclosure or memory-corruption consequence, since the leaked node simply becomes unreachable.
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.
Unauthenticated Bluetooth Low Energy OTA firmware upgrade in the Meatmeet Pro WiFi & Bluetooth Meat Thermometer firmware
CVE-2025-32879 is a security vulnerability (CVSS 8.8) that allows an attacker. Risk factors: public PoC available.
Zephyr's Bluetooth Low Energy connection-response handler fails to verify that a connection request was actually initiat
Heap OOB write in Android Bluetooth driver via incorrect bounds check.
A use-after-free in the Android Bluetooth stack (bluetooth_ccc.cc, function BluetoothCccHandlerCallbackImpl) lets an att
Legacy pairing and secure-connections pairing authentication in Bluetooth BR/EDR Core Specification v5.2 and earlier may
Memory corruption in the Zephyr RTOS LE Audio Broadcast Sink (subsys/bluetooth/audio/bap_broadcast_sink.c) lets an attac
A memory leak combined with a use-after-free in the Linux kernel's Bluetooth HCI connection-setup path can crash the ker
A race condition in the Linux kernel's Bluetooth L2CAP subsystem allows a use-after-free of the hci_conn::l2cap_data poi
Bluetooth authentication bypass in SwitchBot Door Lock Series allows an attacker within BLE range to manipulate the lock
Out-of-bounds read in the Linux kernel Bluetooth subsystem's eir_get_service_data() leaks kernel heap memory into usersp
Use-after-free in the Linux kernel Bluetooth L2CAP stack lets a Bluetooth-adjacent attacker corrupt kernel memory by rac
EUVD-2026-97108
NVD
CVE.org
EPSS
GitHub
Exploit-DB