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

CVE-2026-43429: Linux Kernel USB USBTMC DOS Vulnerability

CVE-2026-43429 is a denial of service flaw in the Linux kernel USB USBTMC driver that allows users to hang kernel threads indefinitely. This post covers the technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-43429 Overview

CVE-2026-43429 affects the Linux kernel's USB Test and Measurement Class (usbtmc) driver. The driver accepts user-supplied timeout values through an ioctl command and forwards them to usb_bulk_msg() calls. Because usb_bulk_msg() performs an unkillable wait, a user can specify an arbitrarily long timeout and hang a kernel thread indefinitely. The fix replaces these calls with usb_bulk_msg_killable(), allowing signals to interrupt the wait. The issue was addressed across multiple stable kernel branches via the referenced commits.

Critical Impact

A local user can issue an ioctl with an excessive timeout to cause a kernel thread to wait in an uninterruptible state, leading to a denial-of-service condition on the affected system.

Affected Products

  • Linux kernel usbtmc driver (drivers/usb/class/usbtmc.c)
  • Multiple stable Linux kernel branches receiving the backported fix
  • Systems exposing USB Test and Measurement Class devices to unprivileged users

Discovery Timeline

  • 2026-05-08 - CVE-2026-43429 published to NVD
  • 2026-05-12 - Last updated in NVD database

Technical Details for CVE-2026-43429

Vulnerability Analysis

The usbtmc driver implements an ioctl interface that allows userspace applications to configure timeout values used during USB bulk transfers. These user-supplied timeouts are then passed to usb_bulk_msg(), the kernel helper that performs synchronous bulk endpoint I/O. usb_bulk_msg() waits for completion in an uninterruptible state, meaning the calling thread cannot be killed or signaled while the wait is active. When a userspace caller specifies an arbitrarily large timeout value, the kernel thread servicing that request becomes stuck for the duration of the timeout and cannot be terminated through normal signaling. This affects process termination, system shutdown sequences, and overall system responsiveness. The fix substitutes usb_bulk_msg_killable(), a variant that performs the wait in a killable state and allows fatal signals to interrupt the operation.

Root Cause

The root cause is the use of an uninterruptible wait primitive (usb_bulk_msg()) in a code path that consumes attacker-controlled timeout values. The driver does not clamp or validate the timeout against a maximum bound, and the underlying synchronous wait does not respond to SIGKILL. This combination produces a denial-of-service condition classified as a resource exhaustion and kernel-state issue.

Attack Vector

Exploitation requires local access to a system with a usbtmc character device node (typically /dev/usbtmc*) accessible to the attacker. The attacker opens the device, issues the timeout-configuring ioctl with a very large value, and then triggers a bulk transfer operation. The kernel thread handling the transfer enters an unkillable wait, persisting until the timeout naturally expires or the underlying USB transfer completes. Patch details are available in the referenced Kernel Git Commit 0535f84 and related commits.

Detection Methods for CVE-2026-43429

Indicators of Compromise

  • Processes that interact with /dev/usbtmc* device nodes and remain in the D (uninterruptible sleep) state for prolonged periods
  • Kernel log entries referencing usbtmc combined with hung task warnings from the khungtaskd watchdog
  • Unusual ioctl activity targeting USB Test and Measurement Class devices from non-administrative users

Detection Strategies

  • Monitor /proc/<pid>/stat and /proc/<pid>/wchan for tasks blocked in usb_bulk_msg-related wait functions for unusually long intervals
  • Enable and review hung_task_timeout_secs warnings in dmesg to surface threads stuck in uninterruptible sleep within USB code paths
  • Audit ioctl syscalls against usbtmc file descriptors using auditd rules or eBPF tracing to identify abnormally large timeout parameters

Monitoring Recommendations

  • Track running kernel versions across the fleet and compare against the fixed commits listed in the kernel.org references
  • Alert on repeated hung task reports involving USB driver stacks, which often signal driver-level abuse or hardware faults
  • Inventory hosts that expose USB Test and Measurement Class devices to unprivileged users, as these are the realistic exposure surface

How to Mitigate CVE-2026-43429

Immediate Actions Required

  • Apply the upstream stable kernel update containing the usbtmc fix on all affected branches
  • Restrict access to /dev/usbtmc* device nodes to trusted users only, using filesystem permissions or udev rules
  • Unload the usbtmc kernel module on systems that do not require USB Test and Measurement Class functionality

Patch Information

The fix replaces usb_bulk_msg() with usb_bulk_msg_killable() in the usbtmc driver, ensuring that user-controlled timeouts no longer place kernel threads in unkillable waits. The change is distributed across multiple stable kernel branches via commits including 0535f84, 39bd409, 6cb7dc9, 72c0a06, 7784caa, 7fa72c3, d4f1c45, and e14a0dc. Distribution-specific advisories should be consulted for backport status.

Workarounds

  • Blacklist the usbtmc module via /etc/modprobe.d/ configuration on systems that do not need test and measurement device support
  • Apply strict udev rules to limit /dev/usbtmc* access to a dedicated group of trusted operators
  • Avoid granting unprivileged users access to USB Test and Measurement Class devices until patched kernels are deployed
bash
# Blacklist the usbtmc module to remove the attack surface
echo "blacklist usbtmc" | sudo tee /etc/modprobe.d/blacklist-usbtmc.conf
sudo modprobe -r usbtmc

# Restrict device node access via udev (example)
# /etc/udev/rules.d/99-usbtmc.rules
# SUBSYSTEM=="usbmisc", KERNEL=="usbtmc*", MODE="0600", OWNER="root"
sudo udevadm control --reload-rules

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.