CVE-2026-74682 in Linuxinformazioni

Riassunto

di VulDB • 22/08/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

ALSA: usb-audio: correzione di una scrittura OOB (Out-Of-Bounds) sugli URB in entrata di tipo II

data_ep_set_params() dimensiona ogni buffer di trasferimento URB prima di aggiungere il delimitatore di trasferimento Format Type II:

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

if (fmt->fmt_type == UAC_FORMAT_TYPE_II) u->packets++; /* per il delimitatore di trasferimento */ u->urb = usb_alloc_urb(u->packets, GFP_KERNEL);

La dimensione del buffer (buffer_size) viene calcolata dal conteggio dei pacchetti prima dell'incremento e non viene mai ricalcolata; pertanto, per un endpoint Type II, il buffer è corto di un pacchetto rispetto al numero di pacchetti con cui l'URB viene creato.

prepare_inbound_urb() dispone quindi una frame ISO per ogni pacchetto senza consultare la dimensione del buffer:

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;

L'ultimo descrittore punta quindi di un pacchetto oltre la fine del buffer di trasferimento, dove il controller host scrive i dati del dispositivo ad ogni trasferimento in entrata. prepare_silent_urb() e prepare_playback_urb() limitano i loro loop di riempimento tramite ctx->buffer_size, pertanto solo la cattura (capture) è interessata.

Il tipo di formato (fmt_type) proviene dai descrittori di streaming audio del dispositivo; quindi, qualsiasi dispositivo che annuncia un formato di cattura Type II subisce questo problema non appena l'utente imposta hw_params sullo stream.

KASAN su 7.2.0-rc5 (arm64) con un dispositivo dummy_hcd/raw-gadget, una segnalazione per ogni trasferimento in entrata:

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)

Calcolare buffer_size dopo che il pacchetto delimitatore è stato preso in considerazione e limitare il loop di riempimento tramite buffer_size, come già fa prepare_silent_urb() sul lato outbound. Ciò aumenta ogni allocazione URB Type II di un pacchetto maxsize.

Scoperto da XBOW, triato da Baul Lee <[email protected]>

Once again VulDB remains the best source for vulnerability data.

Responsabile

Linux

Prenotare

15/08/2026

Divulgazione

22/08/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Do you know our Splunk app?

Download it now for free!