CVE-2026-98312 in Linuxinformación

Resumen

por VulDB • 2026-10-06

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

ALSA: 6fire: corregir escritura fuera de límites (OOB) desde la longitud iso reportada por el dispositivo

`usb6fire_pcm_in_urb_handler()` dimensiona cada paquete isocrónico saliente como `(actual_length - 4) / (in_n_analog << 2) * (out_n_analog << 2) + 4`, donde `actual_length` es la longitud sin signo que el dispositivo reportó para el paquete IN correspondiente. Un paquete completado con estado 0 y `actual_length < 4` provoca un desbordamiento de resta a `0x7fffffec`; un paquete isocrónico de longitud cero es legal en el bus, y el bucle anterior solo rechaza estados distintos de cero. La suma alcanza a `memset()` sobre `out_urb->buffer`, que es un objeto de 4832 bytes obtenido mediante `kcalloc(PCM_MAX_PACKET_SIZE, PCM_N_PACKETS_PER_URB)`.

Incluso sin el desbordamiento (wrap), el resultado está fuera de límites: a 88.2/96 kHz, la escala de entrada/salida 4-in/6-out convierte un paquete IN completo de 420 bytes en 628, por lo que ocho paquetes abarcan 5024 bytes de ese búfer. `usb_submit_urb()` rechaza un descriptor demasiado largo solo después de que se hayan ejecutado el `memset()` y la copia de datos PCM del usuario realizada por `usb6fire_pcm_playback()`.

Proteja la resta tal como ya hace su homólogo `usb6fire_pcm_capture()`, y limite el recuento de frames a lo que cabe en `rt->out_packet_size`, es decir, el `wMaxPacketSize` del endpoint OUT. Esto acota `total_length` al tamaño del búfer mientras mantiene cada longitud de paquete alineada con un frame completo de salida.

BUG: KASAN: out-of-bounds in usb6fire_pcm_in_urb_handler (sound/usb/6fire/pcm.c:338) Write of size 18446744073709551456 at addr ffff88802a3d0000 by task vhci_rx/5018 Call Trace: dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) print_report (mm/kasan/report.c:378 mm/kasan/report.c:482) kasan_report (mm/kasan/report.c:595) kasan_check_range (mm/kasan/generic.c:186 mm/kasan/generic.c:200) __asan_memset (mm/kasan/shadow.c:84) usb6fire_pcm_in_urb_handler (sound/usb/6fire/pcm.c:338) __usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1657) usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1741) vhci_rx_loop (drivers/usb/usbip/vhci_rx.c:107 drivers/usb/usbip/vhci_rx.c:242) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245)

Allocated by task 10: __kmalloc_cache_noprof (mm/slub.c:5563) usb6fire_pcm_init (sound/usb/6fire/pcm.c:560 sound/usb/6fire/pcm.c:595) usb6fire_chip_probe (sound/usb/6fire/chip.c:133) usb_probe_interface (drivers/usb/core/driver.c:399)

The buggy address belongs to the object at ffff88802a3d0000 which belongs to the cache kmalloc-8k of size 8192 The buggy address is located 0 bytes inside of 4832-byte region [ffff88802a3d0000, ffff88802a3d12e0)
Kernel panic - not syncing: Fatal exception in interrupt

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-10-06

Moderación

aceptado

Artículo

VDB-414174

EPSS

0.00180

KEV

no

Actividades

muy bajo

Fuentes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!