-

CVE-2026-74682

ALSA: usb-audio: fix OOB write on Type II inbound URBs

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

ALSA: usb-audio: fix OOB write on Type II inbound URBs

data_ep_set_params() sizes each URB transfer buffer before it adds the
Format Type II transfer delimiter:

	u->packets = urb_packs;
	u->buffer_size = maxsize * u->packets;

	if (fmt->fmt_type == UAC_FORMAT_TYPE_II)
		u->packets++; /* for transfer delimiter */
	u->urb = usb_alloc_urb(u->packets, GFP_KERNEL);

buffer_size is computed from the pre-increment packet count and never
recomputed, so for a Type II endpoint the buffer is one packet short of
the packet count the URB is built with.

prepare_inbound_urb() then lays out one iso frame per packet and never
consults buffer_size:

	offs = 0;
	for (i = 0; i < urb_ctx->packets; i++) {
		urb->iso_frame_desc[i].offset = offs;
		urb->iso_frame_desc[i].length = ep->curpacksize;
		offs += ep->curpacksize;
	}

	urb->transfer_buffer_length = offs;
	urb->number_of_packets = urb_ctx->packets;

The last descriptor therefore points one packet past the end of the
transfer buffer, where the host controller writes device data on every
inbound transfer.  prepare_silent_urb() and prepare_playback_urb() bound
their fill loops by ctx->buffer_size, so only capture is affected.

fmt_type comes from the device's audio streaming descriptors, so any
device advertising a Type II capture format hits this once userspace sets
hw_params on the stream.

KASAN on 7.2.0-rc5 (arm64) with a dummy_hcd/raw-gadget device, one report
per inbound transfer:

  BUG: KASAN: slab-out-of-bounds in dummy_timer
  Write of size 64 at addr ffff0000186171c0 by task cons02/166
   __asan_memcpy
   dummy_timer
   hrtimer_run_softirq
  Allocated by task 166:
   usb_alloc_coherent
   snd_usb_endpoint_set_params
  The buggy address is located 0 bytes to the right of
   allocated 64-byte region [ffff000018617180, ffff0000186171c0)

Compute buffer_size after the delimiter packet has been accounted for,
and bound the fill loop by buffer_size, as prepare_silent_urb() already
does on the outbound side.  This grows every Type II URB allocation by
one maxsize packet.

Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
Produkt Linux
Default Statusunaffected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < 6af5f29af7711233ae68d3b25c15d67478468900
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < f1fbb50b99311b35c2e85cc70341d62082dca4b5
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < 137bf034740e5a2734794908d0aff1e0bd7cee6e
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < 6607f85242577f33d4540a0d1f4a6137f5367058
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < ca22c94bdfc22c564ca2e11c87ba4d17ebeaaa9a
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < 0a235379825e1a6194e43861ee6658e5fc35686d
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < d3ed4e6321bb453757044cb9e5ecb30a33f04903
Status affected
Version 8fdff6a319e7dac757c558bd283dc4577e68cde7
Version < 69ee44e1a23be62318189dc4b37fa4ad94053269
Status affected
HerstellerLinux
Produkt Linux
Default Statusaffected
Version 3.5
Status affected
Version 0
Version < 3.5
Status unaffected
Version <= 5.10.*
Version 5.10.265
Status unaffected
Version <= 5.15.*
Version 5.15.216
Status unaffected
Version <= 6.1.*
Version 6.1.183
Status unaffected
Version <= 6.6.*
Version 6.6.152
Status unaffected
Version <= 6.12.*
Version 6.12.104
Status unaffected
Version <= 6.18.*
Version 6.18.45
Status unaffected
Version <= 7.1.*
Version 7.1.9
Status unaffected
Version <= *
Version 7.2
Status unaffected
VulnDex Vulnerability Enrichment
Diese Information steht angemeldeten Benutzern zur Verfügung. Login Login
Zu dieser CVE wurde keine Warnung gefunden.
EPSS Metriken
Typ Quelle Score Percentile
EPSS FIRST.org 0.18% 0.072
CVSS Metriken
Quelle Base Score Exploit Score Impact Score Vector String
Es wurden noch keine Informationen zu CWE veröffentlicht.
https://git.kernel.org/stable/c/0a235379825e1a6194e43861ee6658e5fc35686d
https://git.kernel.org/stable/c/137bf034740e5a2734794908d0aff1e0bd7cee6e
https://git.kernel.org/stable/c/6607f85242577f33d4540a0d1f4a6137f5367058
https://git.kernel.org/stable/c/69ee44e1a23be62318189dc4b37fa4ad94053269
https://git.kernel.org/stable/c/6af5f29af7711233ae68d3b25c15d67478468900
https://git.kernel.org/stable/c/ca22c94bdfc22c564ca2e11c87ba4d17ebeaaa9a
https://git.kernel.org/stable/c/d3ed4e6321bb453757044cb9e5ecb30a33f04903
https://git.kernel.org/stable/c/f1fbb50b99311b35c2e85cc70341d62082dca4b5