CVE-2026-10647
Last modified
CVE-2026-10647 is a medium-severity vulnerability rated 5.3/10 on the CVSS scale. 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. EPSS estimates a 0.21% chance of exploitation in the next 30 days.
Description
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.
Metrics
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions |
|---|---|---|
| Zephyrproject | Zephyr | >= 4.1.0, < 4.5.0 |
References
Timeline
- Published
- Last Modified
- Status
- Modified
Frequently Asked Questions
What is CVE-2026-10647?
How severe is CVE-2026-10647?
How do I fix CVE-2026-10647?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-10641Zephyr's Bluetooth Classic Hands-Free Profile (HFP) Hands-Fr…7.1
- CVE-2026-10642The Zephyr PL011 UART driver (drivers/serial/uart_pl011.c) c…4.6
- CVE-2026-10643Zephyr's IP socket recvmsg() implementation (subsys/net/lib/…7.8
- CVE-2026-10644The Microchip SERCOM-G1 UART driver (drivers/serial/uart_mch…3.1
- CVE-2026-10645The Zephyr ext2 filesystem driver (subsys/fs/ext2) trusted t…5.5
- CVE-2026-10646Zephyr's BSD-sockets getaddrinfo() implementation (subsys/ne…7.4
- CVE-2026-10648mcumgr_serial_process_frag() in subsys/mgmt/mcumgr/transport…5.5
- CVE-2026-10649A flaw was found in Pacemaker. An unauthenticated remote att…8.6
- CVE-2026-1065The Form Maker by 10Web plugin for WordPress is vulnerable t…7.2
- CVE-2026-10650A flaw has been found in warmcat libwebsockets up to 4.5.8. …5.5
- CVE-2026-10651bt_sdp_parse_attribute() in subsys/bluetooth/host/classic/sd…6.5
- CVE-2026-10652Zephyr's DNS resolver (subsys/net/lib/dns) parses resource r…7.4
Are you affected by CVE-2026-10647?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
