CVE-2026-89625
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
HID: sony: napraw UAF ghl_poke_timer / ghl_urb przy rozłączaniu sterownika
W przypadku kluczy sprzętowych GHL (Guitar Hero Live) sony_probe() uzbraja okresowy timer:
ghl_magic_poke() (wywołanie zwrotne timera) przesyła sc->ghl_urb i URB
zakończenie ghl_magic_poke_cb() ponownie uzbraja timer za pomocą mod_timer().
sony_remove() opróżniło timer za pomocą timer_delete_sync(), a następnie zwolniło
URB za pomocą usb_free_urb():
timer_delete_sync(&sc->ghl_poke_timer);
usb_free_urb(sc->ghl_urb);
timer_delete_sync() nie blokuje ponownego uzbrojenia, gdy URB jest włączony
lotu, licznik czasu nie oczekuje, więc usunięcie synchronizacji nie wchodzi w grę. URB
zakończenie, które jest uruchamiane po usunięciu, ponownie uzbraja timer, a usb_free_urb()
usuwa tylko odniesienie - nie zabija URB w locie. sc jest
przydzielane za pomocą devm_kzalloc() i zwalniane po powrocie sony_remove(), więc
ponownie uzbrojony ghl_poke_timer (wbudowany w sc), a następnie uruchamia zwolnioną pamięć, a
użyj po-wolny od timera softirq. To jest wyścig o rozłączenie/rmmod.
Najpierw zatruj URB, a następnie wyłącz licznik czasu, zanim uwolnisz URB.
usb_poison_urb() zabija wszystkie URB w locie i trwale odrzuca dalsze
zgłoszeń, więc licznik czasu poke, który wciąż oczekuje, nie może przesłać ponownie
URB z ghl_magic_poke() w oknie przed uruchomieniem timera_shutdown_sync().
usb_kill_urb() nie wystarczy: anuluje jedynie URB w locie i
pozostawia możliwość przesłania po powrocie, więc oczekujący licznik czasu może
prześlij go ponownie i umieść nowy URB w locie nad uwolnionym sc.
timer_shutdown_sync() następnie wyczerpuje ostatnie wywołanie zwrotne i blokuje ponowne uzbrojenie.
Ścieżka błędu sondy pozostaje niezmieniona: zostaje osiągnięta dopiero przed upływem czasu
jest uzbrojony.
Powielone przez KASAN w następnym roku 20260710 poprzez dummy_hcd + raw-gadget
emulacja klucza sprzętowego GHL PS4 (VID 0x1430 / PID 0x07bb): hid-sony binds
i uzbraja timer poke, poke URB jest utrzymywany w locie, kierowca jest
niezwiązany (uwalniający sc), następnie uwalniany jest URB. Zakończenie ponownie uzbraja
timer na uwolnionym sc, a ponownie uzbrojony timer uruchamia się ~8 s później:
BŁĄD: KASAN: użycie płyty po zwolnieniu w ghl_magic_poke+0x98/0xb0
Odczyt rozmiaru 8 pod adresem ffff88810b02fd50 przez funkcję zamiany zadań/0/0
ghl_magic_poke+0x98/0xb0
call_timer_fn+0x35/0x2b0
__run_timers+0x69c/0x9a0
run_timer_softirq+0x173/0x2a0
Przydzielone przez zadanie 169: sony_probe
Uwolniony przez zadanie 338: devres_release_group <- hid_device_remove (sony_remove)
Znaleziono przez 0sec (https://0sec.ai) za pomocą automatycznej analizy źródła.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org