CVE-2026-31624

CVE-2026-31624

Medium · published April 24, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
6.1
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00171 · 6.1th percentile
Published
2026-04-24T19:16Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.20.1, < 6.6.1366.6.136
linux/linux_kernel≥ 6.7, < 6.12.836.12.83
linux/linux_kernel≥ 6.13, < 6.18.246.18.24
linux/linux_kernel≥ 6.19, < 6.19.146.19.14
linux/linux_kernel≥ 7.0, < 7.0.17.0.1
linux/linux_kernelall versions—
References (10)
EPSS history
Timeline
  • 24 APR 14:42Z
    HID: core: clamp report_size in s32ton() to avoid undefined shift
    cvelistv5