CVE-2026-85032
Awaiting Analysis Awaiting Analysis - Queue

Race Condition in Zephyr RTOS MCTP USB Subsystem

Vulnerability report for CVE-2026-85032, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-11-03

Last updated on: 2026-11-03

Assigner: Zephyr Project

Description

The MCTP over USB device class in subsys/pmci/mctp/mctp_usb.c splits RX handling across two threads: the system workqueue runs mctp_usb_class_out_work(), which parses host OUT data byte by byte and fills a packet buffer at usb->rx_pkt, while the USB device stack thread runs mctp_usb_class_disable(). The disable handler used k_work_cancel(), which removes a queued work item but returns immediately without waiting for a handler that is already running, and then called mctp_usb_reset_rx_state() to mctp_pktbuf_free() the packet buffer the worker may still be using. Both entry points into mctp_usb_class_disable() are driven by the attached USB host: a SET_CONFIGURATION request and a USB bus reset both reach it via usbd_config_reset() in subsys/usb/device_next/usbd_config.c. A host that streams partial MCTP frames on the bulk OUT endpoint and repeatedly forces a configuration change or bus reset therefore controls both the data being parsed and the moment the teardown runs, and can retry the race indefinitely without credentials or user interaction. If the free lands while the worker holds the pointer, the worker writes host-supplied bytes into freed memory of the dedicated MCTP heap (CONFIG_MCTP_HEAP_SIZE in subsys/pmci/mctp/mctp_memory.c), corrupting recycled buffers or sys_heap free-block metadata; this window requires genuine parallelism, i.e. CONFIG_SMP or a preemptible CONFIG_SYSTEM_WORKQUEUE_PRIORITY. With the default cooperative workqueue the worker can still yield inside mctp_bus_rx() (application callback or a control-message reply blocking in mctp_usb_tx()), after which it resumes and calls mctp_pktbuf_free(usb->rx_pkt) on a pointer the teardown has NULLed, dereferencing NULL and faulting on targets with null-pointer detection. The fix replaces the cancel with k_work_cancel_sync() plus a new struct k_work_sync out_work_sync, so disable waits for the RX worker to finish before draining the FIFO and freeing the packet buffer. The affected code is the MCTP subsystem, which is marked experimental, built only with CONFIG_MCTP_USB.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-11-03
Last Modified
2026-11-03
Generated
2026-11-03
AI Q&A
2026-11-03
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
zephyrproject zephyr 4.4.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-416 The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-85032 is a use-after-free vulnerability in the MCTP over USB binding of Zephyr RTOS. It occurs when a host disables the USB class while the RX parsing thread is still processing data. The disable handler uses a non-blocking cancel to stop the RX worker, then frees the packet buffer the worker may still use. This creates a race condition where the worker writes host-controlled data into freed memory, causing memory corruption or crashes.

Detection Guidance

This vulnerability is specific to Zephyr RTOS systems with MCTP over USB enabled. Detection requires checking Zephyr RTOS versions between 4.4.0 and 4.5.0 with CONFIG_MCTP_USB and CONFIG_SMP or preemptible workqueue enabled. No direct network detection commands exist; inspect system logs for crashes or memory corruption during USB MCTP operations.

Impact Analysis

The vulnerability can lead to memory corruption, denial-of-service, or system crashes. An attacker with physical access could exploit it by sending partial MCTP frames and forcing USB configuration changes or resets. This may allow arbitrary code execution or data leakage in systems using Zephyr RTOS with MCTP over USB enabled.

Compliance Impact

This vulnerability could potentially impact compliance with GDPR and HIPAA by enabling memory corruption or denial-of-service in systems handling sensitive data. A use-after-free flaw may lead to crashes or unauthorized memory access, which could compromise data integrity or availability. However, the vulnerability requires physical access or specific hardware conditions (e.g., USB host control) to exploit, reducing the likelihood of remote breaches. The impact is limited to systems using the affected MCTP over USB implementation in Zephyr RTOS.

Mitigation Strategies
  • Upgrade Zephyr RTOS to a version with the fix (commit 277424084e740da5d61a17f40bea3457fa593acc or later).
  • Disable MCTP over USB if not required by setting CONFIG_MCTP_USB=n in the build configuration.
  • Disable SMP or use a cooperative workqueue if parallelism is not required to reduce race window.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-85032. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart

Security Radar

News mentioning this vulnerability
Loading related security news...