ALSA: usb-audio: Prevent excessive number of frames
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.4.230, 4.9.230, 4.14.188, 4.19.132, 5.4.51, and 4 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: Prevent excessive number of frames In this case, the user constructed the parameters with maxpacksize 40 for rate 22050 / pps 1000, and packsize[0] 22 packsize[1] 23. The buffer size for each data URB is maxpacksize * packets, which in this example is 40 * 6 = 240; When the user performs a write operation to send audio data into the ALSA PCM playback stream, the calculated number of frames is packsize[0] * packets = 264, which exceeds the allocated URB buffer size, triggering the out-of-bounds (OOB) issue reported by syzbot [1]. Added a check for the number of single data URB frames when calculating the number of frames to prevent [1]. [1] BUG: KASAN: slab-out-of-bounds in copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487 Write of size 264 at addr ffff88804337e800 by task syz.0.17/5506 Call Trace: copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487 prepare_playback_urb+0x953/0x13d0 sound/usb/pcm.c:1611 prepare_outbound_urb+0x377/0xc50 sound/usb/endpoint.c:333
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 4.4.229 · fixed in 4.4.230; From 4.9.229 · fixed in 4.9.230; From 4.14.186 · fixed in 4.14.188; From 4.19.130 · fixed in 4.19.132; From 5.4.49 · fixed in 5.4.51; From 5.7.6 · fixed in 5.7.8
- Linux Linux
5.8
- KernelLinux
fixed in 4.4.230; From 4.5.0 · fixed in 4.9.230; From 4.10.0 · fixed in 4.14.188; From 4.15.0 · fixed in 4.19.132; From 4.20.0 · fixed in 5.4.51; From 5.5.0 · fixed in 5.7.8; From 5.8.0 · fixed in 6.6.160; fixed in 6.12.114; From 6.7.0 · fixed in 6.18.10
References 11
git.kernel.org
- stable/c/480a1490c595a242f27493a4544b3efb21b29f6a
- stable/c/ab0b5e92fc36ee82c1bd01fe896d0f775ed5de41
- stable/c/282aba56713bbc58155716b55ca7222b2d9cf3c8
- stable/c/c4dc012b027c9eb101583011089dea14d744e314
- stable/c/e0ed5a36fb3ab9e7b9ee45cd17f09f6d5f594360
- stable/c/d67dde02049e632ba58d3c44a164a74b6a737154
- stable/c/581821f4b2ecbf411027b0af82b561ee208f4ba4
- stable/c/152fc4f7b4a8af1c0418d2722f3b2729799cc837
- stable/c/81e4b0009f2acc841d77a24fd796528b0bf62c4e
- stable/c/62932d9ed639a9fa71b4ac1a56766a4b43abb7e4
- stable/c/ef5749ef8b307bf8717945701b1b79d036af0a15