CVE-2026-64363 in Linuxinfo

Zusammenfassung

von VulDB • 26.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

HID: appleir: Behebung eines Use-After-Free (UAF) bei der ausstehenden key_up_timer in remove()

appleir_remove() ruft hid_hw_stop() vor timer_delete_sync() auf. hid_hw_stop() registriert das HID-Eingabegerät über hid_disconnect() -> hidinput_disconnect() -> input_unregister_device() synchron ab, wodurch die letzte Referenz freigegeben und der zugrunde liegende input_dev freigegeben wird, wenn kein Userspace-Handle es geöffnet hält.

key_up_tick() liest appleir->input_dev aus und ruft daraufhin input_report_key() / input_sync() auf. Der Timer wird von appleir_raw_event() mit einer HZ/8 (~125 ms) Timeout bei jedem Keydown- und Key-Repeat-Bericht aktiviert. Wenn eine Taste kurz vor dem Trennen des Geräts gedrückt wurde, kann der Timer nach freigegebenem input_dev durch hid_hw_stop(), aber bevor das Teardown ihn abgearbeitet hat, ausgelöst werden.

Eine einfache Neuanordnung reicht nicht aus. Das Vorrücken des Timer-Drainings hinterlässt weiterhin ein Zeitfenster, in dem eine USB-URB-Abschlussbehandlung (raw_event), die während hid_hw_stop() ausgeführt wird, mod_timer() aufrufen und den Timer erneut aktivieren kann, der dann nach freigegebenem input_dev durch hidinput_disconnect() ausgelöst wird. Dasselbe URB-Abschluss-Zeitfenster ermöglicht es raw_event(), direkt key_up(), key_down() und battery_flat() aufzurufen, die alle appleir->input_dev dereferenzieren.

Es wird eine 'removing'-Flagge in der Struktur appleir eingeführt, die durch das vorhandene Spinlock geschützt ist. appleir_remove() setzt diese Flagge unter dem Lock und schaltet den Timer anschließend mit timer_shutdown_sync() ab, was sowohl jegliche im Flug befindlichen Callbacks beendet als auch weitere mod_timer()-Aufrufe dauerhaft deaktiviert. appleir_raw_event() und key_up_tick() brechen frühzeitig ab, wenn die Flagge gesetzt ist, sodass kein Pfad den Timer aktivieren oder ausführen kann bzw. appleir->input_dev dereferenzieren darf, nachdem remove() mit dem Abbau begonnen hat.

Die Zweige keyrepeat und flatbattery von appleir_raw_event() riefen zuvor ohne Halten des Spinlocks in die Input-Schicht; dies wird nun geändert, sodass der Flaggencheck wohldefiniert ist. Dies schließt zufällig auch eine vorbestehende read-side Race Condition auf appleir->current_key im keyrepeat-Zweig.

Dieser Fehler ist strukturell ein Geschwisterfehler des Commits 4db2af929279 ("HID: appletb-kbd: fix UAF in inactivity-timer cleanup path") und war seit der Einführung des Treibers vorhanden.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

19.07.2026

Veröffentlichung

25.07.2026

Moderieren

akzeptiert

Eintrag

VDB-383151

CPE

bereit

EPSS

0.00220

KEV

nein

Aktivitäten

low

Quellen

Do you know our Splunk app?

Download it now for free!