CVE-2026-64523 in Linux
要約
〜によって VulDB • 2026年07月27日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net/handshake: 送信時に長期生存するファイル参照を取得する
handshake_nl_accept_doit() は、req->hr_sk->sk_socket を裏付けるファイルポインタが、handshake_req_next() とその後の FD_PREPARE() および get_file() の間のウィンドウを生き残る必要がある。送信側の sock_hold() ではこれが保証されない。sk_refcnt は struct sock を生存させるが、struct socket は sock->file によって所有されている: コンシューマが最後のファイル参照を解放すると、sock_release() が呼び出され、sock_hold があってもソケットは破棄される。
handshake_req に hr_file ポインタを追加し、handshake_req_submit() の実行中に sock->file に対する明示的な参照を取得する。handshake_complete() および handshake_req_cancel() は、完了ビットの競合に勝ったパスでその参照を解放する。
送信側のエラーパスでもファイル参照を解放しなければならないが、rhashtable への挿入後、並行して発生した handshake_req_cancel() がリクエストを発見し、エラーパスとレース状態になる可能性があるため注意が必要である。エラーパスのクリーンアップ(sk_destruct の復元、fput、およびリクエストの破棄)は、handshake_complete() および handshake_req_cancel() によって既に使用されている test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) でゲート処理する。キャンセル側がすでに所有権を主張している場合、送信側のエラーパスはリクエストに触れることなく戻る; ソケットの破棄処理により最終的な破壊が行われる。
受信側のデリファレンスはまだ再ターゲットされていない; この変更は次のパッチで行う。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.