CVE-2026-89628

Source
https://cve.org/CVERecord?id=CVE-2026-89628
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89628.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-89628
Downstream
Published
2026-09-11T19:45:24Z
Modified
2026-09-13T03:47:20Z
Summary
HID: picolcd: clamp eeprom debugfs read to bytes actually received
Details

In the Linux kernel, the following vulnerability has been resolved:

HID: picolcd: clamp eeprom debugfs read to bytes actually received

picolcd_debug_eeprom_read() trusts resp->raw_data[2] -- a length byte supplied by the device in its REPORT_EE_DATA reply -- clamped only to the caller's read() count:

ret = resp->raw_data[2];
if (ret > s)
	ret = s;
if (copy_to_user(u, resp->raw_data+3, ret))

It never checks resp->raw_size, the number of bytes picolcd_raw_event() actually copied into the 64-byte raw_data[] of the kmalloc'd struct picolcd_pending. A device (or a spoofed picoLCD) returning a length byte of 0xff, read with a count >= 255, makes copy_to_user() read past raw_data[] into adjacent slab memory and return it to userspace through the debugfs "eeprom" file:

BUG: KASAN: slab-out-of-bounds in _copy_to_user
Read of size 255 ... picolcd_debug_eeprom_read+0x214/0x2f0 [hid_picolcd]

The debug-dump path in the same file already validates the device length byte against the received size before trusting it; this read does not. The file is created S_IRUSR (root-only) and a crafted device is needed, so it is neither unprivileged- nor remotely-triggerable.

Clamp the copy length to resp->raw_size - 3 (the payload actually received, minus the 3-byte header), floored at 0 for short replies.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89628.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
9bbf2b98ba11d00bd73e3254e15cfe17ccaff6ba
Fixed
a3e6e8d7198a9f3861861520a38b673684a1062b
Fixed
471f4a939c66d1d44aece2321807abf609fc9098
Fixed
699a3c8b56e168ca19d12722f3f5ef1d6f4b1d84
Fixed
e9c667395ac1f8024f623250b32bae4c7af9caa0

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89628.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.35
Fixed
6.12.109
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.50
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.2.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89628.json"