CVE-2026-98598 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ipv6: 死滅しつつある fib6_info に対する rt6_insert_exception() の呼び出しを防止する。
前述のコミット以前は、fib6_nh_flush_exceptions() は常に rt6_exception_lock を保持した状態で from->exception_bucket_flushed = 1 を設定し、死滅しつつある fib6_info に対して rt6_insert_exception() が新しい例外を挿入しないようにしていました。
このフラグは、nh->rt6i_exception_bucket に格納される FIB6_EXCEPTION_BUCKET_FLUSHED ビットに置き換えられました。
問題は、現在そのビットがバケットが NULL でなく、かつ fib6_ref がすでにゼロに達した後に fib6_nh_release() から fib6_nh_flush_exceptions() が呼び出された場合のみ設定される点にあります。
fib6_purge_rt() を介して対象の fib6_info が削除されている間に rt6_insert_exception() が呼び出されると、rt6_flush_exceptions() がもはやビットを設定しないため、新しい例外が正常に作成されてしまう可能性があります。
これにより、fib6_info と例外ルーティングの間で参照サイクルが発生し、fib6_info、そのネクストホップデバイス、および fib6_nh->rt6i_pcpu 内のすべての per-CPU ルートリークします。これが netdev の_unregister_(登録解除)をストールさせます。
[ 34.680602] unregister_netdevice: gre6 が解放されるのを待機中。使用カウント = 68
[ 44.920675] unregister_netdevice: gre6 が解放されるのを待機中。使用カウント = 68
[ 55.176582] unregister_netdevice: gre6 が解放されるのを待機中。使用カウント = 68
rt6_flush_exceptions() の前に fib6_drop_pcpu_from() を呼び出して、fib6_destroying を rt6_exception_lock よりも早く設定し、rt6_insert_exception() で f6i->fib6_destroying をチェックします。
FIB6_EXCEPTION_BUCKET_FLUSHED のロジックは死んでいるため、net-next 内でこれをクリーンアップできます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.