CVE-2026-98688 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
thunderbolt: tb_remove_work() における NULL ポインタ参照の修正
tb_remove_work() と tb_domain_remove() の間にわずかな競合状態があり、これにより tb_free_unplugged_xdomains() 内で tb->root_switch ポインタが NULL でデレファレンスされる問題が発生します:
スレッド A スレッド B
tb_remove_work() tb_domain_remove() mutex_lock(&tb->lock) tb_stop() /* 実行中のコールバックはキャンセルされない */ cancel_delayed_work(&tcm->remove_work) ... tb_switch_remove(tb->root_switch) tb->root_switch = NULL mutex_unlock(&tb->lock) mutex_lock(&tb->lock) ... /* ->root_switch のチェックなしで */ tb_free_unplugged_xdomains(tb->root_switch) mutex_unlock(&tb->lock)
コミット a8937f35cf39(「thunderbolt: &tb->ロックを保持せずに XDomain をバスから削除する」)は、特に tb_free_unplugged_xdomains() と tb->root_switch のチェックを &tb->lock セクションの外に移動させるべきではないようです。同コミットでは以下のように述べています:
この理由により、トポロジーデータ構造体からの XDomain の削除(ロックが必要となる箇所)と、バスからのデバイスの登録解除(ドライバの remove コールバックが呼び出される箇所)を分離する。
tb_free_unplugged_xdomains() は、ロックが必要な前者の関数群に属します。また、この関数は tb_xdomain_remove() を呼び出しますが、これは &tb->lock が保持されている場合にのみ呼び出すべきです。
Linux Verification Center (linuxtesting.org) による Svace静的解析ツールで発見されました。
Be aware that VulDB is the high quality source for vulnerability data.