{"id":24686,"date":"2026-09-16T20:32:38","date_gmt":"2026-09-16T12:32:38","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89999"},"modified":"2026-09-16T20:32:38","modified_gmt":"2026-09-16T12:32:38","slug":"cve-2026-89999","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89999","title":{"rendered":"CVE-2026-89999 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nHID: wacom: validate"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: wacom: validate report length in wacom_intuos_pro2_bt_irq<\/p>\n<p>wacom_intuos_pro2_bt_irq() receives the wire report length in `len`<br \/>\nbut never consults it before parsing. After the report-id gate it<br \/>\nunconditionally calls wacom_intuos_pro2_bt_pen() and then, selected by<br \/>\nfeatures.type, a fixed chain of sub-parsers, none of which receive<br \/>\n`len`:<\/p>\n<p>\twacom_intuos_pro2_bt_pen(wacom);<br \/>\n\tif (type == INTUOSP2_BT || type == INTUOSP2S_BT) {<br \/>\n\t\twacom_intuos_pro2_bt_touch(wacom);<br \/>\n\t\twacom_intuos_pro2_bt_pad(wacom);<br \/>\n\t\twacom_intuos_pro2_bt_battery(wacom);<br \/>\n\t} else {<br \/>\n\t\twacom_intuos_gen3_bt_pad(wacom);<br \/>\n\t\twacom_intuos_gen3_bt_battery(wacom);<br \/>\n\t}<\/p>\n<p>Each sub-parser dereferences wacom-&gt;data at fixed offsets. The furthest<br \/>\nbyte touched on each branch is:<\/p>\n<p>  INTUOSP2_BT \/ INTUOSP2S_BT: wacom_intuos_pro2_bt_pad() reads data[285]<br \/>\n\t(the touchring byte), so the report must be at least 286 bytes;<br \/>\n  INTUOSHT3_BT (&#8220;gen3&#8221;): wacom_intuos_gen3_bt_battery() reads data[45],<br \/>\n\tso the report must be at least 46 bytes.<\/p>\n<p>features.type is selected from the VID\/PID id_table entry and<br \/>\nwacom_setup_device_quirks() force-registers the pen\/pad\/touch inputs<br \/>\nfor that type independent of the report descriptor, so a malicious or<br \/>\nmalfunctioning paired\/spoofed Bluetooth peripheral can advertise that<br \/>\nVID\/PID and send an undersized report that still satisfies the<br \/>\ndata[0] == 0x80\/0x81 gate. The driver then reads past the received<br \/>\nreport and forwards the bytes to userspace via evdev (MSC_SERIAL \/<br \/>\nABS_MISC \/ ABS_WHEEL on the pen and pad input nodes), an out-of-bounds<br \/>\nread with a concrete userspace read-back channel, and a true<br \/>\nout-of-bounds read on transports whose backing buffer is sized to the<br \/>\n(small) report descriptor rather than a fixed-size staging buffer.<\/p>\n<p>This is the same class of bug commit 2f1763f62909 (&#8220;HID: wacom: fix<br \/>\nout-of-bounds read in wacom_intuos_bt_irq&#8221;) already hardened in the<br \/>\nsibling wacom_intuos_bt_irq(), which guards each report id against its<br \/>\nminimum length before parsing.<\/p>\n<p>Guard wacom_intuos_pro2_bt_irq() the same way: before parsing, reject<br \/>\nreports shorter than the furthest offset the selected branch actually<br \/>\ndereferences, warn, and bail out. Because the whole pen\/touch\/pad\/<br \/>\nbattery chain runs unconditionally per branch, a single up-front check<br \/>\nagainst the maximum offset (286 bytes for INTUOSP2_BT\/INTUOSP2S_BT,<br \/>\n46 bytes for the gen3 branch) bounds every sub-parser. Returning 0 on<br \/>\na short report also skips those calls for the same malformed report,<br \/>\nwhich is the safe, conservative behavior.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: wacom: validate report length in wacom_intuos_pro2_bt_irq<\/p>\n<p>wacom_intuos_pro2_bt_irq() receives the wire report length in `len`<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24686","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24686","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=24686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}