CVE-2026-64270

In the Linux kernel, the following vulnerability has been resolved: Input: mms114 - reject an oversized device packet size mms114_interrupt() reads a packet of touch data from the device into a fixed-size on-stack buffer struct mms114_touch touch[MMS114_MAX_TOUCH]; which holds MMS114_MAX_TOUCH (10) events of MMS114_EVENT_SIZE (8) bytes, i.e. 80 bytes. The length of the I2C read into it is taken verbatim from the device: packet_size = mms114_read_reg(data, MMS114_PACKET_SIZE); if (packet_size <= 0) goto out; ... error = __mms114_read_reg(data, MMS114_INFORMATION, packet_size, (u8 *)touch); packet_size is a single device register byte (0x0F) and the only check is the lower bound packet_size <= 0; it is never bounded against the size of touch[]. A malfunctioning, malicious or counterfeit controller (or an attacker tampering with the I2C bus) can report a packet_size of up to 255, so __mms114_read_reg() writes up to 175 bytes past the end of touch[] on the IRQ-thread stack: a stack out-of-bounds write that can overwrite the stack canary, saved registers and the return address. A well-formed device never reports more than the buffer holds, so reject an oversized packet and drop the report, consistent with the handler's other error paths, rather than reading past the buffer.
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:*:*:*:*:*:*:*:*

History

24 Oct 2026, 13:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: Entrada: mms114 - rechazar un tamaño de paquete de dispositivo sobredimensionado mms114_interrupt() lee un paquete de datos táctiles del dispositivo en un búfer de tamaño fijo en la pila struct mms114_touch touch[MMS114_MAX_TOUCH]; que contiene MMS114_MAX_TOUCH (10) eventos de MMS114_EVENT_SIZE (8) bytes, es decir, 80 bytes. La longitud de la lectura I2C en él se toma textualmente del dispositivo: packet_size = mms114_read_reg(data, MMS114_PACKET_SIZE); if (packet_size menor o igual que 0) goto out; ... error = __mms114_read_reg(data, MMS114_INFORMATION, packet_size, (u8 *)touch); packet_size es un solo byte de registro del dispositivo (0x0F) y la única comprobación es el límite inferior packet_size menor o igual que 0; nunca se limita contra el tamaño de touch[]. Un controlador defectuoso, malicioso o falsificado (o un atacante manipulando el bus I2C) puede informar un packet_size de hasta 255, por lo que __mms114_read_reg() escribe hasta 175 bytes más allá del final de touch[] en la pila del hilo IRQ: una escritura fuera de límites de la pila que puede sobrescribir el canario de la pila, los registros guardados y la dirección de retorno. Un dispositivo bien formado nunca informa más de lo que contiene el búfer, por lo tanto, rechazar un paquete sobredimensionado y descartar el informe, consistente con otras rutas de error del gestor, en lugar de leer más allá del búfer.

Information

Published : 2026-07-25 10:17

Updated : 2026-10-24 13:10


NVD link : CVE-2026-64270

Mitre link : CVE-2026-64270

CVE.ORG link : CVE-2026-64270


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-787

Out-of-bounds Write