CVE-2026-74677 in Linux情報

要約

〜によって VulDB • 2026年08月23日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

net: usb: ipheth: disconnect時のcarrier_workにおけるUse-After-Free(UAF)を修正

ipheth_sndbulk_callback()は、非ゼロのURBステータスが発生するたびにキャリア確認用ワークを再スケジュールします。

```c else schedule_delayed_work(&dev->carrier_work, 0); ```

この処理はインターフェースがアップしていることと紐付けられていないため、ipheth_close()によって既にクリーンアップされた後でもワークが再度有効化され、プライベート領域に組み込まれているnetdevが解放されるまで有効な状態のままになります。

TX URBが送信中の状態で取り外し(unplug)が行われると、ipheh_disconnect()は unregister_netdev() -> ipheth_close() -> cancel_delayed_work_sync() を通じてワークをクリーンアップしますが、その後でipheth_kill_urbs()を呼び出します。usb_kill_urb()は送信中のTX URBを -ENOENT で完了させるため、ipheth_sndbulk_callback() はクリーンアップ後に実行され、carrier_workを再スケジュールしてしまいます。

同様に、インターフェースがダウンしている間に TX URB が送信中の場合にも、この完了処理によってワークが再スケジュールされます。その結果、ipheth_carrier_check_work() は1秒ごとに自己をキューに入れ続けます。unregister_netdev()は、すでにダウンしているインターフェースに対して ipheth_close() を呼び出さないため、後の取り外し時にもそれをクリーンアップする処理が行われません。

どちらの場合も、free_netdev() が carrier_work が保留中である状態で netdev を解放するため、ipheth_carrier_check_work() は解放されたメモリを間接参照(dereference)してしまいます。

この問題を解決するために、ワークの完了を追跡するのではなく、インターフェースの状態にワークを紐付けます。ipheth_close() で無効化し、ipheth_open() で有効化することで、URBの完了時に schedule_delayed_work() が呼び出されても、インターフェースがアップしていない場合は何もしない(no-op)ようにします。disable_delayed_work_sync() は実行中のインスタンスも待機するため、置き換える cancel_delayed_work_sync() を完全に代替できます。ワークは ipheth_probe() で無効化された状態で開始されるため、最初のオープンから有効/無効のカウントがバランス取れます。

linux-next (next-20260731) 上で KASAN を使用し、dummy_hcd と raw-gadget をデバイスとして模して上記2番目のパス(インターフェースは既にダウンしているため、unregister_netdev() は ipheth_close() を呼び出さない)を駆動することで再現しました。パッチ未適用のブート15回中15回で __run_timers() における slab-use-after-free が報告されました。これは ipheth_disconnect() によって解放され、ipheth_sndbulk_callback() から queue_delayed_work_on() を経由して再スケジュールされたものです。このトリガーを本パッチのみが異なるカーネルで実行したところ、15回中0回のレポートとなり、キャリアチェックはオープン/クローズサイクル全体を通じて正常に機能しました。

再現には、ルート権限で駆動する必要がある「バルクOUTの draining を停止させるUSBデバイス」およびリンクダウンと取り外しが必要です。これは特権昇格(privilege boundary crossing)ではなく、エクスプロイトプリミティブは開発されていません。

0sec (https://0sec.ai) によって発見されました。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年08月15日

モデレーション

承諾済み

エントリ

VDB-394445

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!