CVE-2026-31624

In the Linux kernel, the following vulnerability has been resolved: HID: core: clamp report_size in s32ton() to avoid undefined shift s32ton() shifts by n-1 where n is the field's report_size, a value that comes directly from a HID device. The HID parser bounds report_size only to <= 256, so a broken HID device can supply a report descriptor with a wide field that triggers shift exponents up to 256 on a 32-bit type when an output report is built via hid_output_field() or hid_set_field(). Commit ec61b41918587 ("HID: core: fix shift-out-of-bounds in hid_report_raw_event") added the same n > 32 clamp to the function snto32(), but s32ton() was never given the same fix as I guess syzbot hadn't figured out how to fuzz a device the same way. Fix this up by just clamping the max value of n, just like snto32() does.
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:2.6.20:-:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: HID: core: limitar report_size en s32ton() para evitar un desplazamiento indefinido s32ton() desplaza por n-1 donde n es el report_size del campo, un valor que proviene directamente de un dispositivo HID. El analizador HID limita report_size solo a menor o igual que 256, por lo que un dispositivo HID defectuoso puede proporcionar un descriptor de informe con un campo amplio que activa exponentes de desplazamiento de hasta 256 en un tipo de 32 bits cuando se construye un informe de salida a través de hid_output_field() o hid_set_field(). El commit ec61b41918587 (’HID: core: corregir desplazamiento fuera de límites en hid_report_raw_event’) añadió la misma limitación n mayor que 32 a la función snto32(), pero s32ton() nunca recibió la misma corrección ya que supongo que syzbot no había descubierto cómo fuzzear un dispositivo de la misma manera. Corregir esto simplemente limitando el valor máximo de n, tal como lo hace snto32().

15 Oct 2026, 02:19

Type Values Removed Values Added
References
  • () https://cert-portal.siemens.com/productcert/html/ssa-784472.html -

Information

Published : 2026-04-24 15:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31624

Mitre link : CVE-2026-31624

CVE.ORG link : CVE-2026-31624


JSON object : View

Products Affected

linux

  • linux_kernel