Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessUSB host initiates bus suspend
-
DeliveryZephyr device has pending egress packet
-
Exploitcdc_ncm_send() passes stale IFACE_UP guard
-
Executionusbd_ep_enqueue() returns -EPERM (suspended)
-
PersistThread blocks on semaphore indefinitely
-
ImpactShared TX thread deadlocks, all device egress halts
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Three conditions must hold simultaneously: (1) the Zephyr |
| Impact | The CVSS 5.3 Medium score accurately reflects the constrained attack surface: AV:A limits exposure to USB-connected or USB-networked adjacency, and AC:H captures the required timing coincidence between active device egress and a host-initiated bus suspend. Impact is purely availability (A:H, C:N, I:N), consistent with the description's explicit statement that there is no memory corruption or information disclosure. No EPSS score was provided and no CISA KEV listing exists, indicating no confirmed or widespread active exploitation. The threat actor in practice is not a malicious party but any standard USB host OS performing routine power management - host sleep, selective suspend, or hub power management are all standard, persistent host operations - making this a reliability defect with a security classification rather than a typical attack-surface vulnerability. Notably, the intelligence tags label this 'Buffer Overflow' and 'Information Disclosure,' which directly contradict the description and the CWE-833 (Deadlock) classification; those tags should be treated as mislabeled metadata and disregarded. The shared TX thread impact amplifies availability consequences in multi-interface Zephyr deployments beyond what the CVSS scope-unchanged rating implies at first glance. |
| Exploit ScenarioDerived | A Zephyr-based IoT or embedded device using USB CDC-NCM for host connectivity is transmitting periodic telemetry or keepalive packets. The host OS enters sleep mode or enables USB selective suspend, triggering a standard bus suspend. The next outbound packet from the Zephyr network stack reaches |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 29, 2026
USB CDC-NCM network driver in Zephyr RTOS through v4.4.0 permanently deadlocks the shared network egress thread when a USB bus suspend coincides with outbound device traffic, requiring a reboot to recover. The defect in cdc_ncm_send() ignores the return value of usbd_ep_enqueue() and unconditionally blocks on a completion semaphore that only the (never-fired) bulk-IN ISR can signal - halting not just CDC-NCM traffic but all egress on other interfaces sharing the TX thread. No public exploit code or active exploitation has been identified; the trigger is routine USB host power management, making this an availability risk for any embedded Zephyr device using USB virtual Ethernet.
RemediationAI
Apply fix commit 255bccc1badd1aa06c6e5ddf5b40de8463b33f02 (https://github.com/zephyrproject-rtos/zephyr/commit/255bccc1badd1aa06c6e5ddf5b40de8463b33f02), which corrects cdc_ncm_send() to check the usbd_ep_enqueue() return value and free the transmit buffer before any blocking semaphore wait, eliminating the deadlock path entirely. The patch is referenced in security advisory GHSA-xcf7-r86m-5q9f (https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xcf7-r86m-5q9f). A specific tagged release incorporating this fix has not been independently confirmed at time of analysis - verify against the Zephyr release changelog after v4.4.0 before targeting a firmware build. As a primary workaround, disabling the CDC-NCM class by removing CONFIG_USB_DEVICE_NETWORK_CDC_NCM from the application Kconfig eliminates the vulnerable code path completely, at the cost of losing USB virtual Ethernet functionality. A secondary workaround is configuring the USB host to disable selective suspend for the Zephyr device (e.g., via udev rules or power management policy on Linux hosts), which prevents the trigger condition; however, this is not universally achievable across host platforms and does not fix the underlying defect.
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 vulnerability resides in Zephyr's device_next USB stack, specifically subsys/usb/device_next/class/usbd_cdc_ncm.c, which implements the USB CDC-NCM (Network Control Model) device class - a virtual Ethernet-over-USB profile. The root cause is CWE-833 (Deadlock): cdc_ncm_send() calls usbd_ep_enqueue() to submit a bulk-IN transfer, then unconditionally calls k_sem_take(&data->sync_sem, K_FOREVER) to await completion. The semaphore is only posted from the bulk-IN transfer-completion ISR callback; when the enqueue fails (returning -EPERM on bus suspend or -ENODEV on disconnect/reset/endpoint disable), no transfer is queued, the ISR never fires, and the calling thread blocks forever. The guard logic inspects DATA_IFACE_ENABLED and IFACE_UP flags but not the USB suspended state, creating a race window: packets arriving during or immediately after a suspend pass the guard, reach the failing enqueue, and deadlock the thread. Because the deadlocked thread is a shared traffic-class TX thread and holds the interface TX lock, egress across all network interfaces on the device stalls. The affected CPE is cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* through v4.4.0.
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:H/PR:N/UI:N/S:U/C:N/I:N/A:H
USB-adjacent trigger (AV:A) with a required timing race (AC:H); no credentials needed from the host side; pure availability impact from permanent deadlock, no data exposure.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The USB CDC-NCM device class (subsys/usb/device_next/class/usbd_cdc_ncm.c) ignores the return value of usbd_ep_enqueue() in its ethernet transmit callback cdc_ncm_send(). When the enqueue fails, the function still calls k_sem_take(&data-sync_sem, K_FOREVER), blocking on a completion semaphore that is only ever signaled from the bulk-IN transfer-completion callback. Because nothing was enqueued, that callback never fires and the calling thread - a shared network traffic-class TX thread - deadlocks permanently while holding the interface TX lock, halting transmission until reboot (and leaking the transmit buffer).
The enqueue fails under conditions controlled by the attached USB host: usbd_ep_enqueue() returns -EPERM whenever the bus is suspended (a standard, persistent host operation), and the underlying udc_ep_enqueue() returns -EPERM/-ENODEV on disconnect, bus reset, or endpoint disable. The cdc_ncm_send() guard only checks the DATA_IFACE_ENABLED and IFACE_UP flags, not the suspended state, so a packet transmitted while the host holds the bus suspended reaches the failing enqueue and deadlocks the TX path.
The realistic trigger is a bus suspend that occurs while the exported network interface is active and has traffic to send - host sleep, USB selective/auto-suspend, or hub power management - after which any device-originated packet deadlocks the path, recoverable only by reboot. The impact is a persistent loss of the virtual network connection between the host's NCM interface and the Zephyr device; because the deadlocked thread is a shared traffic-class TX thread, egress on other network interfaces can stall as well. There is no memory corruption or information disclosure.
The defect was introduced with the CDC-NCM driver and shipped in releases through v4.4.0; it is fixed by checking the usbd_ep_enqueue() return value and freeing the buffer before the blocking wait.
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.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-40235
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB