All vulnerabilities
CVE-2026-98741

Linux: ALSA: ua101: reject mismatched capture/playback packet sizes

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 5% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in4294fe57048594a9e158b61c967bb7f943cda477Also 86f86e6fdedc33c5b8d38b9208b350f8accf57eeCVE List
Published18 Oct 2026Updated 21 Oct 2026CVE List

What fixes it

  • 4294fe57048594a9e158b61c967bb7f943cda477LinuxCVE List
  • 86f86e6fdedc33c5b8d38b9208b350f8accf57eeLinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

ALSA: ua101: reject mismatched capture/playback packet sizes

detect_usb_format() cross-checks bSubframeSize, bBitResolution and tSamFreq between the capture and playback interfaces, but never relates the two endpoints' wMaxPacketSize and bNrChannels. Each playback URB gets a buffer of ua->playback.max_packet_bytes, while the number of bytes written into it is derived from the capture stream: capture_urb_complete() computes frames from the received capture packet and capture.frame_bytes, and start_usb_playback() and playback_work() multiply that by playback.frame_bytes.

A device declaring a large capture wMaxPacketSize with few capture channels and a small playback wMaxPacketSize with many playback channels therefore memset()s and memcpy()s past the end of the playback buffer, in open() of the PCM node the driver registers during probe. usb_submit_urb() rejects the over-long iso_frame_desc[0].length with -EMSGSIZE, but only after the write.

Reject such descriptors at probe time. Genuine UA-101/UA-1000 hardware declares proportional packet sizes and is unaffected.

BUG: KASAN: slab-out-of-bounds in start_usb_playback (sound/usb/misc/ua101.c:586) Write of size 2048 at addr ffff8881098f3c00 by task exploit/5021 Call Trace: __asan_memset (mm/kasan/shadow.c:84) start_usb_playback (sound/usb/misc/ua101.c:586) playback_pcm_open (sound/usb/misc/ua101.c:679) snd_pcm_open_substream (sound/core/pcm_native.c:2829) snd_pcm_open (sound/core/pcm_native.c:2865 sound/core/pcm_native.c:2932) snd_pcm_playback_open (sound/core/pcm_native.c:2891) snd_open (sound/core/sound.c:166) chrdev_open (fs/char_dev.c:411) do_dentry_open (fs/open.c:996) vfs_open (fs/open.c:1101) path_openat (fs/namei.c:4837 fs/namei.c:5000) do_file_open (fs/namei.c:5029) do_sys_openat2 (fs/open.c:1417) __x64_sys_openat (fs/open.c:1423 fs/open.c:1439 fs/open.c:1434) do_syscall_64 (arch/x86/entry/syscall_64.c:61 arch/x86/entry/syscall_64.c:84) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

The buggy address belongs to the object at ffff8881098f3c00 which belongs to the cache kmalloc-192 of size 192 The buggy address is located 0 bytes inside of allocated 168-byte region [ffff8881098f3c00, ffff8881098f3ca8)

Text from CVE List

Affected versions 12

  • Linuxaffected: 63978ab3e3e963db28093b53bb4598f2702e1ad7 before ada5ded765f059a6e3036e69ca350449442af0fcCVE List
  • Linuxaffected: 63978ab3e3e963db28093b53bb4598f2702e1ad7 before fd3a7bf0d988b0878a1957df150edb35f81db87eCVE List
  • Linuxaffected: 63978ab3e3e963db28093b53bb4598f2702e1ad7 before eb0c7fda59cf650076f8ed5b949a6c8441aa3606CVE List
  • Linuxaffected: 63978ab3e3e963db28093b53bb4598f2702e1ad7 before 4294fe57048594a9e158b61c967bb7f943cda477CVE List
  • Linuxaffected: 63978ab3e3e963db28093b53bb4598f2702e1ad7 before 86f86e6fdedc33c5b8d38b9208b350f8accf57eeCVE List
  • Linuxaffected: 2.6.34CVE List
  • Linuxunaffected: all versions before 2.6.34CVE List
  • Linuxunaffected: 6.6.160 through 6.6.*CVE List
  • Linuxunaffected: 6.12.113 through 6.12.*CVE List
  • Linuxunaffected: 6.18.56 through 6.18.*CVE List
  • Linuxunaffected: 7.2.10 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 5