Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconGain physical USB port access
-
DeliveryConnect rogue USB device with controllable line state
-
ExploitFirst disconnect fires UHC_EVT_DEV_REMOVED; usbh_device_disconnect() frees slab, ctx->root not cleared
-
InstallBounce triggers second UHC_EVT_DEV_REMOVED (no debounce in uhc_max3421e/uhc_mcux_common)
-
C2dev_removed_handler() dereferences dangling ctx->root
-
ExecuteMutex locked inside freed object; k_mem_slab_free() called twice
-
ImpactKernel crash or live slab object corrupted
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
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 | Exploitation requires all three of the following: (1) physical USB port access to the target device, or control of a USB device capable of programmatically bouncing its connection state (e.g., a malicious USB gadget toggling D+/D- line state); (2) the target Zephyr firmware must be compiled with CONFIG_USB_HOST_STACK=y, an experimental Kconfig option that is disabled by default; and (3) the Zephyr version must be 4.4.0 or later, as the vulnerable connect/disconnect refactor was introduced in that release. Limiting factors are significant: the experimental USB host stack is not present in default Zephyr builds, so the affected population is a narrow subset of an already-niche RTOS ecosystem; the attack vector is strictly physical (AV:P per CVSS), precluding any remote or network-based exploitation; and no system account credentials or elevated software privileges are needed - the attack surface is entirely at the hardware-interface layer. There is no user interaction required once physical access is established. |
| Impact | CVSS 6.1 (Medium) with AV:P accurately reflects the physical-access requirement, which is the primary risk-limiting factor - remote or network exploitation is not possible. EPSS data is not available in the provided intelligence; no KEV listing and no public proof-of-concept code are confirmed, so this is no confirmed active exploitation scenario. The high Integrity and Availability sub-scores (both H) are warranted: in constrained embedded environments, slab memory corruption can yield stronger exploit primitives than on general-purpose OSes, potentially escalating beyond a simple crash. However, the experimental nature of CONFIG_USB_HOST_STACK - disabled by default - means the vulnerable population is a narrow subset of an already-niche RTOS ecosystem. Real-world priority is low for most Zephyr users but elevated for any deployment with USB host support enabled in physically accessible environments (industrial kiosks, public-facing IoT controllers, USB charging aggregators). No conflicting signals exist in the available data: CVSS vector, description, and tags (Use After Free, Memory Corruption, Denial Of Service) are mutually consistent. |
| Exploit ScenarioDerived | An attacker with physical access to a Zephyr-based device (such as an industrial IoT controller or USB hub aggregator) built with CONFIG_USB_HOST_STACK enabled connects a purpose-built rogue USB device capable of rapidly toggling its D+/D- line state. The attacker disconnects the device, which causes usbh_device_disconnect() to free the usb_device slab while leaving ctx->root dangling; a near-immediate reconnect-and-disconnect bounce causes the debounce-free UHC driver to fire a second UHC_EVT_DEV_REMOVED, re-entering the handler with the stale pointer and triggering the use-after-free and double-free. No public proof-of-concept code is known at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 12, 2026
Use-after-free and double-free in Zephyr RTOS's experimental USB host stack (CONFIG_USB_HOST_STACK, introduced in v4.4.0) allows an attacker with physical USB access to crash the target device or corrupt live kernel slab objects by bouncing a USB device connection to trigger a second removal event after the slab has already been freed. The flaw exists because usbh_device_disconnect() frees the root usb_device slab object without clearing the cached ctx->root pointer, and UHC controller drivers (uhc_max3421e, uhc_mcux_common) emit UHC_EVT_DEV_REMOVED directly from hardware line-state with no debounce or re-entry guard. No public exploit identified at time of analysis, and no CISA KEV listing; the physical-access prerequisite substantially constrains the realistic attacker population.
RemediationAI
Apply the upstream fix available in commit 4b87a8f161a44cb19505fa97db7cf72f64d49165 (https://github.com/zephyrproject-rtos/zephyr/commit/4b87a8f161a44cb19505fa97db7cf72f64d49165), which resolves the vulnerability by clearing ctx->root in usbh_device_disconnect() before calling k_mem_slab_free(), breaking the dangling-pointer re-entry path. A specific tagged release version incorporating this commit has not been independently confirmed from available data - monitor the Zephyr release notes and the GHSA advisory (https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-26q8-xjq3-f5p6) for the first tagged release that includes this commit. As a compensating control for devices that cannot be immediately patched, disable CONFIG_USB_HOST_STACK in the Zephyr build configuration if USB host functionality is not required; since this feature is experimental and off by default, disabling it eliminates the vulnerable code path entirely with no functional impact on non-USB-host workloads. For deployed hardware where USB host is necessary and patching is delayed, restrict physical access to USB ports via tamper-evident covers or hardware-level port disabling, accepting the trade-off of reduced device serviceability.
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
Zephyr RTOS is an open-source real-time operating system targeting constrained embedded and IoT devices. The affected component is the experimental USB host stack (CONFIG_USB_HOST_STACK), a Kconfig-guarded subsystem that is disabled by default. The root cause maps to CWE-416 (Use After Free): usbh_device_disconnect() in subsys/usb/host/usbh_device.c calls k_mem_slab_free() on the root usb_device slab object but leaves ctx->root pointing to the now-freed memory. The companion issue is a double-free: dev_removed_handler() in subsys/usb/host/usbh_core.c uses ctx->root as its sole decision signal, checking only that it is non-NULL before re-entering usbh_device_disconnect(). UHC controller drivers such as uhc_max3421e and uhc_mcux_common synthesize UHC_EVT_DEV_REMOVED directly from physical USB bus line state without debounce logic or a state guard, meaning any physical connect/disconnect bounce can produce a second event. If the freed slab block is reallocated to a new device between the two events, the second re-entry corrupts a live object rather than the freed one. CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covers all Zephyr versions per NVD, though the flaw was introduced in v4.4.0 by the connect/disconnect refactor.
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:P/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
AV:P because exploitation strictly requires physical USB access; PR:N since no software credentials are needed to manipulate hardware bus state; C:N as no data is disclosed.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
In Zephyr's experimental USB host stack (CONFIG_USB_HOST_STACK), usbh_device_disconnect() (subsys/usb/host/usbh_device.c) freed the root usb_device slab object without clearing the cached pointer ctx->root. The bus removal handler dev_removed_handler() (subsys/usb/host/usbh_core.c) decides what to tear down solely from ctx->root, checking only that it is non-NULL.
Because UHC controller drivers (e.g. uhc_max3421e, uhc_mcux_common) synthesize UHC_EVT_DEV_REMOVED directly from physical bus line state with no debounce or state guard, an attacker with physical USB access (or a rogue device that bounces its connection) can deliver a second device-removed event after a root device disconnect. The handler then re-enters usbh_device_disconnect() with the dangling pointer, locking a mutex inside the freed object (use-after-free), removing the freed node from the device list, and calling k_mem_slab_free() on the already-freed block (double-free). If the slab block has been reissued to a newly attached device in between, this corrupts a live object.
Impact is denial of service (crash) and memory corruption; the attack vector is physical/local. The flaw was introduced in v4.4.0 by the connect/disconnect refactor and is fixed by clearing ctx->root in usbh_device_disconnect() before freeing.
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.
Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.
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.
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-43240
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB