{"id":21550,"date":"2026-09-12T04:31:20","date_gmt":"2026-09-11T20:31:20","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89628"},"modified":"2026-09-12T04:31:20","modified_gmt":"2026-09-11T20:31:20","slug":"cve-2026-89628","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89628","title":{"rendered":"CVE-2026-89628 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nHID: picolcd: clamp e"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: picolcd: clamp eeprom debugfs read to bytes actually received<\/p>\n<p>picolcd_debug_eeprom_read() trusts resp-&gt;raw_data[2] &#8212; a length byte<br \/>\nsupplied by the device in its REPORT_EE_DATA reply &#8212; clamped only to<br \/>\nthe caller&#8217;s read() count:<\/p>\n<p>\tret = resp-&gt;raw_data[2];<br \/>\n\tif (ret &gt; s)<br \/>\n\t\tret = s;<br \/>\n\tif (copy_to_user(u, resp-&gt;raw_data+3, ret))<\/p>\n<p>It never checks resp-&gt;raw_size, the number of bytes picolcd_raw_event()<br \/>\nactually copied into the 64-byte raw_data[] of the kmalloc&#8217;d struct<br \/>\npicolcd_pending. A device (or a spoofed picoLCD) returning a length byte<br \/>\nof 0xff, read with a count &gt;= 255, makes copy_to_user() read past<br \/>\nraw_data[] into adjacent slab memory and return it to userspace through<br \/>\nthe debugfs &#8220;eeprom&#8221; file:<\/p>\n<p>\tBUG: KASAN: slab-out-of-bounds in _copy_to_user<br \/>\n\tRead of size 255 &#8230; picolcd_debug_eeprom_read+0x214\/0x2f0 [hid_picolcd]<\/p>\n<p>The debug-dump path in the same file already validates the device length<br \/>\nbyte against the received size before trusting it; this read does not.<br \/>\nThe file is created S_IRUSR (root-only) and a crafted device is needed,<br \/>\nso it is neither unprivileged- nor remotely-triggerable.<\/p>\n<p>Clamp the copy length to resp-&gt;raw_size &#8211; 3 (the payload actually<br \/>\nreceived, minus the 3-byte header), floored at 0 for short replies.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: picolcd: clamp eeprom debugfs read to bytes actually received<\/p>\n<p>picolcd_debug_eeprom_read() trusts resp-&gt;raw_data[2] &#8212; a lengt<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21550","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21550","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21550"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21550"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21550"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}