CVE-2026-74682 in Linuxinformación

Resumen

por VulDB • 2026-08-23

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

ALSA: usb-audio: corrección de una escritura fuera de límites (OOB) en URB entrantes de Tipo II

`data_ep_set_params()` calcula el tamaño del búfer de transferencia de cada URB antes de añadir el delimitador de transferencia Format Type II:

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

if (fmt->fmt_type == UAC_FORMAT_TYPE_II) u->packets++; /* para el delimitador de transferencia */ u->urb = usb_alloc_urb(u->packets, GFP_KERNEL); ```

`buffer_size` se calcula a partir del conteo de paquetes previo al incremento y nunca se vuelve a calcular; por lo tanto, en un endpoint de Tipo II, el búfer tiene un paquete menos que la cantidad de paquetes con la que se construye el URB.

A continuación, `prepare_inbound_urb()` distribuye un marco ISO (iso frame) por cada paquete sin consultar jamás `buffer_size`:

```c 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; ```

Por lo tanto, el último descriptor apunta un paquete más allá del final del búfer de transferencia, donde el controlador host escribe los datos del dispositivo en cada transferencia entrante. `prepare_silent_urb()` y `prepare_playback_urb()` limitan sus bucles de llenado mediante `ctx->buffer_size`, por lo que solo la captura se ve afectada.

`fmt_type` proviene de los descriptores de transmisión de audio del dispositivo, por lo que cualquier dispositivo que anuncie un formato de captura Tipo II sufrirá este problema cuando el espacio de usuario establezca `hw_params` en el flujo.

KASAN en 7.2.0-rc5 (arm64) con un dispositivo dummy_hcd/raw-gadget, un informe por cada transferencia entrante:

``` 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)
```

Calcule `buffer_size` después de haber contabilizado el paquete delimitador y limite el bucle de llenado mediante `buffer_size`, tal como ya hace `prepare_silent_urb()` en el lado saliente. Esto incrementa cada asignación de URB Tipo II en un paquete de tamaño máximo (`maxsize`).

Descubierto por XBOW, triage realizado por Baul Lee <[email protected]>

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Reservar

2026-08-15

Divulgación

2026-08-22

Moderación

aceptado

Artículo

VDB-394448

CPE

listo

EPSS

0.00220

KEV

no

Actividades

bajo

Fuentes

Do you need the next level of professionalism?

Upgrade your account now!