Zephyr RTOS
CVE-2026-10656
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain physical USB port access
-
DeliveryConnect programmable USB host to target device
-
ExploitInitiate EP0 control transfer
-
InstallSend new SETUP packet to abort transfer (legal USB behavior)
-
C2EP0 FIFO drained before driver thread processes stale XFER_DONE event
-
Executenet_buf_add(NULL) triggers near-NULL pointer dereference
-
ImpactDevice crash and reset
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Physical USB bus access is the sole prerequisite: the attacker must be the USB host connected to the target device's USB port. The target must be running Zephyr v4.4.0 or a later unpatched build and must be built for hardware using the MAX32xxx USB device controller (DTS compatible string adi_max32_usbhs). Exploitation requires initiating an EP0 control transfer and then issuing a new SETUP packet before the driver thread processes the completion event - this is legal USB behavior achievable with any programmable USB host adapter or a Linux host with libusb/gadget tools. No authentication is required because the attacker operates as the USB host, not as a software-layer principal. Exploitation is bounded by: (1) physical USB port access only - no network-based attack path exists; (2) the specific MAX32xxx hardware family - devices using other Zephyr USB UDC drivers are unaffected; (3) impact limited strictly to device crash/reset with no code execution or data exfiltration possible. |
| Impact | The CVSS 3.1 vector CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (score 4.6, Medium) accurately characterizes this as a physical-access-only denial-of-service issue. AV:P is the dominant risk limiter: an attacker must have physical USB bus access to the target device, which eliminates the vast majority of remote threat actors. AC:L and PR:N reflect that once physical access is obtained, no authentication or special configuration is needed - sending a SETUP packet is standard USB behavior. Impact is constrained entirely to availability (A:H); there is no confidentiality or integrity impact, and scope is unchanged (S:U), meaning the crash is contained to the affected device. No EPSS data was available in the input; given the physical access requirement and niche hardware dependency, real-world exploitation probability would be expected to be low. The vulnerability is not listed in CISA KEV and no POC code has been identified, further supporting a lower operational priority. This is a genuine risk for embedded product manufacturers shipping devices with MAX32xxx USB controllers on Zephyr v4.4.0, particularly in contexts where the USB port is exposed to untrusted hosts (public kiosks, shared lab equipment, field-deployed sensors). For those specific deployments it warrants patching; for organizations with no MAX32xxx hardware, it is irrelevant. |
| Exploit ScenarioDerived | An attacker with physical access to a device running Zephyr v4.4.0 on MAX32xxx hardware connects a programmable USB host (such as a Facedancer, GreatFET, or even a Linux host with raw USB gadget tools) and initiates an EP0 control transfer to the target device. Before the device driver thread processes the completion event, the attacker sends a new SETUP packet - a valid USB protocol action - which causes udc_setup_received() to drain the EP0 FIFOs, leaving udc_buf_get() returning NULL when the stale XFER_OUT_DONE event is finally processed, triggering net_buf_add(NULL, ...) and crashing the device. No public proof-of-concept code has been identified at time of analysis, but the triggering sequence requires only standard USB host functionality. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 05, 2026
NULL pointer dereference in the Zephyr RTOS MAX32xxx USB device controller driver (udc_max32.c) crashes devices running Zephyr v4.4.0 when a physically connected USB host aborts an in-flight EP0 control transfer by sending a new SETUP packet - a completely legal USB protocol action. The race condition between interrupt-queued transfer-completion events and asynchronous FIFO draining by the driver thread causes net_buf_add(NULL, ...) when udc_buf_get() returns NULL on an empty FIFO, producing a near-NULL pointer dereference and device fault. No active exploitation has been confirmed (not in CISA KEV), and no public proof-of-concept code has been identified at time of analysis; real-world risk is constrained by the physical access prerequisite and the specific MAX32xxx hardware dependency.
RemediationAI
Apply the upstream Zephyr fix available at commit a0d8f786559355fb3b38e34799e1ae491ba9545c (https://github.com/zephyrproject-rtos/zephyr/commit/a0d8f786559355fb3b38e34799e1ae491ba9545c), which adds NULL-buffer checks in both udc_event_xfer_out_done() and the IN-done handler that return early with UDC_EVT_ERROR/-ENOBUFS when udc_buf_get() returns NULL. A specific patched release version is not independently confirmed from the available references - the fix is available as an upstream commit, so downstream integrators and SDK vendors should verify when the fix is included in a tagged Zephyr release via the security advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-58p9-6mjq-rf2m. As a compensating control where patching is not immediately possible, restricting USB port access to trusted hosts (physical port locks, USB host authentication dongles, or disabling the USB device role at the application layer if not functionally required) eliminates the attack vector entirely without software trade-offs. Disabling the USB interface removes all USB-dependent functionality, which may be unacceptable in production.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The defect resides in drivers/usb/udc/udc_max32.c, the Zephyr USB Device Controller driver for Analog Devices (formerly Maxim) MAX32xxx microcontrollers (DTS compatible string adi_max32_usbhs). CWE-476 (NULL Pointer Dereference) captures the root cause: udc_buf_get(ep_cfg) returns NULL when the endpoint FIFO is empty, and the return value is passed directly to net_buf_add() without a NULL guard. The architectural vulnerability stems from Zephyr's split interrupt/thread model: transfer-completion events (XFER_OUT_DONE, XFER_IN_DONE) are queued in interrupt context but processed asynchronously by the driver thread. During this window, the EP0 OUT/IN FIFOs can be legitimately drained by udc_setup_received() - which clears both FIFOs on any new SETUP packet - or by dequeue/disable/purge paths. Because USB hosts are permitted by the USB specification to send a new SETUP packet at any time to abort a pending control transfer, the triggering condition is achievable through standards-compliant host behavior without any exploit-specific tooling. The CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* with a wildcard version reflects that the flaw was introduced at v4.4.0 when the driver was first merged.
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:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Physical USB bus access required (AV:P); attacker acts as USB host needing no credentials (PR:N); impact is crash only with no confidentiality or integrity effect (A:H, C:N, I:N).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The MAX32xxx USB device controller driver (drivers/usb/udc/udc_max32.c, compatible adi_max32_usbhs) dereferenced an endpoint buffer in its OUT and IN transfer-completion handlers without checking it for NULL. udc_event_xfer_out_done() called net_buf_add(buf, ep_request->actlen) immediately after buf = udc_buf_get(ep_cfg), where udc_buf_get() returns NULL when the endpoint FIFO is empty. A transfer-completion event is queued from interrupt context and processed asynchronously by the driver thread; between queuing and processing, the endpoint FIFO can be drained by host-controlled control flow - in particular udc_setup_received() drains the EP0 OUT/IN FIFOs whenever a new SETUP packet arrives, and dequeue/disable/purge paths drain it likewise. A USB host that aborts an in-flight EP0 control transfer with a new SETUP packet (legal USB behavior) can therefore cause a stale XFER_OUT_DONE event to be processed against an empty FIFO, producing net_buf_add(NULL, ...), a near-NULL pointer dereference that faults and crashes the device. No authentication is required; the attacker is the USB host the device is connected to (physical bus access). Impact is denial of service (device crash). The defect was introduced when the MAX32 UDC driver was added and shipped in Zephyr v4.4.0. The fix adds NULL-buffer checks that return early with UDC_EVT_ERROR/-ENOBUFS in both the OUT-done and IN-done handlers.
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 null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)CVE.org
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
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB