PoC Released for Linux Kernel STP Use-After-Free Vulnerability
2026/08/06 gbhackers — Linux カーネルの “net/bridge” に存在するソフトウェア・ブリッジ実装に影響を及ぼす、解放後使用 (Use-After-Free) 脆弱性に対する実証コード (PoC) がリリースされた。この脆弱性は、Spanning Tree Protocol (STP) タイマー・ライフサイクル内で発生する。これにより、タイマー構造が解放済みのブリッジ・メモリを参照する可能性があり、制御フロー・ハイジャックが可能になり得る。

この問題を SSD Secure Disclosure テクニカル・チームが公表したのは、TyphoonPWN 2026 コンペティションの後である。同コンペティションでは、この問題を特定した独立系の研究者 n132 と Sven Sze が、Linux 権限昇格カテゴリで 2 位を獲得した。
Linux は、コミット “2a00517db8de4be7df3d483b215c5544fb30a191” で修正をリリースし、この脆弱性に対処した。
STP タイマー・ライフタイムの欠陥
Linux ソフトウェア・ブリッジ・ドライバーは、”hello_timer”/”tcn_timer”/”topology_change_timer”/ポート固有のタイマーなどの、複数の周期タイマーを通じて STP 状態を管理する。
これらのタイマー構造は “struct net_bridge” 内に埋め込まれている。この構造体は、ブリッジ・インターフェイスを支える “net_device” のプライベート・データ部分に割り当てられる。
この設計により、タイマーの安全性は適切なデバイス破棄に左右される。1 つ以上の STP タイマーが、CPU ごとのタイマー・ベース上にキューされた状態でブリッジ・デバイスが解放されると、その後のタイマー実行が、すでにスラブ・アロケータに返却されたメモリへアクセスする可能性がある。
この脆弱性は、ブリッジ・インターフェイスが管理上 down の状態で、カーネル STP が有効化されている場合に発生する。ブリッジとポート・コンフィグを操作できる攻撃者またはローカル・ユーザーであれば、ブリッジ・ポートを LEARNING 状態へ遷移させ、STP コードに周期タイマーを有効化させることが可能となる。
重要な点として、ブリッジに IFF_UP フラグが設定されているかどうかを、影響を受けるタイマー設定経路は検証しない。そのため、ブリッジ・インターフェイス自体が down であっても、タイマーのスケジュールが可能になる。
この欠陥は、インターフェイス停止経路と削除経路の間にある、クリーンアップ挙動の不整合に起因する。
ブリッジが UP から DOWN へ遷移すると、標準の “ndo_stop” 経路により “br_dev_stop()” が発生し、続いて “br_stp_disable_bridge()” が実行される。
このクリーンアップ関数は、”del_timer_sync()” を使用して STP タイマーを同期的に削除し、ブリッジ・メモリが解放された後にコールバックが実行されることを防ぐ。
しかし、すでに down になっているブリッジを直接削除すると、”br_dev_delete()” を通じた “dellink” 経路へと遷移してしまう。この経路では、”br_stp_disable_bridge()” が呼び出されない。
さらに、”unregister_netdevice_many()” は、すでに down になっているインターフェイスに対して “ndo_stop” を呼び出さない。その結果として、STP が有効であり、ポートが LEARNING 状態にあるブリッジが、active な状態のタイマーを削除する可能性がある。
続いて、基盤となる “net_device” が解放され、キューされたタイマー・エントリが、解放済みの “kmalloc-cg-8k” スラブ・メモリを指した状態で残される。
その後に、CPU ごとのタイマー・ベースが softirq コンテキストで “__run_timers()” を実行すると、カーネルは “call_timer_fn()” を通じて dangling timer callback を発生させる可能性がある。
公表された分析が示すのは、攻撃者が制御するデータで解放済みオブジェクトを再取得することで、タイマー関数ポインタの置き換えが可能になる点だ。つまり、この問題が、潜在的なカーネル制御フロー・ハイジャック・プリミティブへ変化し得ることが示唆される。
Admin にとって必要なことは、upstream パッチの適用もしくは、コミット “2a00517db8de4be7df3d483b215c5544fb30a191” を含むカーネル・ビルドへのアップデートである。
訳者後書:Linux Kernel のソフトウェア・ブリッジ実装における脆弱性の動向を紹介する記事です。ネットワーク接続を制御する内部タイマーの解放処理に不備があり、すでに破棄されたメモリへ不正にアクセスできてしまう状態が存在しています。この問題が悪用されると、ローカル環境からシステムの制御権限を奪われ、カーネル内部で任意の処理を実行される危険があります。システムを安全に利用するためにも、修正用コミットが適用された最新のカーネル環境へ速やかに更新することが推奨されます。
You must be logged in to post a comment.