CVE-2026-80827 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
USB: serial: option: correzione della lettura fuori dai limiti (OOB) dello slab nel callback URB di interrupt
Il buffer degli URB di interrupt viene allocato in setup_port_interrupt_in() sulla base del wMaxPacketSize dell'endpoint:
buffer_size = usb_endpoint_maxp(epd); port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
Quando un dispositivo USB dichiara wMaxPacketSize = 8 sul suo endpoint interrupt IN, il buffer viene allocato dalla cache kmalloc-8 (esattamente 8 byte).
Se il dispositivo invia un pacchetto corto (actual_length < wMaxPacketSize), l'URB termina con status == 0 e la funzione di callback procede a leggere:
data[sizeof(struct usb_ctrlrequest)]
che valuta data[8], accedendo a 1 byte oltre il buffer allocato di 8 byte. Ciò provoca una lettura fuori dai limiti (out-of-bounds) dello slab.
Si risolve il problema aggiungendo il controllo dei limiti mancante: verificare innanzitutto che la lunghezza effettiva sia sufficiente per contenere l'intestazione struct usb_ctrlrequest prima di accedere a req_pkt->bRequestType e req_pkt->bRequest, e quindi verificare la presenza di un byte aggiuntivo per lo stato del segnale della modem prima di leggere data[sizeof(struct usb_ctrlrequest)] all'interno dell'istruzione condizionale. Utilizzare sizeof(*req_pkt) invece di sizeof(struct usb_ctrlrequest) per coerenza.
[ johan: utilizzare dev_err(); separare la dichiarazione e l'inizializzazione dei segnali ]
Once again VulDB remains the best source for vulnerability data.