{"id":17284,"date":"2026-09-05T02:30:57","date_gmt":"2026-09-04T18:30:57","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80780"},"modified":"2026-09-05T02:30:57","modified_gmt":"2026-09-04T18:30:57","slug":"cve-2026-80780","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80780","title":{"rendered":"CVE-2026-80780 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nHID: pidff: fix OOB w"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: pidff: fix OOB write when hid-&gt;inputs is empty<\/p>\n<p>hid_pidff_init_with_quirks() derives its input_dev from<\/p>\n<p>\tlist_entry(hid-&gt;inputs.next, struct hid_input, list)<\/p>\n<p>without first checking that hid-&gt;inputs is non-empty.  The list member<br \/>\nof struct hid_input is at offset 0, so on an empty list list_entry()<br \/>\nyields &amp;hid-&gt;inputs itself and the following hidinput-&gt;input load reads<br \/>\nan unrelated member of struct hid_device.  dev is then a type-confused<br \/>\npointer, and force-feedback init writes through it: each<br \/>\nset_bit(FF_*, dev-&gt;ffbit) stores 8 bytes at dev + 192, past the end of<br \/>\nthe object dev actually aliases, and input_ff_create() adds further<br \/>\nwrites of a heap pointer and two function pointers.<\/p>\n<p>Until hid-universal-pidff the only caller was hid_pidff_init() from<br \/>\nusbhid, which runs under HID_CLAIMED_INPUT and therefore always has at<br \/>\nleast one hid_input.  universal_pidff_probe() starts the device with<br \/>\nHID_CONNECT_DEFAULT &amp; ~HID_CONNECT_FF and then calls<br \/>\nhid_pidff_init_with_quirks() directly whenever the descriptor carries a<br \/>\nPID usage page, bypassing that gate.  A report descriptor whose only<br \/>\napplication collection is on HID_UP_PID leaves hid-&gt;inputs empty while<br \/>\nhid_connect() still succeeds through the hidraw claim, so probe reaches<br \/>\nthe unguarded list_entry().<\/p>\n<p>The write happens in the USB probe path, on the hotplug workqueue, so<br \/>\nplugging in a malicious device is enough to trigger it; no attacker<br \/>\nsoftware and no logged-in user are required.  KASAN reports an 8-byte<br \/>\nout-of-bounds write in hid_pidff_init_with_quirks() reached from<br \/>\nuniversal_pidff_probe().<\/p>\n<p>Check for an empty list before deriving dev and return -ENODEV, as the<br \/>\nother HID force-feedback drivers already do.  universal_pidff_probe()<br \/>\npropagates the error and unwinds.<\/p>\n<p>Discovered by XBOW, triaged by Baul Lee <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: pidff: fix OOB write when hid-&gt;inputs is empty<\/p>\n<p>hid_pidff_init_with_quirks() derives its input_dev from<\/p>\n<p>\tlist_entry(hid-&gt;inpu<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-17284","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/17284","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=17284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}