Skip to main content

Zephyr RTOS CVE-2026-10647

| EUVDEUVD-2026-40235 MEDIUM
Deadlock (CWE-833)
2026-06-29 zephyr
5.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    USB host initiates bus suspend
  2. Delivery
    Zephyr device has pending egress packet
  3. Exploit
    cdc_ncm_send() passes stale IFACE_UP guard
  4. Execution
    usbd_ep_enqueue() returns -EPERM (suspended)
  5. Persist
    Thread blocks on semaphore indefinitely
  6. Impact
    Shared TX thread deadlocks, all device egress halts

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

Three conditions must hold simultaneously: (1) the Zephyr device_next USB stack must be compiled with the CDC-NCM device class enabled, and the network interface must be administratively up (IFACE_UP and DATA_IFACE_ENABLED flags set); (2) the USB host must perform a bus suspend - a standard operation during host sleep, USB selective suspend, or hub power management - causing usbd_ep_enqueue() to return -EPERM; and (3) at least one outbound network packet must arrive at cdc_ncm_send() during or immediately after the suspend event, before the driver's interface flags propagate the suspended state. No authentication, special privileges, or malicious host-side software is required; any USB host OS engaging standard power management satisfies condition (2). Exploitation is impossible without USB connectivity to the Zephyr device, and cannot occur without the CDC-NCM class being enabled in firmware. The deadlock is permanent and unrecoverable without rebooting the Zephyr device; the USB host is not affected.

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 cdc_ncm_send(), passes the IFACE_UP guard (flags not yet updated to reflect suspend), calls usbd_ep_enqueue() which returns -EPERM, then blocks forever on the synchronization semaphore - deadlocking the shared TX thread and halting all device network egress until power-cycled. No exploit code is required; any host OS performing routine power management is sufficient to trigger the condition.

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

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

Alert me

AnalysisAIv1 – 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

Zephyr 4.1.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Vendor (zephyr) PRIMARY 5.3 MEDIUM
AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.3 MEDIUM

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.

3.1 AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:A/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Adjacent
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

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

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche embedded RTOS for IoT, limited enterprise production footprint
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.1%
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

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

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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