CVE-2026-10647: Deadlock denial of service in USB CDC-NCM device class on TX enqueue failure

Published Jun 29, 2026
·
Updated

The USB CDC-NCM device class (subsys/usb/devicenext/class/usbdcdcncm.c) ignores the return value of usbdepenqueue() in its ethernet transmit callback cdcncmsend(). When the enqueue fails, the function still calls ksemtake(&data->syncsem, KFOREVER), 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: usbdepenqueue() returns -EPERM whenever the bus is suspended (a standard, persistent host operation), and the underlying udcepenqueue() returns -EPERM/-ENODEV on disconnect, bus reset, or endpoint disable. The cdcncmsend() guard only checks the DATAIFACEENABLED and IFACEUP 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 usbdepenqueue() return value and freeing the buffer before the blocking wait.

Affected Software

2 affected components
Zephyr USB CDC-NCM device class (subsys/usb/device_next/class/usbd_cdc_ncm.c)<=4.4.0
zephyrproject zephyr>=4.1.0<4.5.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Zephyr USB CDC-NCM device class (subsys/usb/device_next/class/usbd_cdc_ncm.c) to a version that resolves this vulnerability.

    Fixed in v4.4.0
  2. Configuration

    In cdc_ncm_send(), check the return value of usbd_ep_enqueue(). If it fails (e.g., -EPERM/-ENODEV), free the buffer before the blocking wait so the TX thread does not deadlock on k_sem_take(&data->sync_sem, K_FOREVER).

    Zephyr USB CDC-NCM (cdc_ncm_send) usbd_ep_enqueue() return-value handling = check return value; if failure then free the transmit buffer and avoid blocking wait
  3. Compensating control

    Prevent or minimize USB bus suspend while the CDC-NCM network interface is active (e.g., disable USB selective/auto-suspend or USB hub power management) so usbd_ep_enqueue() does not return -EPERM due to a suspended bus.

  4. Operational

    If the deadlock condition occurs, recovery is only by reboot, so plan for restart of the Zephyr device when the CDC-NCM TX path becomes stalled after an enqueue failure.

Event History

Jun 29, 2026
CVE Published
via MITRE·09:39 PM
Data Sourced
via MITRE·09:39 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·10:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-10647?

CVE-2026-10647 has a medium severity rating of 5.3.

2

How do I fix CVE-2026-10647?

To fix CVE-2026-10647, update to the latest version of the Zephyr USB CDC-NCM device class that includes the required patch.

3

What type of vulnerability is CVE-2026-10647?

CVE-2026-10647 is a deadlock denial of service vulnerability in the USB CDC-NCM device class.

4

What systems are affected by CVE-2026-10647?

CVE-2026-10647 affects systems using the Zephyr USB CDC-NCM device class within the Zephyr project.

5

What are the potential impacts of CVE-2026-10647?

CVE-2026-10647 can cause a denial of service by leading to a deadlock situation during data transmission.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203
CVE-2026-10647 - Deadlock denial of service in USB CDC-NCM device class on TX enqueue failure - SecAlerts