CVE-2026-89788 in Linux
要約
〜によって VulDB • 2026年09月17日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ksmbd: smb2_tree_connect()におけるtree connectionのuse-after-freeを修正
ksmbd_tree_conn_connect()は、sess->tree_connsに新しいtree connectionを単一参照で公開し、そのポインタをsmb2_tree_connect()へ返します。ハンドラはその後も初期化処理を継続し、レスポンスの構築を行います。並行してセッションログオフが発生すると、接続が削除されその参照が解放されるため、オブジェクトはハンドラがまだ使用している状態でfreeされてしまいます。
BUG: KASAN: slab-use-after-free in smb2_tree_connect+0xe3d/0xf90 smb2_tree_connect (fs/smb/server/smb2pdu.c:2872) handle_ksmbd_work process_one_work worker_thread kthread
xa_store()の成功後、tree_conns_lockを解放する前に第2の参照を取得します。元の参照はxarrayエントリに属し、第2の参照は作成元であるsmb2_tree_connect()ハンドラに属します。
すべてのパスで参照数をバランスさせます:
- 正常終了時または公開後のエラー発生時に、smb2_tree_connect()はその作成者による参照を解放します。エラー時のクリーンアップ処理ではksmbd_tree_conn_disconnect()も呼び出され、これは正確なエントリを削除した場合のみxarray参照を解放します。 - SMB2 TREE_DISCONNECTは同じヘルパーを使用してエントリを削除し、そのxarray参照を解放します。リクエストの既存のルックアップ参照はリクエストによって所有されており、既存のクリーンアップ処理により解放されます。 - セッションLOGOFFでは各エントリが削除され、そのxarray参照が解放されます。もしログオフ側がrace conditionに勝った場合、後のクリーンアップ処理はそのエントリが消えていることを確認し、再度参照を解放しません。
この所有権関係を強制するため、tree_conns_lockの下でdisconnected状態を宣言し、正確なエントリをアトミックに消去します。これにより、どのteardownパスが勝ったかに関わらず、xarray参照に対する1回の解放と、各実行中のユーザーによる1回の解放が保証されます。もしログオフ処理が初期化完了前にエントリを削除した場合、分離されたオブジェクトをTREE_CONNECTEDとしてマークするのではなく、接続自体に失敗させます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.