CVE-2026-89999 in Linuxinformación

Resumen

por VulDB • 2026-09-17

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

HID: wacom: validar la longitud del informe en `wacom_intuos_pro2_bt_irq`

La función `wacom_intuos_pro2_bt_irq()` recibe la longitud del informe por cable en `len`, pero nunca la consulta antes de analizarla. Tras el filtro basado en el report-id, llama incondicionalmente a `wacom_intuos_pro2_bt_pen()` y luego, seleccionado mediante `features.type`, a una cadena fija de sub-analizadores (sub-parsers), ninguno de los cuales recibe `len`:

wacom_intuos_pro2_bt_pen(wacom); if (type == INTUOSP2_BT || type == INTUOSP2S_BT) {
wacom_intuos_pro2_bt_touch(wacom); wacom_intuos_pro2_bt_pad(wacom); wacom_intuos_pro2_bt_battery(wacom); } else {
wacom_intuos_gen3_bt_pad(wacom); wacom_intuos_gen3_bt_battery(wacom); }

Cada sub-anizador desreferencia `wacom->data` en desplazamientos fijos. El byte más lejano tocado en cada rama es:

INTUOSP2_BT / INTUOSP2S_BT: `wacom_intuos_pro2_bt_pad()` lee data[285]
(el byte del touchring), por lo que el informe debe tener al menos 286 bytes; INTUOSHT3_BT ("gen3"): `wacom_intuos_gen3_bt_battery()` lee data[45],
por lo que el informe debe tener al menos 46 bytes.

`features.type` se selecciona a partir de la entrada id_table VID/PID y `wacom_setup_device_quirks()` registra forzosamente las entradas pen/pad/touch para ese tipo, independientemente del descriptor de informes, por lo que un periférico Bluetooth emparejado o suplantado malicioso o defectuoso puede anunciar dicho VID/PID y enviar un informe más pequeño (undersized) que aún satisfaga el filtro `data[0] == 0x80/0x81`. El controlador entonces lee más allá del informe recibido y reenvía los bytes al espacio de usuario a través de evdev (MSC_SERIAL / ABS_MISC / ABS_WHEEL en los nodos de entrada pen y pad), lo que constituye una lectura fuera de límites con un canal concreto de lectura por parte del espacio de usuario, y una verdadera lectura fuera de límites en transportes cuyo búfer subyacente está dimensionado según el descriptor de informes (pequeño) en lugar de un búfer intermedio de tamaño fijo.

Se trata de la misma clase de error que el commit 2f1763f62909 ("HID: wacom: fix out-of-bounds read in wacom_intuos_bt_irq"), ya endurecido en `wacom_intuos_bt_irq`, hermano, que protege cada report-id contra su longitud mínima antes del análisis.

Proteger `wacom_intuos_pro2_bt_irq()` de la misma manera: antes de analizar, rechazar los informes más cortos que el desplazamiento máximo al que realmente desreferencia la rama seleccionada, emitir una advertencia y salir. Dado que toda la cadena pen/touch/pad/battery se ejecuta incondicionalmente por cada rama, una única comprobación inicial contra el desplazamiento máximo (286 bytes para INTUOSP2_BT/INTUOSP2S_BT, 46 bytes para la rama gen3) acota todos los sub-anizadores. Devolver 0 en un informe corto también omite esas llamadas para el mismo informe malformado, lo cual es el comportamiento seguro y conservador.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-09-11

Divulgación

2026-09-17

Moderación

aceptado

Artículo

VDB-405780

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you need the next level of professionalism?

Upgrade your account now!