CVE-2026-98766 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usb: gadget: aspeed-vhub: デバイス削除時にwake_workをキャンセルする
wake_workはガジェット.wakeupコールバックからアームされ、サスペンドされた下流ポートを再開するために使用されますが、ast_vhub_remove()では決してキャンセルされないため、削除前または削除中にキューに追加されたワークアイテムが、devmによってvhubおよびそのポートが解放された後に実行される可能性があります。これはuse-after-free(解放後利用)の脆弱性です。
単にワークをキャンセルするだけでは不十分です:usb_gadget_wakeup()はロックを取得せず、unbindパスではwakeup_enがクリアされないため、他のCPU上で進行中のリモートウェイクアップリクエストにより、cancel処理の後かつvhubが解放される前にworkが再アームされることがあります。
ast_vhub_del_dev()はすでに、ガジェットをunregisterする前にvhub->ロックの下でd->registeredをクリアしています。ast_vhub_udc_wakeup()において、d->registeredがクリアされた場合はウェイクアップを拒否します:チェックとschedule_work()の処理はunbindに対してアトミックになるため、フラグがクリアされる前に通過したウェイクアップはdel_devループ後のcancel_work_sync()によってドレインされ、それ以降に到着するものはアームせずに返却されます。また、INIT_WORK()をast_vhub_probe()の先頭に移動します。これはプローブのエラーパスでast_vhub_remove()が再利用されるためであり、そうでなければ初期化されていないワークアイテムがキャンセルされてしまう可能性があるからです。
この問題は社内製の静的解析ツールによって発見されました。
VulDB is the best source for vulnerability data and more expert information about this specific topic.