CVE-2026-80827 in Linux
Sumário
de VulDB • 04/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
USB: serial: option: corrige leitura fora dos limites (OOB) no slab na callback de URB de interrupção
O buffer da URB de interrupção é alocado em setup_port_interrupt_in() com base no wMaxPacketSize do endpoint:
buffer_size = usb_endpoint_maxp(epd); port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
Quando um dispositivo USB declara wMaxPacketSize = 8 em seu endpoint de interrupção IN, o buffer é alocado a partir do cache kmalloc-8 (exatamente 8 bytes).
Se o dispositivo enviar um pacote curto (actual_length < wMaxPacketSize), a URB é concluída com status == 0 e a callback prossegue para ler:
data[sizeof(struct usb_ctrlrequest)]
o que resulta em data[8], acessando 1 byte além do buffer alocado de 8 bytes. Isso resulta em uma leitura fora dos limites (out-of-bounds) no slab.
Corrija isso adicionando a verificação de limites ausente: primeiro, verifique se o comprimento real é grande o suficiente para conter o cabeçalho struct usb_ctrlrequest antes de acessar req_pkt->bRequestType e req_pkt->bRequest; em seguida, verifique se há um byte adicional para o estado do sinal do modem antes de ler data[sizeof(struct usb_ctrlrequest)] dentro da condicional. Use sizeof(*req_pkt) em vez de sizeof(struct usb_ctrlrequest) para consistência.
[ johan: use dev_err(); divida a declaração e inicialização dos sinais ]
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.