Skip to main content

Zephyr RTOS CVE-2026-15460

| EUVDEUVD-2026-75212 MEDIUM
Operation on Resource in Wrong Phase of Lifetime (CWE-666)
2026-09-09 zephyr
5.4
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Recon
    Come within Bluetooth radio range
  2. Delivery
    Initiate L2CAP connection request to Zephyr device
  3. Exploit
    Channel assigned CID in BT_L2CAP_CONNECTING state
  4. Install
    Send data PDU to CID before BT_L2CAP_CONNECTED reached
  5. C2
    bt_l2cap_br_recv dispatches on stale/uninitialized channel fields
  6. Execute
    Upper-layer handler processes attacker data or dereferences stale _sdu pointer
  7. Impact
    Channel or link teardown (denial of service)

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

Target device must run Zephyr 1.6.0 through pre-4.4.2 compiled with Bluetooth Classic support (CONFIG_BT_BREDR=y) and must be discoverable or connectable by the attacker. Attacker must be within Bluetooth radio range and must send the crafted data PDU during the window between CID assignment in BT_L2CAP_CONNECTING state and the channel reaching BT_L2CAP_CONNECTED - this window is observable via on-air Bluetooth sniffing. For PSMs that enforce security, the vulnerability is exploitable before the security handshake, so the attacker does not need to be a previously paired device. The more severe dangling-pointer path additionally requires that the targeted channel object be a reused pool entry with a non-null stale _sdu pointer, which is not deterministically attacker-controllable and depends on prior channel allocation/deallocation history on the target device.

Impact

With CVSS 5.4 (AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L), the attack is bounded to Bluetooth radio range - typically 10 to 100 meters - which eliminates internet-scale mass exploitation but is operationally meaningful in dense shared environments such as hospitals, office buildings, and transit hubs where IoT devices running Zephyr may coexist with untrusted parties. The AC:L rating is appropriate since no preconditions beyond physical proximity are required; timing the PDU into the half-open CID window involves only observing the on-air connection setup sequence. The dangling _sdu pointer scenario represents a latent memory-safety concern that the C:N/I:L/A:L vector may understate in channel-reuse-heavy workloads, and this warrants patch urgency beyond what the numeric score alone conveys - even a mid-sized municipal IT team in inowroclaw managing Bluetooth-enabled IoT infrastructure should treat this as a scheduled patch rather than deferred maintenance. No EPSS score was supplied and the vulnerability is absent from CISA KEV with no known public exploit, consistent with the medium score and adjacency constraint. The SSVC technical impact is partial (bounded DoS plus data injection), exploitation is not confirmed as automated, and the scope is unchanged, making this a genuine medium-priority adjacency risk for Bluetooth Classic-enabled Zephyr deployments only - BLE-only builds are unaffected.

Exploit ScenarioDerived

An attacker within Bluetooth radio range initiates an L2CAP connection request to a Zephyr device; once the CID is assigned and the channel enters BT_L2CAP_CONNECTING, the attacker immediately transmits a data PDU addressed to that CID before the channel reaches BT_L2CAP_CONNECTED. If the targeted channel object was previously allocated and freed without clearing the _sdu pointer, bt_l2cap_br_ret_fc_recv() dereferences the stale pointer, causing the Bluetooth link manager to tear down the connection. No public proof-of-concept exploit has been identified.

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

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

Alert me

AnalysisAIv1 – Sep 09, 2026

Bluetooth Classic L2CAP channel state confusion in Zephyr RTOS (versions 1.6.0 through pre-4.4.2) enables an adjacent unauthenticated peer to inject data PDUs into half-open L2CAP channels before configuration or security handshaking completes, forcing processing on stale or uninitialized channel fields. In the worst case, reused channel objects expose dangling _sdu reassembly buffer pointers, creating a memory-safety condition that causes channel and link teardown (denial of service) alongside unintended delivery of attacker-controlled data to upper-layer protocol handlers. No public exploit has been identified and the flaw is absent from CISA KEV; a vendor-released fix is available via Zephyr commit 2738ee9, targeting release 4.4.2.

RemediationAI

Upgrade to Zephyr 4.4.2 or later, which incorporates the fix from commit 2738ee921ba61ba2e644c95bceba302896dd8c19 adding an explicit BR_CHAN(chan)->state < BT_L2CAP_CONNECTED guard in bt_l2cap_br_recv() that drops any data PDU received before the channel reaches BT_L2CAP_CONNECTED. The authoritative vendor advisory is at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hx89-rm6c-hjrh. For systems that cannot be immediately upgraded, disabling Bluetooth Classic at build time (CONFIG_BT_BREDR=n) fully eliminates the attack surface but removes all BR/EDR profiles (HFP, A2DP, RFCOMM). Restricting the physical RF environment to paired, allowlisted peers reduces exposure but does not eliminate the vulnerability because the state-confusion window occurs before security handshaking on PSMs that require it. There is no known runtime toggle that can selectively block the vulnerable code path without disabling the entire BR/EDR subsystem.

Affected VersionsENISA

Zephyr 1.6.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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

Zephyr RTOS implements Bluetooth Classic (BR/EDR) L2CAP channel management in subsys/bluetooth/host/classic/l2cap_br.c. The root cause is CWE-666 (Operation on Resource in Wrong Phase of Lifetime): the receive dispatch function bt_l2cap_br_recv() uses bt_l2cap_br_lookup_rx_cid() to locate the target channel by CID without verifying that the channel has advanced to BT_L2CAP_CONNECTED state. Channels are added to the lookup table as soon as a RX CID is assigned-during BT_L2CAP_CONNECTING-making them reachable before l2cap_br_conf() initializes rx.mode and rx.mps, and before l2cap_br_conn_req() completes any required security pairing. Compounding this, Zephyr's pooled channel allocator does not zero rx.mode or the _sdu reassembly pointer in bt_l2cap_br_chan_del(), so reused objects carry stale fields from prior connections into the new CONNECTING window. A frame received during this window is routed into bt_l2cap_br_ret_fc_recv() with stale parameters and a potentially dangling _sdu pointer. Affected CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covering versions 1.6.0 through pre-4.4.2 per EUVD-2026-75212.

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

Adjacent-only Bluetooth vector; no authentication or privileges required; bounded integrity impact from injected data and availability from link teardown; no confidentiality exposure.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
4.0 AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/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
Low
Availability
Low

DescriptionCVE.org

The Bluetooth Classic (BR/EDR) L2CAP receive handler bt_l2cap_br_recv() in subsys/bluetooth/host/classic/l2cap_br.c dispatched inbound data PDUs based only on the destination channel ID, without checking that the target channel had reached the BT_L2CAP_CONNECTED state. A dynamic channel is assigned its RX CID and added to the connection's channel list while still in BT_L2CAP_CONNECTING (and later BT_L2CAP_CONFIG) - before configuration completes and, for PSMs that require security, before the peer is authenticated (l2cap_br_conn_req()).

Because the channel is already findable by bt_l2cap_br_lookup_rx_cid() during this window, a remote peer within radio range can send a data PDU addressed to that CID and have it processed on a not-yet-established channel. The dispatch keys off channel fields (BR_CHAN(chan)->rx.mode, rx.mps) that are only initialized during configuration by l2cap_br_conf(); since channel objects are pooled and bt_l2cap_br_chan_del() does not reset rx.mode or the reassembly buffer _sdu, a reused channel can carry stale state into the CONNECTING window and route the frame into the retransmission/flow-control path (bt_l2cap_br_ret_fc_recv()) with stale parameters and a possibly stale _sdu pointer.

The impact is delivery of attacker data to upper-layer protocol handlers on a half-open (and possibly unauthenticated) channel, plus operation on stale or partially initialized channel state on reused channel objects - leading to channel/link teardown (denial of service) and, in the stale-_sdu case, a dangling-pointer condition. The fix adds an explicit BR_CHAN(chan)->state < BT_L2CAP_CONNECTED guard that drops any data received before the channel is fully connected.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Medium
widely-deployed open-source RTOS for IoT and embedded devices
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.2%
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

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
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