Linux Kernel up to 6.12.108/6.18.49/7.2.3 picolcd hid-picolcd.c picolcd_debug_eeprom_read out-of-bounds

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 2.2 | $0-$5k | 0.42+ |
Summary
A vulnerability was found in Linux Kernel up to 6.12.108/6.18.49/7.2.3. It has been rated as problematic. Affected by this vulnerability is the function picolcd_debug_eeprom_read of the file hid-picolcd.c of the component picolcd. The manipulation leads to out-of-bounds.
This vulnerability is documented as CVE-2026-89628. The attack needs to be performed locally. There is not any exploit available.
Upgrading the affected component is advised.
Details
A vulnerability, which was classified as problematic, has been found in Linux Kernel up to 6.12.108/6.18.49/7.2.3. This issue affects the function picolcd_debug_eeprom_read of the file hid-picolcd.c of the component picolcd. The manipulation with an unknown input leads to a out-of-bounds vulnerability. Using CWE to declare the problem leads to CWE-125. The product reads data past the end, or before the beginning, of the intended buffer. Impacted is confidentiality. The summary by CVE is:
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.
The advisory is shared at git.kernel.org. The identification of this vulnerability is CVE-2026-89628 since 09/11/2026. The exploitation is known to be easy. An attack has to be approached locally. The exploitation needs additional levels of successful authentication. Technical details are known, but no exploit is available.
Upgrading to version 6.12.109, 6.18.50, 7.2.4 or 7.3-rc1 eliminates this vulnerability. Applying the patch a3e6e8d7198a9f3861861520a38b673684a1062b/471f4a939c66d1d44aece2321807abf609fc9098/699a3c8b56e168ca19d12722f3f5ef1d6f4b1d84/e9c667395ac1f8024f623250b32bae4c7af9caa0 is able to eliminate this problem. The best possible mitigation is suggested to be upgrading to the latest version.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Product
Type
Vendor
Name
Version
- 6.12.108
- 6.18.0
- 6.18.1
- 6.18.2
- 6.18.3
- 6.18.4
- 6.18.5
- 6.18.6
- 6.18.7
- 6.18.8
- 6.18.9
- 6.18.10
- 6.18.11
- 6.18.12
- 6.18.13
- 6.18.14
- 6.18.15
- 6.18.16
- 6.18.17
- 6.18.18
- 6.18.19
- 6.18.20
- 6.18.21
- 6.18.22
- 6.18.23
- 6.18.24
- 6.18.25
- 6.18.26
- 6.18.27
- 6.18.28
- 6.18.29
- 6.18.30
- 6.18.31
- 6.18.32
- 6.18.33
- 6.18.34
- 6.18.35
- 6.18.36
- 6.18.37
- 6.18.38
- 6.18.39
- 6.18.40
- 6.18.41
- 6.18.42
- 6.18.43
- 6.18.44
- 6.18.45
- 6.18.46
- 6.18.47
- 6.18.48
- 6.18.49
- 7.2.0
- 7.2.1
- 7.2.2
- 7.2.3
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 2.3VulDB Meta Temp Score: 2.2
VulDB Base Score: 2.3
VulDB Temp Score: 2.2
VulDB Vector: 🔒
VulDB Reliability: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: Out-of-boundsCWE: CWE-125 / CWE-119
CAPEC: 🔒
ATT&CK: 🔒
Physical: Partially
Local: Yes
Remote: No
Availability: 🔒
Status: Not defined
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Kernel 6.12.109/6.18.50/7.2.4/7.3-rc1
Patch: a3e6e8d7198a9f3861861520a38b673684a1062b/471f4a939c66d1d44aece2321807abf609fc9098/699a3c8b56e168ca19d12722f3f5ef1d6f4b1d84/e9c667395ac1f8024f623250b32bae4c7af9caa0
Timeline
09/11/2026 CVE reserved09/12/2026 Advisory disclosed
09/12/2026 VulDB entry created
09/12/2026 VulDB entry last update
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2026-89628 (🔒)
GCVE (CVE): GCVE-0-2026-89628
GCVE (VulDB): GCVE-100-402941
Entry
Created: 09/12/2026 02:00Changes: 09/12/2026 02:00 (60)
Complete: 🔍
Cache ID: 216::103
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
No comments yet. Languages: en.
Please log in to comment.