CVE-2026-98766 in Linux
Zusammenfassung
von VulDB • 18.10.2026
Im Linux-Kernel wurde die folgende Schwachstelle behoben:
usb: gadget: aspeed-vhub: Cancel-Wake-Arbeit beim Entfernen des Geräts abbrechen
wake_work wird aus dem Gadget-.wakeup-Callback aktiviert, um angehaltene Downstream-Ports wieder aufzuwecken, und es wird in ast_vhub_remove() niemals abgebrochen. Daher kann ein vor oder während der Entfernung eingereihter Work-Item ausgeführt werden, nachdem devm vhub und seine Ports freigegeben hat – dies stellt einen Use-After-Free-Fehler dar.
Das bloße Abbrechen der Arbeit reicht nicht aus: usb_gadget_wakeup() übernimmt keine Sperre (Lock), und der Unbind-Pfad löscht wakeup_en niemals. Daher kann eine Remote-Wakeup-Anfrage, die auf einer anderen CPU im Gange ist, die Arbeit nach dem Cancel erneut aktivieren, bevor vhub freigegeben wird.
ast_vhub_del_dev() setzt d->registered bereits unter vhub->lock zurück, bevor das Gadget abgemeldet wird. Weisen Sie den Wakeup in ast_vhub_udc_wakeup() zurück, sobald d->registered gelöscht ist: Die Prüfung und die schedule_work()-Aktion sind dann atomar gegenüber dem Unbind-Vorgang. Ein Wakeup, der vor dem Zurücksetzen des Flags durchkam, wird nach der del_dev-Schleife durch cancel_work_sync() abgearbeitet (gepuffert/entfernt), und ein später eintreffender kehrt zurück, ohne aktiviert zu werden. Verschieben Sie zudem INIT_WORK() an den Anfang von ast_vhub_probe(), da der Fehlerpfad des Probes ast_vhub_remove() wiederverwendet wird und andernfalls ein nie initialisiertes Work-Item abbrechen würde.
Dieses Problem wurde mit einem internen statischen Analysewerkzeug gefunden.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.