data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-72483 in the interactive tracker

CVE-2026-72483

usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control()

7.8 EPSS 0.2% AV:L

Published 2026-08-15 (2 months ago) by the Linux kernel CNA. Subsystem drivers/usb. Debian urgency: not yet assigned.

Debian does not build this code. The per-release build detail is under "Where it lives" below.

What to do, per Debian release

Debian's own status for CVE-2026-72483 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixed6.1.180-1Update the kernel and reboot. Fixed in 6.1.180-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixed6.12.100-1Update the kernel and reboot. Fixed in 6.12.100-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

The `max3421_hub_control()` function handles USB hub class requests to the virtual root hub. In the `default` branches of both the `ClearPortFeature` and `SetPortFeature` switch statements, it modifies `max3421_hcd->port_status` by left shifting 1 by the request's `value` parameter. However, it does not validate whether this shift will exceed the width of `port_status`. So if a malicious userspace task with access to the root hub via /dev/bus/usb/.../001 issues a USBDEVFS_CONTROL ioctl with `wValue` greater than or equal to 32, the left shift operation invokes shift-out-of-bounds undefined behavior. This results in arbitrary bit corruption of `port_status`, including the normally-immutable change bits, which can bypass internal state checks and confuse the hub status. Fix this by rejecting requests whose `value` exceeds the shift width before performing the shift. This issue was found using a KLEE-based symbolic execution tool for kernel drivers that I'm currently developing.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/usb/host/max3421-hcd.c

What this is
USB SUBSYSTEMMAINTAINERS section matched on drivers/usb/ · linux-usb@vger.kernel.org · Supported

Check it on the machine

grep -wE 'CONFIG_OF|CONFIG_PCI|CONFIG_USB|CONFIG_USB_EHCI_HCD|CONFIG_USB_FHCI_HCD|CONFIG_USB_FOTG210_HCD|CONFIG_USB_FSL_USB2|CONFIG_USB_GADGET|CONFIG_USB_ISP116X_HCD|CONFIG_USB_ISP1362_HCD|CONFIG_USB_MAX3421_HCD|CONFIG_USB_OHCI_HCD|CONFIG_USB_PCI|CONFIG_USB_PHY|CONFIG_USB_R8A66597_HCD|CONFIG_USB_SL811_HCD|CONFIG_USB_SUPPORT|CONFIG_USB_U132_HCD|CONFIG_USB_UHCI_HCD|CONFIG_USB_XEN_HCD|CONFIG_USB_XHCI_HCD' /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

Show whether Debian builds this, per release

Debian does not build this code. In 4 releases below, every kernel flavour Debian publishes has the switch off, so the vulnerable file is compiled into no kernel binary Debian ships.

  • bookworm, trixie, forky, sidn
n
not enabled on any flavour - this release does not build the code
Build switches
CONFIG_OF, CONFIG_PCI, CONFIG_USB, CONFIG_USB_EHCI_HCD, CONFIG_USB_FHCI_HCD, CONFIG_USB_FOTG210_HCD, CONFIG_USB_FSL_USB2, CONFIG_USB_GADGET, CONFIG_USB_ISP116X_HCD, CONFIG_USB_ISP1362_HCD, CONFIG_USB_MAX3421_HCD, CONFIG_USB_OHCI_HCD, CONFIG_USB_PCI, CONFIG_USB_PHY, CONFIG_USB_R8A66597_HCD, CONFIG_USB_SL811_HCD, CONFIG_USB_SUPPORT, CONFIG_USB_U132_HCD, CONFIG_USB_UHCI_HCD, CONFIG_USB_XEN_HCD, CONFIG_USB_XHCI_HCD
Reads as
all on means the file is compiled; any one off means it is not.

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-15 (2 months ago)source
CVSS
7.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.19%, higher than 8.5% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/usb

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
3.165.10.261e5fa9d8f4074
3.165.15.21208b1d4cab023
3.166.1.1783be5f24e8270
3.166.6.145d512bdefd241
3.166.12.9700dd025324b5
3.166.18.4002d03c61e8a7
3.167.1.54da073d57176
3.167.2cff06b03b530

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
The bug is reached when a local process issues USBDEVFS_CONTROL on the MAX3421 root hub (/dev/bus/usb/BBB/001); usb_submit_urb() routes ep0 control transfers through rh_call_control() to max3421_hub_control(), with no network or remote protocol path.
AC:LAttack complexity, low
The attacker fully controls the hub-class wValue field in the ioctl and can reliably trigger the shift-out-of-bounds by sending SetPortFeature or ClearPortFeature with wValue>=32; no race, timing, or memory-layout conditions outside the attacker's control are required.
PR:LPrivileges required, low
Only a basic unprivileged local account is needed: desktop, kiosk, and embedded MAX3421 deployments grant USB bus device-node access via udev uaccess/ACL or plugdev, and check_ctrlrecip() imposes no extra capability check for hub-class (USB_RECIP_OTHER) root-hub requests.
UI:NUser interaction, none
Exploitation is self-contained in the attacker's own process issuing the crafted USBDEVFS_CONTROL ioctl; no separate victim action, mount, or file open by another user is required.
S:UScope, unchanged
The undefined-behavior shift corrupts only the MAX3421 driver's port_status state inside kernel memory under the same security authority; it does not cross a VM, IOMMU, or sandbox boundary.
C:HConfidentiality impact, high
Shift-out-of-bounds on port_status is kernel memory corruption of a security-relevant hub state word; corrupted status (including normally kernel-only change bits) is returned to userspace via GetPortStatus, enabling information disclosure from corrupted kernel state.
I:HIntegrity impact, high
The unchecked shift allows arbitrary bit manipulation of port_status, including normally immutable change bits, bypassing the USB_PORT_STAT_POWER gate that guards SetPortFeature updates and corrupting hub state that drives VBUS control and port reset logic.
A:HAvailability impact, high
Shift-out-of-bounds is undefined behavior that can trap under UBSAN/KASAN or panic_on_warn, and corrupting port_status can confuse hub status polling, suspend/resume, and port-reset handling, causing USB host failure or kernel hang on embedded MAX3421 systems.