KernelScan.io

HIGH

usb-audio Mixer UAF

CVE-2026-23089

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free() When snd_usb_create_mixer() fails, snd_usb_mixer_free() frees mixer->id_elems but the controls already added to the card still reference the freed memory. Later when snd_card_register() runs, the OSS mixer layer calls their callbacks and hits a use-after-free read. Call trace: get_ctl_value+0x63f/0x820 sound/usb/mixer.c:411 get_min_max_with_quirks.isra.0+0x240/0x1f40 sound/usb/mixer.c:1241 mixer_ctl_feature_info+0x26b/0x490 sound/usb/mixer.c:1381 snd_mixer_oss_build_test+0x174/0x3a0 sound/core/oss/mixer_oss.c:887 ... snd_card_register+0x4ed/0x6d0 sound/core/init.c:923 usb_audio_probe+0x5ef/0x2a90 sound/usb/card.c:1025 Fix by calling snd_ctl_remove() for all mixer controls before freeing id_elems. We save the next pointer first because snd_ctl_remove() frees the current element.

02

Engine v0.2.0

Risk summary

A use-after-free vulnerability in USB audio mixer cleanup can cause kernel crashes or potential code execution when connecting malicious USB audio devices. The bug occurs during device initialization failure paths and affects systems with USB audio support.

Affectedsound/usb/mixer.c

Vulnerability analysis

Root Cause: In the USB audio mixer cleanup path, mixer->id_elems memory is freed while ALSA control structures still hold references to elements within that memory. When snd_usb_create_mixer() fails and snd_usb_mixer_free() is called, it frees the id_elems array but doesn't remove the associated controls from the sound card. Later, when snd_card_register() runs, the OSS mixer layer attempts to access these freed control elements through their callbacks, resulting in a use-after-free read.

Attack Surface: This vulnerability is triggered through USB audio device enumeration and requires physical access to connect a malicious or malformed USB audio device. The bug occurs during device probe/initialization when mixer creation fails, making it accessible to any user with USB device access privileges.

Fix Mechanism: The patch fixes the issue by properly cleaning up control references before freeing memory. It iterates through all mixer elements in the id_elems array and calls snd_ctl_remove() to unregister each control from the sound card before freeing the id_elems memory. The code carefully saves the next pointer before calling snd_ctl_remove() since that function frees the current element.

03

BranchFixed inPatch commit
5.105.10.24951b1aa6fe7dc
5.155.15.19956fb6efd5d04
6.16.1.1627009daeefa94
6.126.12.68e6f103a22b08
6.186.18.8dc1a5dd80af1
6.66.6.1227bff0156d13f
mainline6.19930e69757b74