Skip to main content

Zephyr BLE Controller EUVDEUVD-2026-97109

| CVE-2026-19740 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
    Establish unauthenticated LE connection in radio range
  2. Delivery
    Negotiate PHY Update with future instant, controller retains RX node
  3. Exploit
    Send unexpected LL Control PDU before instant
  4. Execution
    Invalid-PDU path completes procedure, leaks retained node
  5. Impact
    Assertion fault or RX-pool exhaustion halts Bluetooth

Vulnerability Assessment

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

Requires an established LE connection to a Zephyr Bluetooth LE Controller (peripheral or central role) with no pairing or encryption needed, and the attacker must be within Bluetooth radio range (Adjacent). The attacker must drive a PHY Update procedure to an accepted state with a future instant - sending LL_PHY_REQ, receiving LL_PHY_RSP, and sending a valid LL_PHY_UPDATE_IND with an instant a few connection events ahead so the RX node becomes retained - then, before that instant is reached, send any other LL Control PDU (e.g. LL_LENGTH_REQ); the mirror case is a locally initiated PHY Update followed by LL_REJECT_IND. Limiting factors: exploitation is confined to Bluetooth range and to builds with the vulnerable PHY Update/Connection Update/CIS-create paths; in the default configuration a single sequence crashes the device via assertion, but on releases v3.4.0 through v3.7.x the assertion is never reached so the attacker must repeat the sequence several times (each costing only a reconnect) to exhaust the small receive pool, which defaults to CONFIG_BT_CTLR_RX_BUFFERS=1.

Impact

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 from Bluetooth radio range (Adjacent, not Network), low complexity and deterministic, requires no pairing or encryption (PR:N), and yields a pure availability impact (C:N/I:N/A:H). This is a genuine denial-of-service priority for exposed Zephyr BLE devices because it is unauthenticated, deterministic, and cheap to repeat, but it is bounded: no CISA KEV listing, no public exploit code identified, and no EPSS score was supplied, so there is no evidence of active or widespread exploitation. The impact is availability-only - the description explicitly rules out memory corruption or information disclosure, directly contradicting the input Tags 'Buffer Overflow' and 'Information Disclosure', which are mislabeled and should not inflate the perceived severity. Note a version-dependent behavior split the analyst must weigh: in the default configuration (CONFIG_BT_ASSERT / CONFIG_BT_CTLR_ASSERT_DEBUG = y) a single crafted PDU sequence triggers a controller assertion and faults the device (k_oops/k_panic), whereas on releases v3.4.0 through v3.7.x the assertion is never reached and each attempt silently leaks one RX node, requiring a few repetitions to exhaust the small receive pool (PDU_RX_CNT default 1).

Exploit ScenarioDerived

An attacker within Bluetooth radio range of a Zephyr-based peripheral establishes an unauthenticated LE connection, negotiates a PHY Update with a future instant so the controller retains an RX node, then sends an unexpected LL Control PDU (e.g. LL_LENGTH_REQ) before the instant is reached, driving the invalid-PDU path that leaks the retained node. In default builds this trips a controller assertion and faults the device with one sequence; on v3.4.0-v3.7.x the attacker reconnects and repeats a handful of times to exhaust the receive pool and render Bluetooth inoperable until reboot. No public exploit code was identified, though the patch commit publicly details the exact triggering sequence.

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

The Bluetooth LE Controller in Zephyr RTOS can be faulted or have its receive PDU pool exhausted by a radio-range peer that drives the Link Layer PHY Update procedure into the retained-RX-node state and then sends an unexpected LL Control PDU before the update instant arrives; the invalid-PDU branches of llcp_lp_pu_rx() and llcp_rp_pu_rx() complete the procedure without releasing the retained node, so the procedure context is freed while the node stays out of the receive pool. In the default configuration (CONFIG_BT_ASSERT and CONFIG_BT_CTLR_ASSERT_DEBUG both y) the violated invariant trips llcp_lr_check_done()/llcp_rr_check_done() and terminates in k_oops()/k_panic() from a single crafted PDU sequence, while on releases v3.4.0 through v3.7.x the assertion is never reached and each attempt silently leaks one PDU node from a pool that defaults to a single buffer (CONFIG_BT_CTLR_RX_BUFFERS=1), allowing a few reconnects to render Bluetooth inoperable until reboot. No pairing or encryption is required of the attacking peer (CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 6.5), and no public exploit identified at time of analysis.

RemediationAI

Apply the upstream fix that calls the retained-node release before completing the procedure on the invalid-PDU paths - commit 06bf10e3de16b57b864f969330188b59f7d69a63, tracked through the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rgw4-3qr8-pp36. Patch status is 'Upstream fix available (PR/commit); released patched version not independently confirmed', so confirm that your Zephyr tree, SDK or vendor BSP actually contains this commit before relying on the fix, and backport it to any long-lived branch based on v3.4.0 through v3.7.x, which leak silently rather than asserting. Until the fix is in place, raise CONFIG_BT_CTLR_RX_BUFFERS above its default of 1 to increase the number of leaked nodes an attacker must generate before the pool is exhausted, accepting the trade-off of additional RAM per connection; leave CONFIG_BT_ASSERT and CONFIG_BT_CTLR_ASSERT_DEBUG enabled if you prefer a deterministic, immediately visible controller fault over covert resource exhaustion, since disabling them only converts a crash into a slow denial of service. Reducing the attack surface by not enabling alternate PHYs (CONFIG_BT_CTLR_PHY_2M and CONFIG_BT_CTLR_PHY_CODED) limits the opportunity for a peer to negotiate a PHY Update at all, at the cost of 2M throughput and Coded-PHY range, and physically restricting Bluetooth RF exposure to trusted environments constrains the AV:A prerequisite but is rarely practical for deployed devices. In all cases plan for a reboot or watchdog reset path, since an exhausted receive pool leaves Bluetooth inoperable until restart.

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 sits in Zephyr's Link Layer Control Procedure (LLCP) implementation for the Bluetooth LE Controller, specifically the PHY Update procedure state machines in subsys/bluetooth/controller/ll_sw/ull_llcp_phy.c. When an LL_PHY_UPDATE_IND with a future instant is accepted, llcp_rx_node_retain() in subsys/bluetooth/controller/ll_sw/ull_llcp.c deliberately holds the receive node (marked NODE_RX_TYPE_RETAIN and withheld from the receive pool) so it can be reused later for the host notification at the update instant. The invalid-PDU arms of llcp_lp_pu_rx() and llcp_rp_pu_rx() called llcp_lr_complete()/llcp_rr_check_done() paths without first invoking the equivalent of llcp_rx_node_release(), so the procedure context - the only remaining reference to the node - was freed while the node was still held out of the pool. This is CWE-401 (missing release of memory after effective lifetime), a resource-leak/orphaned-allocation class rather than a memory-corruption class: the orphaned node leaves no dangling pointer that is later dereferenced and is never delivered to the host, so the assessed impact is availability only. The same upstream commit applies the identical release fix to the Connection Update and CIS-create procedures, whose invalid-PDU arms shared the omission. Note that the associated feed tags ('Buffer Overflow', 'Information Disclosure') conflict with the vendor description, the assessed CVSS vector (C:N/I:N/A:H) and the CWE-401 root cause, and should not be used to inflate risk scoring.

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

Exploitable over the BLE radio link (AV:A), deterministic and without pairing or encryption (AC:L/PR:N/UI:N), with no confidentiality or integrity impact and a device-level DoS (C:N/I:N/A:H).

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 Link Layer Control Procedure (LLCP) implementation of the Zephyr software Bluetooth LE Controller retains the receive node that carried an accepted LL_PHY_UPDATE_IND so that it can later be reused for the host notification when the update instant is reached (llcp_rx_node_retain() in subsys/bluetooth/controller/ll_sw/ull_llcp.c, and the node is deliberately not recycled while marked NODE_RX_TYPE_RETAIN). The invalid-PDU arms of llcp_lp_pu_rx() and llcp_rp_pu_rx() in subsys/bluetooth/controller/ll_sw/ull_llcp_phy.c completed the procedure via llcp_lr_complete() / llcp_rr_complete() without first releasing that retained node, so the procedure context - the only remaining reference to the node - was freed while the node was still held out of the receive pool.

A peer device on an established LE connection can drive this deterministically and without pairing or encryption. Against a peripheral it sends LL_PHY_REQ, receives LL_PHY_RSP, sends a valid LL_PHY_UPDATE_IND with an instant a few connection events in the future (so the node becomes retained), and then, before the instant is reached, sends any other LL Control PDU such as LL_LENGTH_REQ; ull_cp_rx() routes it to the active remote PHY Update procedure, which takes the invalid-PDU path. The mirror case applies to a locally initiated PHY Update followed by an LL_REJECT_IND.

In the default configuration (CONFIG_BT_ASSERT and CONFIG_BT_CTLR_ASSERT_DEBUG both default y) the violated invariant in llcp_lr_check_done() / llcp_rr_check_done() triggers a controller assertion, ending in k_oops() (or k_panic()) - a single crafted PDU sequence from radio range faults the device. With those assertions compiled out, each attempt silently leaks one receive PDU node and its memq link; because the controller receive pool is small (PDU_RX_CNT, driven by CONFIG_BT_CTLR_RX_BUFFERS, which defaults to 1) and each attempt costs the attacker only a reconnect, a few repetitions exhaust the pool and leave Bluetooth inoperable until reboot. On releases v3.4.0 through v3.7.x the assertion is never reached, whatever the configuration, so every attempt leaks silently.

The impact is limited to availability: the orphaned node leaves no dangling pointer that is later dereferenced and is never delivered to the host, so there is no memory corruption or information disclosure. The same pull request applies the identical release to the Connection Update and CIS-create procedures, whose invalid-PDU arms had the same omission.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Medium
popular open-source embedded/IoT RTOS, but affected BLE controller is a config-specific subset
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

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