CVE-2026-89628: HID: picolcd: clamp eeprom debugfs read to bytes actually received

Published Sep 11, 2026
·
Updated

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

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

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

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

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

BUG: KASAN: slab-out-of-bounds in copytouser Read of size 255 ... picolcddebugeepromread+0x214/0x2f0 [hidpicolcd]

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 SIRUSR (root-only) and a crafted device is needed, so it is neither unprivileged- nor remotely-triggerable.

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

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In picolcd_debug_eeprom_read(), before calling copy_to_user(), clamp the copy length to resp->raw_size - 3 (the payload actually received) rather than trusting resp->raw_data[2]; for short replies, floor the computed length at 0.

    Linux kernel (hid_picolcd / picolcd_debug_eeprom_read) Clamp length used by copy_to_user to (resp->raw_size - 3) and floor at 0 for short replies = Clamp to resp->raw_size - 3 (payload actually received) before trusting resp->raw_data[2]; if reply is short, use 0

Event History

Sep 11, 2026
CVE Published
via MITRE·07:45 PM
Data Sourced
via MITRE·07:45 PM
Description

Frequently Asked Questions

1

Can this be exploited by an unprivileged local user or remotely?

No. The affected debugfs eeprom file is root-only, and exploitation requires a crafted picoLCD device or a spoofed device returning a malicious REPORT_EE_DATA response.

2

What can an attacker obtain if exploitation succeeds?

A malicious device can cause the kernel to copy data beyond the 64-byte raw_data buffer into userspace. This may expose adjacent slab memory through the debugfs eeprom file.

3

Which systems are realistically exposed?

Exposure requires use of the hid_picolcd driver, access to its debugfs eeprom file as root, and interaction with a crafted or spoofed picoLCD device. The issue is not described as remotely or unprivileged-triggerable.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203