{"id":21547,"date":"2026-09-12T04:31:20","date_gmt":"2026-09-11T20:31:20","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89625"},"modified":"2026-09-12T04:31:20","modified_gmt":"2026-09-11T20:31:20","slug":"cve-2026-89625","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89625","title":{"rendered":"CVE-2026-89625 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nHID: sony: fix UAF of"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: sony: fix UAF of ghl_poke_timer \/ ghl_urb at driver unbind<\/p>\n<p>For GHL (Guitar Hero Live) dongles, sony_probe() arms a periodic timer:<br \/>\nghl_magic_poke() (the timer callback) submits sc-&gt;ghl_urb, and the URB<br \/>\ncompletion ghl_magic_poke_cb() re-arms the timer with mod_timer().<\/p>\n<p>sony_remove() drained the timer with timer_delete_sync() and then freed<br \/>\nthe URB with usb_free_urb():<\/p>\n<p>\ttimer_delete_sync(&amp;sc-&gt;ghl_poke_timer);<br \/>\n\tusb_free_urb(sc-&gt;ghl_urb);<\/p>\n<p>timer_delete_sync() does not block re-arming, and while the URB is in<br \/>\nflight the timer is not pending, so the sync delete is a no-op. A URB<br \/>\ncompletion that runs after the delete re-arms the timer, and usb_free_urb()<br \/>\nonly drops a reference &#8212; it does not kill an in-flight URB. sc is<br \/>\nallocated with devm_kzalloc() and freed once sony_remove() returns, so the<br \/>\nre-armed ghl_poke_timer (embedded in sc) then fires on freed memory, a<br \/>\nuse-after-free from timer softirq. This is a disconnect\/rmmod race.<\/p>\n<p>Poison the URB first, then shut the timer down, before freeing the URB.<br \/>\nusb_poison_urb() kills any in-flight URB and permanently rejects further<br \/>\nsubmissions, so a poke timer that is still pending cannot re-submit the<br \/>\nURB from ghl_magic_poke() in the window before timer_shutdown_sync() runs.<br \/>\nusb_kill_urb() would not suffice: it only cancels the in-flight URB and<br \/>\nleaves it submittable once it returns, so the pending timer could<br \/>\nre-submit it and put a fresh URB in flight over the freed sc.<br \/>\ntimer_shutdown_sync() then drains any last callback and blocks re-arming.<br \/>\nThe probe error path is unaffected: it is only reached before the timer<br \/>\nis armed.<\/p>\n<p>Reproduced under KASAN on next-20260710 via dummy_hcd + raw-gadget<br \/>\nemulation of the GHL PS4 dongle (VID 0x1430 \/ PID 0x07bb): hid-sony binds<br \/>\nand arms the poke timer, the poke URB is held in flight, the driver is<br \/>\nunbound (freeing sc), then the URB is released. The completion re-arms the<br \/>\ntimer on the freed sc, and the re-armed timer fires ~8 s later:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in ghl_magic_poke+0x98\/0xb0<br \/>\n  Read of size 8 at addr ffff88810b02fd50 by task swapper\/0\/0<br \/>\n   ghl_magic_poke+0x98\/0xb0<br \/>\n   call_timer_fn+0x35\/0x2b0<br \/>\n   __run_timers+0x69c\/0x9a0<br \/>\n   run_timer_softirq+0x173\/0x2a0<br \/>\n  Allocated by task 169:  sony_probe<br \/>\n  Freed by task 338:      devres_release_group &lt;- hid_device_remove (sony_remove)<\/p>\n<p>Found by 0sec (https:\/\/0sec.ai) using automated source analysis.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>HID: sony: fix UAF of ghl_poke_timer \/ ghl_urb at driver unbind<\/p>\n<p>For GHL (Guitar Hero Live) dongles, sony_probe() arms a periodic t<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21547","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21547","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=21547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}