Skip to main content

Zephyr RTOS CVE-2026-15894

| EUVDEUVD-2026-94230 HIGH
Stack-based Buffer Overflow (CWE-121)
2026-10-07 zephyr
8.8
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Approach target within Bluetooth range
  2. Delivery
    Craft Solicitation PDU padded past 17 octets
  3. Exploit
    Broadcast non-connectable mesh advertisement
  4. Execution
    Handler copies oversized PDU to stack buffer
  5. Persist
    Overwrite adjacent stack memory
  6. Impact
    Crash or execute attacker code

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Stack buffer bounds checking
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target node must be built with CONFIG_BT_MESH_OD_PRIV_PROXY_SRV enabled AND be currently eligible to be solicited - specifically GATT Proxy disabled and On-Demand Private Proxy enabled; nodes without this feature or not in a solicitable state are unaffected, making this a non-default configuration requirement. The attacker must be within Bluetooth Low Energy radio range (AV:A adjacency) to deliver the crafted non-connectable advertisement, but needs no pairing, bonding, provisioning, authentication, or key material since the vulnerable copy runs before decryption (PR:N, unauthenticated). The main limiting factors are therefore physical/radio proximity and the specific mesh proxy configuration, not any credential or user interaction.

Impact

This is a genuine high-priority issue for the specific population of devices that run the vulnerable configuration, though its blast radius is constrained by the attack vector. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, score 8.8) is well-supported by the source evidence: the copy via net_buf_simple_add_mem into a NET_BUF_SIMPLE(17) stack buffer occurs before any decryption or authentication (PR:N confirmed), the attacker only needs to append trailing AD structures to exceed 17 octets (AC:L is reasonable), and a stack overwrite of attacker-controlled bytes plausibly yields RCE (C:H/I:H/A:H). The vector is Adjacent (AV:A), not Network - exploitation requires Bluetooth radio range, which meaningfully limits mass/remote exploitation. No EPSS score, KEV listing, or public POC was provided: exploitation status is 'no public exploit identified at time of analysis,' so there is no evidence of active exploitation. The practical risk is further gated by a non-default build/runtime configuration (CONFIG_BT_MESH_OD_PRIV_PROXY_SRV enabled, GATT proxy disabled, On-Demand Private Proxy enabled, node eligible to be solicited). Net: a real, patch-now bug for affected mesh deployments, but not an internet-wide emergency - the adjacency requirement and narrow config profile make it closer to a targeted/proximity threat than a wormable one. RCE via this overflow is described as 'plausible' rather than demonstrated; reliable DoS is the confirmed minimum impact.

Exploit ScenarioDerived

An attacker within Bluetooth radio range of a Zephyr node that has On-Demand Private Proxy Server enabled broadcasts a non-connectable advertisement carrying a crafted Mesh Proxy Solicitation, appending extra AD structures or padding so the remaining buffer length exceeds 17 octets. When the solicitation handler copies the oversized PDU into the fixed 17-byte stack buffer, it overwrites adjacent stack memory with attacker-controlled bytes, causing at minimum a reliable crash (DoS) and plausibly remote code execution. No pairing, bonding, provisioning, or key material is required; no public exploit code was identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 07, 2026

A stack-based buffer overflow in Zephyr's Bluetooth Mesh On-Demand Private Proxy solicitation handler lets any BLE device within radio range overwrite a target node's stack with attacker-controlled bytes by sending a non-connectable advertisement carrying an oversized mesh Proxy Solicitation. Exploitation requires no pairing, bonding, provisioning, or key material because the vulnerable copy happens before decryption, but it is limited to nodes built with CONFIG_BT_MESH_OD_PRIV_PROXY_SRV that are currently eligible to be solicited (GATT Proxy disabled, On-Demand Private Proxy enabled) and physically within BLE range (CVSS 8.8, AV:A/PR:N/C:H/I:H/A:H, unauthenticated). Impact ranges from a reliable remote denial of service to plausible remote code execution; no public exploit code or confirmed active exploitation (CISA KEV) was identified at time of analysis, and a vendor fix is available.

RemediationAI

Apply the vendor patch: the upstream fix trims buf->len to the fixed 17-octet Solicitation PDU length in bt_mesh_sol_recv() before sol_pdu_decrypt() runs, so update to a Zephyr revision containing commit 4416ad13677259d180f35ce44338578694e48184 or later, per advisory GHSA-x37p-38wq-cgwj. Where the patch cannot be deployed immediately, the most effective compensating control is to rebuild without CONFIG_BT_MESH_OD_PRIV_PROXY_SRV, which removes the vulnerable code path entirely - the trade-off is loss of the On-Demand Private Proxy feature for that node. Alternatively, keep the GATT Proxy enabled so the node is never in the solicitable state that the buggy handler serves; this avoids the vulnerable code but changes provisioning and proxy behavior and may break deployments that rely on On-Demand Private Proxy toggling. Because the attack vector is unauthenticated raw BLE advertising (AV:A, PR:N), credential-based controls are ineffective; physical/RF controls such as reducing node transmit range, site RF containment, and BLE monitoring for anomalous non-connectable advertisements carrying Solicitation Service Data can only reduce likelihood, not eliminate the flaw. Note that only a subset of affected nodes is exploitable at any given time, so prioritizing patched firmware rollouts to devices that use On-Demand Private Proxy with GATT Proxy disabled gives the best risk reduction per unit of effort.

Affected VersionsENISA

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

The flaw is a classic CWE-121 stack-based buffer overflow in Zephyr's Bluetooth Mesh stack (subsys/bluetooth/mesh/solicitation.c). In sol_pdu_decrypt(), the output buffer is declared as NET_BUF_SIMPLE(17) on the stack, and the received PDU is copied into it with net_buf_simple_add_mem(out, in->data, in->len). net_buf_simple_add() only enforces available tailroom via __ASSERT_NO_MSG, which is compiled out of production builds, so whenever in->len exceeds 17 the underlying memcpy writes past the 17-byte stack region. The oversized length originates upstream in the BLE scan path: bt_mesh_scan_cb() is registered directly as the raw, unauthenticated scan callback, and subsys/bluetooth/mesh/adv.c calls net_buf_simple_restore() before dispatching to bt_mesh_sol_recv(). This leaves buf->len covering the entire remaining advertising payload instead of just the Solicitation Service Data, so after the parser consumes the Service Data AD and the Identification Type byte, buf->len equals the 17-octet Network PDU plus any trailing advertising bytes or AD structures an attacker appends. Prior to the fix only a minimum-length check existed, and because the copy occurs before any decryption or authentication, no mesh keys are needed to trigger the overflow. The repair trims buf->len to the specification-mandated 17 octets (dropping the PDU if fewer remain) before decryption, restoring the invariant that the fixed-size stack buffer can never be overrun.

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

Over-the-air BLE advertising gives AV:A; trivial padding to exceed 17 octets is AC:L; pre-decryption copy needs no keys so PR:N/UI:N; attacker-controlled stack overwrite plausibly yields full C:H/I:H/A:H.

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

DescriptionCVE.org

The Bluetooth Mesh On-Demand Private Proxy solicitation handler in subsys/bluetooth/mesh/solicitation.c copies a received Solicitation PDU into a fixed 17-byte stack buffer without bounding the source length. In sol_pdu_decrypt(), out is allocated as NET_BUF_SIMPLE(17) and then filled with net_buf_simple_add_mem(out, in->data, in->len); net_buf_simple_add() guards its tailroom only with __ASSERT_NO_MSG, which is compiled out in production builds, so when in->len > 17 the underlying memcpy writes attacker-controlled bytes past the 17-byte stack buffer. The copy occurs before any decryption or authentication, so no key material is required to trigger it.

The oversized length arises because the mesh scan callback in subsys/bluetooth/mesh/adv.c calls net_buf_simple_restore() before dispatching to bt_mesh_sol_recv(), leaving buf->len covering the entire remaining advertising payload rather than just the Solicitation Service Data. After the parser locates the Service Data AD and consumes the Identification Type byte, the remaining buf->len is the 17-octet Network PDU plus any trailing advertising bytes, and prior to this fix there was no maximum-length check (only a minimum). An attacker can therefore append extra AD structures or padding after the Solicitation Service Data to make buf->len exceed 17.

bt_mesh_scan_cb() is registered directly as the BLE scan callback, so buf is raw, unauthenticated advertising data received over the air. Any device in radio range can send a non-connectable advertisement carrying a crafted mesh Proxy Solicitation to a node that has CONFIG_BT_MESH_OD_PRIV_PROXY_SRV enabled and is currently eligible to be solicited (GATT proxy disabled, On-Demand Private Proxy enabled), with no pairing, bonding, or provisioning. The result is an attacker-controlled stack overwrite - plausibly leading to remote code execution and at minimum a reliable remote denial of service. The fix trims buf->len to the spec-fixed 17 octets (dropping the PDU if fewer remain) before decryption.

Technical POC Analysis

Stack-based buffer overflow (CWE-121; the advisory also tags CWE-787) in the Bluetooth Mesh On-Demand Private Proxy solicitation receive path.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A pre-authentication stack buffer overflow in the Zephyr real-time operating system's Bluetooth Mesh On-Demand Private Proxy service allows any BLE device physically within radio range to corrupt memory on affected mesh nodes without pairing, bonding, or keys. Only nodes built with CONFIG_BT_MESH_OD_PRIV_PROXY_SRV and currently in a solicitable state are exposed, but for those devices the outcome spans reliable remote denial of service to plausible remote code execution. Leadership should care because this affects deployed embedded and IoT fleets in physically accessible environments, where remediation requires coordinated firmware updates rather than routine IT patching. No public exploit code or confirmed active exploitation has been identified at time of analysis, and a vendor fix is available.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Medium
Zephyr is a popular embedded RTOS, but the vulnerable BT Mesh proxy config is niche
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

A stack-based buffer overflow occurs when a program writes more data to a buffer located on the stack than it was allocated to hold.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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