Impact
The Zephyr USB CDC‑NCM device class at 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—generally because the USB host suspends the bus or the device disconnects—the callback still calls k_sem_take(&data->sync_sem, K_FOREVER), blocking on a semaphore that is only signaled during a bulk‑IN transfer completion. Because nothing is enqueued, that completion never occurs, and the calling thread, which is the shared network traffic‑class TX thread, blocks indefinitely. As a result the virtual network interface permanently loses connectivity until the device is rebooted, and egress on other interfaces can stall. There is no memory corruption or information disclosure, and the realistic trigger is a bus suspend that occurs while the interface is active and has traffic to send. The attacker can induce this by having the host hold the bus suspended during transmission, causing a deadlock that requires a reboot to recover. Based on the description, it is inferred that the attack vector involves the USB host suspending the bus while the device is actively transmitting.
Affected Systems
Zephyr Project’s USB CDC‑NCM device class, shipped in releases up through version 4.4.0. The vulnerability exists in the code base defined in subsys/usb/device_next/class/usbd_cdc_ncm.c and is present in all affected firmware that incorporates this driver path.
Risk and Exploitability
The CVSS score of 5.3 indicates moderate severity, and the EPSS score of < 1% coupled with its absence from the KEV catalog suggests a low probability of exploitation. The exploit requires a host capable of suspending the USB bus—such as when the host sleeps, enters selective suspend, or powers off a hub—while the device’s NCM interface is transmitting data. This condition is controllable by the host and could be used by a malicious host to lock the device’s network stack deliberately. Based on the description, it is inferred that the attack vector is a host that can trigger USB bus suspension during active transmission, leading to a deadlock that requires a device reboot to resolve. Given the impact of a shutdown that requires a device reboot, administrators should treat this as a high risk to operational availability.
OpenCVE Enrichment