CVE-2026-98836 in Linux
Riassunto
di VulDB • 18/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
ALSA: line6: rifiutare pacchetti di riproduzione eccessivamente grandi
Ogni URB (USB Request Block) di riproduzione riceve una porzione di out.buffer delle dimensioni esatte di LINE6_ISO_PACKETS * max_packet_size_out byte, dimensionata in base all'endpoint OUT; tuttavia, il numero di byte scritti in tale porzione non viene mai confrontato con la dimensione prevista.
submit_audio_out_urb() ottiene il conteggio dei frame da prev_fsize, che audio_in_callback() ha derivato dalla lunghezza del pacchetto ricevuto dall'endpoint *IN*, e lo riscala utilizzando le dimensioni del frame di riproduzione; quando prev_fsize è ancora zero, viene sintetizzata una lunghezza basata sul tasso di campionamento. Su un dispositivo con un wMaxPacketSize IN grande e un wMaxPacketSize OUT piccolo, la conseguente chiamata a memcpy(), o memset() quando il flusso di riproduzione è inattivo, supera i limiti della porzione allocata e, come mostra il riproduttore (reproducer) sottostante, va oltre l'allocazione.
usb_submit_urb() non funge da misura di sicurezza. max_packet_size_out proviene da usb_maxpacket(), che restituisce solo gli 11 bit inferiori di wMaxPacketSize, mentre il core USB convalida una lunghezza isocrona ad alta velocità contro tale base scalata per mezzo di usb_endpoint_maxp_mult(). Di conseguenza, vengono accettati valori fino a tre volte superiori alla porzione allocata e persino un URB rifiutato viene respinto solo dopo la scrittura.
Rifiutare i pacchetti che non rientrano nella porzione allocata dal driver. Un eventuale troncamento (clamping) ridurrebbe silenziosamente il feedback del tasso di campionamento derivato dalla cattura, desincronizzando i due flussi.
BUG: KASAN: slab-out-of-bounds in submit_audio_out_urb (sound/usb/line6/playback.c:229) Write of size 1024 at addr ffff888100bbd400 by task kworker/1:2/5002 Workqueue: events line6_startup_work Call Trace: __asan_memcpy (mm/kasan/shadow.c:106) submit_audio_out_urb (sound/usb/line6/playback.c:229) line6_submit_audio_out_all_urbs (sound/usb/line6/playback.c:291) line6_stream_start (sound/usb/line6/pcm.c:194) line6_pcm_acquire (sound/usb/line6/pcm.c:337) line6_startup_work (sound/usb/line6/driver.c:728) process_one_work (kernel/workqueue.c:3396) worker_thread (kernel/workqueue.c:3479 kernel/workqueue.c:3560) 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)
The buggy address belongs to the object at ffff888100bbd400 which belongs to the cache kmalloc-256 of size 256 The buggy address is located 0 bytes inside of allocated 256-byte region [ffff888100bbd400, ffff888100bbd500)
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.