CVE-2026-80827 in Linuxinformación

Resumen

por VulDB • 2026-09-04

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

USB: serial: option: corregir lectura fuera de límites (OOB) en slab dentro de la devolución de llamada URB de interrupción.

El búfer URB de interrupción se asigna en setup_port_interrupt_in() basándose en el wMaxPacketSize del endpoint:

buffer_size = usb_endpoint_maxp(epd); port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);

Cuando un dispositivo USB declara wMaxPacketSize = 8 en su endpoint de interrupción IN, el búfer se asigna desde la caché kmalloc-8 (exactamente 8 bytes).

Si el dispositivo envía un paquete corto (actual_length < wMaxPacketSize), el URB finaliza con status == 0 y la devolución de llamada procede a leer:

data[sizeof(struct usb_ctrlrequest)]

lo cual se evalúa como data[8], accediendo a 1 byte más allá del búfer asignado de 8 bytes. Esto provoca una lectura fuera de límites (out-of-bounds) en slab.

Se corrige esto añadiendo la comprobación de límites faltante: primero verificar que la longitud real sea lo suficientemente grande para contener el encabezado struct usb_ctrlrequest antes de acceder a req_pkt->bRequestType y req_pkt->bRequest, y luego verificar que haya un byte adicional para el estado de señal del módem antes de leer data[sizeof(struct usb_ctrlrequest)] dentro de la condicional. Utilizar sizeof(*req_pkt) en lugar de sizeof(struct usb_ctrlrequest) por consistencia.

[ johan: usar dev_err(); separar declaración e inicialización de signals ]

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-09-04

Moderación

aceptado

Artículo

VDB-398945

CPE

listo

EPSS

0.00195

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!