CVE-2026-46184
Medium · 5.5CVSS
5.5
EPSS
0.2%
Published
May 28, 2026
CISA due date
—
Cloudanix analysis
A specially crafted USB audio device can crash some Linux systems when it is plugged in.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This vulnerability is a local denial-of-service flaw in the Linux kernel UA-101 USB audio driver. The driver fails to validate the USB audio class descriptor field bNrChannels before using it to calculate frame size. A USB device that reports bNrChannels = 0 can cause frame_bytes to become zero; later, the playback and capture URB completion handlers use that value as a divisor, triggering a divide-by-zero exception in kernel context. The result is a kernel crash or panic, causing loss of system availability. The issue does not directly provide confidentiality or integrity impact, but it can reliably disrupt affected systems when the vulnerable driver probes or processes the malformed USB audio device.
Why it matters to the business
An attacker with local access or the ability to present a malicious USB audio device to a vulnerable Linux system can crash the operating system, interrupting workloads, kiosks, workstations, lab systems, or embedded devices that accept USB peripherals. This is most relevant for environments where untrusted users can connect USB devices, where USB passthrough is enabled, or where systems automatically load kernel drivers for connected hardware. The CVSS score indicates moderate severity, EPSS is currently very low, it is not listed in CISA KEV, and no public exploit maturity is reported, so broad internet-scale exploitation is unlikely; however, physical or local-access denial of service remains practical.
How an attack unfolds
An attacker prepares or emulates a USB audio device whose class-specific audio descriptor advertises zero channels through bNrChannels = 0. The attacker then connects the device to a vulnerable Linux system, or otherwise causes the system to enumerate the device through USB passthrough or a locally controlled USB interface. During driver probing, the UA-101 driver parses the descriptor and, without adequate validation, derives a zero frame size. When playback or capture URB completion handling later occurs, the kernel code divides by that zero value. Because the fault occurs in kernel context, the system records an oops or panic and may crash or require reboot, creating a denial-of-service condition.
How to fix it
Apply a Linux kernel update that includes the UA-101 driver fix adding a sanity check for bNrChannels in detect_usb_format(). Because no exact fixed package versions were provided, use the fixed kernel packages from the relevant Linux distribution or vendor advisory for this CVE, or update to a kernel release containing the upstream sound: ua101 division-by-zero fix. If immediate patching is not possible, reduce exposure by disabling or restricting untrusted USB device attachment, disabling USB passthrough into sensitive systems, applying USB device-control policy, and preventing automatic loading of the affected UA-101 driver where operationally feasible. On systems that do not require this device class, consider blacklisting the affected module or disabling the relevant kernel configuration as a compensating control, after validating that legitimate audio devices and workflows are not impacted.
How to confirm the fix worked
Confirm the running kernel version or vendor package includes the fix for the UA-101 bNrChannels validation issue. Validate that the affected source or backported patch rejects descriptors where bNrChannels is zero before frame-size calculations occur. Operationally, verify that systems are booted into the patched kernel, not merely that the package is installed. Review module-loading policy to ensure unnecessary USB audio drivers are disabled where intended. For exposure checks, identify Linux systems that allow local USB peripherals, USB passthrough, or device emulation and confirm whether the UA-101 driver/module can load. Where safe and authorized, test with a controlled malformed USB descriptor in a non-production lab to verify that the system rejects the device without producing a kernel oops or panic.
Typical attack path
- Gain local physical access to a Linux system, control a locally attached USB device, or use a context where USB passthrough/device emulation is available.
- Present a malformed USB audio device descriptor with bNrChannels set to 0 so it is handled by the affected UA-101 driver path.
- Allow the Linux kernel to enumerate the USB device and load or invoke the vulnerable audio driver.
- Trigger playback or capture URB completion processing for the malformed device.
- Cause a kernel divide-by-zero exception, resulting in an oops, panic, crash, or forced reboot.
How to detect it
To determine whether this was already exploited or triggered, review kernel logs, system journals, crash dumps, and hardware inventory events for crashes that occur immediately after USB audio device enumeration. Useful sources include dmesg output, journalctl -k, /var/log/kern.log, /var/log/messages, systemd-coredump metadata where applicable, kdump/vmcore artifacts, and endpoint device-control logs. Look for kernel oops or panic entries showing divide-by-zero faults in playback_urb_complete(), capture_urb_complete(), detect_usb_format(), or the UA-101 USB audio driver path. Correlate crash timestamps with USB insertion events such as new USB device enumeration, audio device registration, snd module loading, or USB passthrough activity. If crash dumps are available, inspect the kernel stack trace for the affected functions and inspect the associated USB descriptor data for bNrChannels equal to zero. Since this is a local/physical or device-emulation attack surface and there is no known public exploitation or KEV listing, absence of internet-facing indicators is expected; focus detection on host telemetry around USB attach events and kernel panics.
- divide error: 0000
- divide error in playback_urb_complete
- divide error in capture_urb_complete
- playback_urb_complete
- capture_urb_complete
- detect_usb_format
- sound/usb/misc/ua101.c
- bNrChannels=0
- bNrChannels = 0
- new USB device found
- USB Audio
- UA-101
- snd-ua101
- snd_usb_ua101
- kernel panic - not syncing
- Oops: divide error
What your security team should do
- Prioritize patching Linux systems where untrusted users can attach USB devices, including shared workstations, kiosks, labs, build systems, and systems with USB passthrough enabled.
- Deploy the latest vendor-supported kernel update that contains the UA-101 descriptor validation fix, and verify systems have rebooted into the fixed kernel.
- Restrict physical USB access and enforce USB device-control policies to block unknown or unauthorized audio devices.
- Disable USB passthrough into virtual machines and sensitive workloads unless explicitly required.
- Blacklist or disable the affected UA-101 driver on systems that do not need it, after testing for operational impact.
- Monitor kernel logs and crash dumps for divide-by-zero exceptions involving UA-101 playback or capture URB completion handlers.
- Treat unexplained kernel crashes shortly after USB audio device insertion as potentially suspicious, especially in shared or physically accessible environments.
- Because this issue is not currently in CISA KEV, has no reported ransomware use, and has very low EPSS, prioritize based on local physical-access risk rather than internet exposure.
The record
In the Linux kernel, the following vulnerability has been resolved: sound: ua101: fix division by zero at probe Add a missing sanity check for bNrChannels in detect_usb_format() to prevent a division by zero in playback_urb_complete() and capture_urb_complete(). USB core does not validate class-specific descriptor fields such as bNrChannels, so drivers must verify them before use. If a device provides bNrChannels = 0, frame_bytes becomes zero and is later used as a divisor in the URB completion handlers, leading to a kernel crash.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | kernel-source | 0 | 7.0.11-1.1 |
Related vulnerabilities
- CVE-2026-53354 In the Linux kernel, the following vulnerability has been resolved: arm64: errata… Also affects kernel-source
- CVE-2026-53325 In the Linux kernel, the following vulnerability has been resolved: agp/amd64: Fix broken… Also affects kernel-source
- CVE-2026-52946 In the Linux kernel, the following vulnerability has been resolved: fs/fcntl: fix… Also affects kernel-source
- CVE-2026-52907 In the Linux kernel, the following vulnerability has been resolved: media: rockchip… Also affects kernel-source
- CVE-2026-52906 In the Linux kernel, the following vulnerability has been resolved: 9p: fix access mode… Also affects kernel-source
- CVE-2026-52905 In the Linux kernel, the following vulnerability has been resolved: mm/damon/core… Also affects kernel-source
- CVE-2026-52904 In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: fix… Also affects kernel-source
- CVE-2026-46332 In the Linux kernel, the following vulnerability has been resolved: greybus… Also affects kernel-source