CVE-2026-64277

In the Linux kernel, the following vulnerability has been resolved: Input: synaptics-rmi4 - bound the F3A keymap to the GPIO count rmi_f3a_initialize() takes the GPIO count from the device query register (f3a->gpio_count = buf & RMI_F3A_GPIO_COUNT, range 0..127). rmi_f3a_map_gpios() then allocates gpio_key_map with min(gpio_count, TRACKSTICK_RANGE_END) == at most 6 entries, but rmi_f3a_attention() iterates the full gpio_count and dereferences gpio_key_map[i], and input->keycodemax is set to the full gpio_count while input->keycode points at the 6-entry allocation. A device that reports gpio_count > 6 therefore causes an out-of-bounds read of gpio_key_map[] on every attention interrupt, and out-of-bounds accesses through the input core's default keymap ioctls: EVIOCGKEYCODE reads past the buffer (leaking adjacent slab memory to user space) and EVIOCSKEYCODE writes a caller-controlled value past it, for any process able to open the evdev node, since input_default_getkeycode() and input_default_setkeycode() only bound the index against keycodemax. Size the keymap for the full gpio_count. The mapping loop is unchanged: it still assigns only the first min(gpio_count, TRACKSTICK_RANGE_END) entries; the remaining slots stay KEY_RESERVED (devm_kcalloc zero-fills) and are skipped when reporting.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

24 Oct 2026, 13:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: Input: synaptics-rmi4 - vinculó el mapa de teclas F3A al recuento de GPIO rmi_f3a_initialize() toma el recuento de GPIO del registro de consulta del dispositivo (f3a -> gpio_count = buf & RMI_F3A_GPIO_COUNT, rango 0..127). rmi_f3a_map_gpios() luego asigna gpio_key_map con min(gpio_count, TRACKSTICK_RANGE_END) == como máximo 6 entradas, pero rmi_f3a_attention() itera el gpio_count completo y desreferencia gpio_key_map[i], y input -> keycodemax se establece en el gpio_count completo mientras que input -> keycode apunta a la asignación de 6 entradas. Un dispositivo que reporta gpio_count > 6, por lo tanto, causa una lectura fuera de límites de gpio_key_map[] en cada interrupción de atención, y accesos fuera de límites a través de los ioctls del mapa de teclas predeterminado del núcleo de entrada: EVIOCGKEYCODE lee más allá del búfer (filtrando memoria slab adyacente al espacio de usuario) y EVIOCSKEYCODE escribe un valor controlado por el llamador más allá de él, para cualquier proceso capaz de abrir el nodo evdev, ya que input_default_getkeycode() y input_default_setkeycode() solo vincularon el índice contra keycodemax. Dimensionar el mapa de teclas para el gpio_count completo. El bucle de mapeo no ha cambiado: todavía asigna solo las primeras min(gpio_count, TRACKSTICK_RANGE_END) entradas; las ranuras restantes permanecen KEY_RESERVED (devm_kcalloc rellena con ceros) y se omiten al informar.

19 Oct 2026, 21:17

Type Values Removed Values Added
CWE CWE-787

Information

Published : 2026-07-25 10:17

Updated : 2026-10-24 13:10


NVD link : CVE-2026-64277

Mitre link : CVE-2026-64277

CVE.ORG link : CVE-2026-64277


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-125

Out-of-bounds Read

CWE-787

Out-of-bounds Write