Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-68370

CVE-2026-68370: Linux Kernel Race Condition Vulnerability

CVE-2026-68370 is a race condition flaw in Linux kernel's USB gadget dummy_hcd driver that allows concurrent access to shared resources, leading to potential system crashes. This article covers technical details, impact, and fixes.

Published:

CVE-2026-68370 Overview

CVE-2026-68370 is a race condition in the Linux kernel's USB gadget subsystem, specifically in the dummy_hcd driver. The flaw allows concurrent reuse of a shared usb_request structure (dum->fifo_req) during request giveback, corrupting the req->complete function pointer while dummy_timer is invoking it. Exploitation triggers a general protection fault or page fault through an indirect call to a clobbered pointer. The condition was reproduced by syzkaller (extid faf3a6cf579fc65591ca) and has been patched in mainline Linux.

Critical Impact

A local attacker with the ability to interact with the dummy_hcd USB gadget can trigger memory corruption of a live shared object, causing kernel crashes and potentially enabling code execution via the clobbered indirect call target.

Affected Products

  • Linux kernel builds including the dummy_hcd USB gadget driver
  • Stable branches prior to the commits listed in the patch references
  • Systems using USB gadget emulation for testing or virtualization

Discovery Timeline

  • 2026-08-10 - CVE-2026-68370 published to NVD
  • 2026-08-13 - Last updated in NVD database

Technical Details for CVE-2026-68370

Vulnerability Analysis

The dummy_hcd driver embeds a single shared usb_request named dum->fifo_req. The emulated single-request FIFO fast-path in dummy_queue() reuses this structure for small IN transfers by copying the caller's request into it with req->req = *_req and then queuing it. The fast-path treats list_empty(&fifo_req.queue) as the signal that the slot is free.

The completion side, spanning dummy_timer, transfer, nuke, and dummy_dequeue, calls list_del_init(&req->queue) to unlink the request. It then drops the lock and calls usb_gadget_giveback_request() to invoke req->complete(). Because list_del_init() marks fifo_req.queue as empty before the completion callback returns, a concurrent dummy_queue() on another CPU observes the slot as free.

The second CPU reuses fifo_req and executes req->req = *_req, overwriting req->complete while dummy_timer is mid-call. The indirect call then jumps to a clobbered function pointer.

Root Cause

The root cause is a race condition [TOCTOU] between the FIFO slot availability check and the completion callback lifecycle. Because the clobbering write is an in-bounds memcpy on a live shared object, KASAN cannot flag it as a memory safety violation.

Attack Vector

A local user capable of driving USB gadget operations against dummy_hcd can race dummy_queue() against giveback processing. The overwritten req->complete pointer is dereferenced during timer-driven completion, yielding a general protection fault or an attacker-influenced control-flow transfer in kernel context.

No verified public exploit code exists. The condition was reproduced by syzkaller fuzzing.

Detection Methods for CVE-2026-68370

Indicators of Compromise

  • Kernel general protection fault or page fault traces originating in dummy_timer or usb_gadget_giveback_request
  • Unexpected crashes on hosts using dummy_hcd for USB gadget testing or CI fuzzing
  • syzkaller reports referencing extid faf3a6cf579fc65591ca or the dummy_hcd fast-path

Detection Strategies

  • Monitor /var/log/kern.log, dmesg, and journalctl -k for oops traces referencing dummy_hcd, dummy_queue, or dummy_timer
  • Enable kernel lockdep and KCSAN in test environments to surface data races on fifo_req
  • Track loaded kernel modules and flag hosts where dummy_hcd is loaded outside expected test infrastructure

Monitoring Recommendations

  • Ingest kernel logs into a centralized SIEM and alert on repeated general protection fault events in USB gadget code paths
  • Baseline USB gadget module usage across the fleet and investigate anomalies
  • Correlate crash telemetry with user sessions to identify local actors driving the race

How to Mitigate CVE-2026-68370

Immediate Actions Required

  • Apply the upstream Linux kernel patches that introduce the fifo_req_busy bit and the dummy_giveback() helper
  • Unload dummy_hcd on production systems where USB gadget emulation is not required using modprobe -r dummy_hcd
  • Restrict local access on systems that must retain the module loaded

Patch Information

The fix adds a fifo_req_busy bit that covers the shared request's entire lifetime. dummy_queue() sets the bit when the FIFO fast-path takes fifo_req, replacing the list_empty(&fifo_req.queue) check. The bit is cleared only after the completion callback returns, via a new dummy_giveback() helper used at all four gadget-request giveback sites. Patches are available in the mainline and stable trees: commit 67b589d0, commit d5e5cd36, commit e239ea91, commit e24b3361, and commit e2b2740f.

Workarounds

  • Blacklist the dummy_hcd module on hosts that do not need USB gadget emulation
  • Limit local shell access and gadget subsystem privileges to trusted service accounts
  • Isolate USB gadget testing workloads to dedicated VMs that can be rebooted after crashes
bash
# Configuration example: prevent dummy_hcd from loading
echo "blacklist dummy_hcd" | sudo tee /etc/modprobe.d/blacklist-dummy_hcd.conf
sudo modprobe -r dummy_hcd 2>/dev/null || true
sudo update-initramfs -u

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.