CVE-2026-64339 in Linuxinformación

Resumen

por VulDB • 2026-07-25

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

usb: misc: usbio: limitar la longitud de respuesta del bulk IN a la transferencia recibida

`usbio_bulk_msg()` copia `bpkt_len = le16_to_cpu(bpkt->len)` bytes desde el búfer bulk IN (`usbio->rxbuf`, asignado con un tamaño de `usbio->rxbuf_len`) al búfer del llamador. `bpkt_len` está completamente controlado por el dispositivo y solo se verifica frente a `ibuf_len`; a su vez, `ibuf_len` se comprueba contra `usbio->txbuf_len`, no contra `rxbuf_len`:

```c if ((obuf_len > (usbio->txbuf_len - sizeof(*bpkt))) || (ibuf_len > (usbio->txbuf_len - sizeof(*bpkt)))) return -EMSGSIZE; ```

`txbuf_len` y `rxbuf_len` se obtienen de forma independiente a partir del tamaño máximo de paquete (`wMaxPacketSize`) de los endpoints bulk OUT y bulk IN respectivamente, en la función `usbio_probe()`. Por lo tanto, un dispositivo malicioso o defectuoso que anuncie un endpoint bulk OUT grande y un endpoint bulk IN pequeño (por ejemplo, al afirmar uno de los IDs sin quirks como el Lattice NX33U, 0x2ac1:0x20cb) hace que `ibuf_len`, y por ende `bpkt_len` proporcionado por el dispositivo, exceda `rxbuf_len`. A continuación, `memcpy()` lee hasta `txbuf_len - rxbuf_len` bytes más allá del final del objeto slab de `rxbuf`. Los bytes leídos en exceso se devuelven a la capa i2c y pasan al espacio de usuario a través de i2c-dev, revelando memoria adyacente del slab; con KASAN esto se informa como una lectura fuera de límites (slab-out-of-bounds).

El número real de bytes recibidos ya es conocido: `act` corresponde a la longitud actual (`actual_length`) del URB y está acotado por `rxbuf_len`. Rechazar cualquier respuesta que indique más carga útil de la recibida, reflejando la comprobación existente "act < sizeof(*bpkt)" justo encima.

La ruta de control (`usbio_ctrl_msg()`) no se ve afectada: utiliza un único búfer (`ctrlbuf`) para ambas direcciones, por lo que su copia análoga nunca puede salirse del límite asignado.

Detectado mediante revisión de código. La lectura fuera de límites fue confirmada bajo AddressSanitizer con un modelo fiel en espacio de usuario de la ruta de recepción de `usbio_bulk_msg()` (un búfer de tamaño `rxbuf_len`, las mismas comprobaciones act/ibuf_len/bpkt_len y el memcpy). También está disponible un reproductor basado en USB raw-gadget + dummy_hcd.

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

Responsable

Linux

Reservar

2026-07-19

Divulgación

2026-07-25

Moderación

aceptado

Artículo

VDB-383134

CPE

listo

EPSS

0.00198

KEV

no

Actividades

muy bajo

Fuentes

Want to know what is going to be exploited?

We predict KEV entries!