Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessApproach within Bluetooth range
-
DeliveryBroadcast oversized extended advertising / send DLE ACL fragment
-
ExploitOverflow 64-byte USB TX buffer slot via unchecked net_buf_add_mem
-
ExecutionCorrupt adjacent static pool memory
-
ImpactCode execution (CONFIG_ASSERT=n) or panic/DoS
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a Zephyr device built with the new USB device_next stack's Bluetooth HCI transport class (subsys/usb/device_next/class/bt_hci.c) and the local controller in raw HCI mode (CONFIG_BT_HCI_RAW). The over-the-air and host-init triggers apply to full-speed-only builds from v4.2.0 onward, where USBD_MAX_BULK_MPS is 64 bytes; the overflow magnitude depends on CONFIG_BT_BUF_EVT_RX_SIZE / CONFIG_BT_BUF_ACL_RX_SIZE being larger than 64 (default EVT_RX_SIZE 68 already yields a 70-byte event). Remote attacker paths need only Bluetooth range with no authentication and no user interaction: a connected peer negotiating Data Length Extension sends ACL fragments up to CONFIG_BT_CTLR_DATA_LENGTH_MAX, or an attacker merely broadcasting LE Extended Advertising data reaches the same copy via Extended Advertising Report events. The stock full-speed-only configuration overflows by six bytes on every host initialization (mandatory 70-byte Read Supported Commands event) with no radio traffic at all. Limiting factors: code execution requires CONFIG_ASSERT=n (the usual production setting) AND no memory protection between subsystems - with CONFIG_ASSERT=y or CONFIG_NET_BUF_HARDENING=y the result is an assertion panic (denial of service) rather than silent corruption; pre-v4.2.0 and high-speed-capable builds use a 512-byte slot and need a controller-to-host ACL packet longer than 508 bytes (reachable only via an external BR/EDR controller with CONFIG_BT_BUF_ACL_RX_SIZE raised to 508+). |
| Impact | Signals are mostly consistent and point to an elevated-but-not-emergency priority. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N, C:H/I:H/A:H, base 8.8) describes an unauthenticated adjacent (Bluetooth-range) out-of-bounds write with high impact, and the vuln.today Decision label is 'this_week' - serious, but below act_now/emergency. KEV status is NO (not CISA-listed), EPSS is not supplied, and no PoC or exploit reference is present (only the patch commit and the GHSA advisory), so there is no evidence of active or imminent exploitation. The impact signal is nuanced and should temper the raw 8.8: arbitrary code execution only materializes on builds with CONFIG_ASSERT=n (common in production) AND no memory protection between subsystems; on builds with assertions enabled the same overflow triggers a panic, i.e. a remotely triggerable denial of service only, so C:H/I:H is a worst-case-configuration rating rather than a universal outcome. Conversely, the availability/corruption surface is unusually easy to reach: the advisory states the stock full-speed-only configuration already overflows the 64-byte slot by six bytes on every host initialization via the 70-byte Read Supported Commands event - with no radio traffic and no attacker at all - which raises reliability/DoS risk even absent an adversary. Net: a genuine high-severity memory-safety flaw worth prompt patching on affected embedded builds, but not a widely-exploited internet-facing emergency; the adjacency requirement (Bluetooth range) and the narrow affected build configuration limit real-world blast radius. |
| Exploit ScenarioDerived | An unauthenticated attacker within Bluetooth radio range of a Zephyr device running the controller in raw HCI mode broadcasts oversized LE Extended Advertising data (or connects and negotiates Data Length Extension to send large ACL fragments); the controller-to-host packet exceeds the 64-byte USB bulk endpoint slot and net_buf_add_mem() copies past the end of the bt_hci_ep_pool with attacker-chosen bytes. On production builds (CONFIG_ASSERT=n) without inter-subsystem memory protection this corrupts adjacent static memory and can lead to code execution; on assertion-enabled builds it panics (DoS). No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
An out-of-bounds write in Zephyr's USB device_next Bluetooth HCI transport class (subsys/usb/device_next/class/bt_hci.c) allows memory adjacent to a statically allocated USB transfer pool to be overwritten with attacker-influenced bytes. Zephyr releases from 3.3.0 through 4.4.2 are affected via the CPE cpe:2.3:a:zephyrproject:zephyr, with the remotely reachable triggers applying to full-speed-only builds from v4.2.0 onward where the endpoint pool slot is 64 bytes; an attacker within Bluetooth range needs no authentication and no user interaction, and in the stock full-speed-only configuration the mandatory 70-byte Read Supported Commands event already overruns the slot by six bytes during ordinary host initialization. Silent corruption with potential code execution requires CONFIG_ASSERT=n and no memory protection between subsystems, while assertion-enabled builds panic instead, giving a remotely triggerable denial of service. No public exploit code or CISA KEV entry was identified at time of analysis, and no EPSS score was supplied; the vendor fix is merged upstream but the release containing it is projected rather than shipped.
RemediationAI
The upstream fix is commit 0419defd2391652edc27689d206fcd9c48439d4a on main (PR #116173), merged to the v4.4-branch (#117504) and v4.3-branch (#117505), with the v3.7-branch PR #117530 marked superseded; the advisory projects Zephyr 4.5.0 as the first release containing the fix, so confirm the patched version against the actual release and upgrade or cherry-pick commit 0419defd2391 into your tree in the interim. Where updating is not immediately possible, the compensating controls are configuration changes with real trade-offs: enabling CONFIG_NET_BUF_HARDENING=y (or CONFIG_ASSERT=y) converts the silent out-of-bounds copy into an assertion failure, eliminating memory corruption and potential code execution at the cost of a remotely triggerable panic and denial of service; disabling CONFIG_BT_HCI_RAW where the raw HCI bridge is not actually needed removes the over-the-air path but breaks that transport use case; and keeping CONFIG_BT_BUF_EVT_RX_SIZE and CONFIG_BT_BUF_ACL_RX_SIZE as small as the controller tolerates reduces the overflow magnitude but cannot eliminate it, since the default 68-byte EVT size still produces the 70-byte event that overflows a 64-byte slot at initialization. Full details are in advisory GHSA-w5px-w97v-c3hj.
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-787 out-of-bounds write rooted in a mismatch between two buffer-sizing regimes. bt_hci_tx_sync_in() obtains its transmit buffer from bt_hci_ep_pool, a pool defined via UDC_BUF_POOL_DEFINE / USB_BUF_POOL_DEFINE whose slots are only USBD_MAX_BULK_MPS bytes (64 on full-speed-only builds) and which expands to a static, potentially nocache array, then copies the whole controller-to-host packet with net_buf_add_mem(buf, bt_buf->data, bt_buf->len) without a length check. The source buffers are sized by the Bluetooth host configuration instead: CONFIG_BT_BUF_EVT_RX_SIZE (default 68, commonly raised to 255) and CONFIG_BT_BUF_ACL_RX_SIZE feed BT_BUF_RX_SIZE = MAX(ACL/EVT/ISO RX sizes), so copied lengths routinely exceed the USB slot. net_buf_add_mem() validates tailroom only through an assertion unless CONFIG_NET_BUF_HARDENING is enabled (default n), so with CONFIG_ASSERT=n the memcpy proceeds past the slot into adjacent slots and whatever follows the static pool. The introduction history matters for exploitability: the original transport layer in v3.3.0 used a 512-byte pool, and a v4.2.0 code-size change shrank it to USBD_MAX_BULK_MPS; pre-v4.2.0 and high-speed-capable builds therefore need a controller-to-host ACL packet longer than 508 bytes, which is only reachable through an external BR/EDR controller behind the HCI raw bridge with CONFIG_BT_BUF_ACL_RX_SIZE raised to 508 or more. With CONFIG_BT_HCI_RAW the local controller feeds raw HCI into the host pool, so LE Extended Advertising Report events (fragmented only to CONFIG_BT_BUF_EVT_RX_SIZE) and Data Length Extension ACL fragments up to CONFIG_BT_CTLR_DATA_LENGTH_MAX carry attacker-chosen bytes over the air. The merged fix adds a separate bt_hci_tx_pool sized MAX(BT_BUF_ACL_RX_SIZE, BT_BUF_EVT_RX_SIZE) for the controller-to-host direction and leaves the host-to-device pool at the endpoint packet size, a path already tailroom-checked during reassembly. Exact versions affected by the remote triggers versus only by a large external-controller ACL packet, and any specific build that does not set raw HCI mode, are unverified from the available sources beyond what the advisory documents.
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:H/I:H/A:H
Over-the-air Bluetooth-range trigger gives AV:A, an unauthenticated peer or broadcaster means PR:N/UI:N with AC:L, and the worst-case unchecked OOB write yields C:H/I:H/A:H on a single system (S:U).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The Bluetooth HCI USB transport class of the new USB device stack, subsys/usb/device_next/class/bt_hci.c, copies every controller-to-host HCI packet into a USB transfer buffer before enqueuing it on an endpoint. bt_hci_tx_sync_in() allocated that buffer from bt_hci_ep_pool, a fixed pool whose slots are only USBD_MAX_BULK_MPS bytes (64 on full-speed-only builds), and then performed net_buf_add_mem(buf, bt_buf->data, bt_buf->len) with no length check. HCI event and ACL buffers are sized by CONFIG_BT_BUF_EVT_RX_SIZE and CONFIG_BT_BUF_ACL_RX_SIZE and can be far larger, so the copy runs past the end of the 64-byte slot into the adjacent slots and into whatever follows the statically allocated pool.
The device runs the local Bluetooth controller in raw HCI mode (CONFIG_BT_HCI_RAW), so the oversized packets originate over the air. With the HCI buffer sizes recommended for full-featured controllers, an unauthenticated attacker within Bluetooth range can supply the overflowing bytes: a connected peer that negotiates Data Length Extension can send ACL fragments up to CONFIG_BT_CTLR_DATA_LENGTH_MAX bytes, and an attacker that merely broadcasts extended advertising data reaches the same path through LE Extended Advertising Report events, which the controller fragments only to CONFIG_BT_BUF_EVT_RX_SIZE. In the stock configuration the overflow is already reached without any radio traffic: the mandatory Read Supported Commands command-complete event is 70 bytes and overruns the 64-byte slot by six bytes on every host initialization.
Because net_buf_add_mem() validates tailroom only through an assertion unless CONFIG_NET_BUF_HARDENING is enabled, builds with CONFIG_ASSERT=n - the usual production setting - silently corrupt memory adjacent to the USB buffer pool with attacker-chosen contents, which on a target without memory protection between subsystems can lead to arbitrary code execution. Builds with assertions enabled fail the assertion instead and panic, giving a remotely triggerable denial of service. The fix introduces a separate bt_hci_tx_pool sized to MAX(BT_BUF_ACL_RX_SIZE, BT_BUF_EVT_RX_SIZE) for the controller-to-host direction while leaving the host-to-device pool at the endpoint packet size, which is already bounds-checked during reassembly.
Technical POC Analysis
CWE-787 (out-of-bounds write) in subsys/usb/devicenext/class/bthci.c, function bthcitxsyncin().
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity memory corruption vulnerability in Zephyr's Bluetooth HCI over USB implementation affects all releases from 3.3.0 through 4.4.2, enabling unauthenticated attackers within Bluetooth range to overwrite memory adjacent to a statically allocated USB transfer pool. In default full-speed-only builds from v4.2.0 onward, remote exploitation occurs during ordinary host initialization, causing either silent memory corruption with potential code execution or a remotely triggerable denial of service, impacting the integrity and availability of affected devices. Leadership should prioritize remediation given the low attack complexity, no required privileges, and broad exposure of Zephyr-based products in the field.
Apply vendor patch.
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
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.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
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.
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-109145
NVD
CVE.org
EPSS
GitHub
Exploit-DB