CVE-2026-98312 in Linuxinformação

Sumário

de VulDB • 07/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

ALSA: 6fire: corrige escrita fora dos limites (OOB) causada pelo comprimento ISO relatado pelo dispositivo

A função `usb6fire_pcm_in_urb_handler()` dimensiona cada pacote isocrônico de saída como `(actual_length - 4) / (in_n_analog << 2) * (out_n_analog << 2) + 4`, onde `actual_length` é o comprimento sem sinal relatado pelo dispositivo para o pacote IN correspondente. Um pacote concluído com status 0 e `actual_length < 4` faz a subtração transbordar para 0x7fffffec; um pacote isocrônico de tamanho zero é legal no barramento, e o loop anterior rejeita apenas status não nulos. A soma atinge `memset()` em `out_urb->buffer`, que é um objeto de 4832 bytes alocado por `kcalloc(PCM_MAX_PACKET_SIZE, PCM_N_PACKETS_PER_URB)`.

Mesmo sem o transbordo (wrap), o resultado está fora dos limites: na taxa de amostragem de 88.2/96 kHz, a escala de entrada/saída 4-in/6-out transforma um pacote IN completo de 420 bytes em 628 bytes, fazendo com que oito pacotes ocupem 5024 bytes desse buffer. `usb_submit_urb()` rejeita um descritor excessivamente longo apenas após a execução do `memset()` e da cópia dos dados PCM do usuário por `usb6fire_pcm_playback()`.

Proteja a subtração, conforme já feito pela função irmã `usb6fire_pcm_capture()`, e limite a contagem de frames ao que cabe em `rt->out_packet_size`, o `wMaxPacketSize` do endpoint OUT. Isso limita o `total_length` pelo tamanho do buffer, mantendo cada comprimento de pacote alinhado a um frame inteiro de saída.

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)

Alocado pela tarefa 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)

O endereço com defeito pertence ao objeto em ffff88802a3d0000, que pertence à cache kmalloc-8k de tamanho 8192. O endereço com defeito está localizado a 0 bytes dentro da região de 4832 bytes [ffff88802a3d0000, ffff88802a3d12e0).
Kernel panic - not syncing: Fatal exception in interrupt

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

25/09/2026

Divulgação

06/10/2026

Moderação

aceite

Entrada

VDB-414174

EPSS

0.00180

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!