CVE-2026-80780

Publicada el 4 de septiembre de 2026

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: HID: pidff: corrige la escritura OOB cuando hid->inputs está vacío hid_pidff_init_with_quirks() deriva su input_dev de list_entry(hid->inputs.next, struct hid_input, list) sin comprobar primero que hid->inputs no esté vacío. El miembro list de struct hid_input se encuentra en el desplazamiento 0, por lo que en una lista vacía list_entry() produce &hid->inputs y la carga posterior de hidinput->input lee un miembro no relacionado de struct hid_device. dev es entonces un puntero con tipos confundidos, y la inicialización de force-feedback escribe a través de él: cada set_bit(FF_*, dev->ffbit) almacena 8 bytes en dev + 192, más allá del final del objeto al que realmente apunta dev, e input_ff_create() añade más escrituras de un puntero de heap y dos punteros a funciones. Hasta hid-universal-pidff, el único llamador era hid_pidff_init() desde usbhid, que se ejecuta bajo HID_CLAIMED_INPUT y, por tanto, siempre tiene al menos un hid_input. universal_pidff_probe() inicia el dispositivo con HID_CONNECT_DEFAULT & ~HID_CONNECT_FF y después llama directamente a hid_pidff_init_with_quirks() siempre que el descriptor contenga una página de uso PID, omitiendo esa condición. Un descriptor de informes cuya única colección de aplicación esté en HID_UP_PID deja hid->inputs vacío mientras hid_connect() sigue teniendo éxito mediante la solicitud de hidraw, por lo que probe alcanza el list_entry() sin protección. La escritura ocurre en la ruta de probe USB, en la cola de trabajo de hotplug, por lo que basta con conectar un dispositivo malicioso para activarla; no se requiere software del atacante ni un usuario conectado. KASAN informa de una escritura de 8 bytes fuera de límites en hid_pidff_init_with_quirks(), alcanzada desde universal_pidff_probe(). Comprobar si la lista está vacía antes de derivar dev y devolver -ENODEV, como ya hacen los demás controladores HID de force-feedback. universal_pidff_probe() propaga el error y deshace los cambios. Descubierto por XBOW, clasificado por Baul Lee <[email protected]>

Artículos relacionados

This product uses the NVD API but is not endorsed or certified by the NVD.

La descripción técnica es una traducción nuestra del texto original de NVD, en inglés.

Base de datos CVE