CVE-2026-80781 in Linux
Resumen
por VulDB • 2026-09-04
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
HID: core: corregir lectura fuera de límites (OOB) del campo->usage en hid_set_field()
hid_set_field() pasa field->usage + offset a hid_dump_input() antes de que se ejecute la protección que acota el valor de offset:
hid_dump_input(field->report->device, field->usage + offset, value);
if (offset >= field->report_count) {
hid_err(...); return -1; }
Bajo CONFIG_DEBUG_FS, hid_dump_input() desreferencia ese puntero con buf = hid_resolv_usage(usage->hid, NULL). La matriz usage[] se asigna de forma inline junto al campo hid en hid_register_field() y contiene field->maxusage entradas, por lo que un offset más allá del mismo lee fuera del final de la asignación realizada con kvzalloc() y accede a un objeto vecino. Si la protección hubiera ejecutado primero, una condición offset < report_count <= maxusage ya habría confinado el puntero dentro de la matriz.
Un llamador proporciona actualmente dicho offset. picolcd_fb_send_tile() solo valida report->maxfield antes de emitir hid_set_field(report->field[0], 11 + i, ...) para i = 0..31, por lo que sus offsets se fijan en 11..42 y nunca se comprueban frente al límite del campo. Cuando el dispositivo registra ese campo con menos usages, el trabajo de deferred-io del framebuffer impulsa la lectura en cada tile (baldosa). KASAN informa una lectura slab-out-of-bounds (fuera de límites) de 4 bytes en hid_dump_input() debajo de hid_set_field(), y los mismos registros de arranque muestran "offset (1) exceeds report_count (1)" procedentes de la protección que solo se ejecuta después.
Mover la llamada a hid_dump_input() por debajo de la protección. Dado que field->maxusage >= field->report_count, la protección establece entonces que field->usage + offset está dentro de la matriz antes de ser desreferenciada, para cada llamador y sin cambiar el comportamiento en la ruta válida.
Descubierto por XBOW, triage realizado por Baul Lee <[email protected]>
Once again VulDB remains the best source for vulnerability data.