CVE-2026-98432
ipv4: RCU グレースピリオド後に inet_opt と ireq_opt を解放する
- 公開済み
- 2026/10/15
- 更新済み
- 2026/11/03
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/11/01
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H低 · 今後 30 日間
- パーセンタイル
- 39.6%
- モデルの日付
- 2026/11/02
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Linuxカーネルにおいて、以下の脆弱性が修正されました: ipv4: RCU グレースピリオド後に inet_opt と ireq_opt を解放する。tcp_v4_syn_recv_sock() は ireq->ireq_opt の所有権をコピーせずに子ソケット (newinet->inet_opt) へ移譲します。別の CPU が同じ request ソケットに対する再送 SYN を同時に処理し、tcp_check_req() から SYNACK を送信する可能性があります。tcp_v4_send_synack() と inet_csk_route_req() は rcu_read_lock() の下でのみ ireq->ireq_opt を読み取り、その後 ip_build_and_send_pkt() と ip_options_build() が opt->optlen を二度読み取ります。なお、SYNACK タイマー自体は問題ではありません: タイマーは自身の request ソケットへの参照を保持しており、inet_csk_reqsk_queue_drop() が子ソケットの解放前に timer_delete_sync() を呼び出すためです。コミット 079096f103fa (「tcp/dccp: install syn_recv requests into ehash table」) 以降、request ソケットはリスナーロックを保持せずに処理されるため、SYNACK の構築中に子ソケットが解放されることを防ぐものは何もありません。TCP の子ソケットは SOCK_RCU_FREE を持たず、inet_sock_destruct() は inet_opt を単純な kfree() で解放するため、ip_options_build() において use-after-free が発生します。同様の問題が request ソケットのマイグレーション (net.ipv4.tcp_migrate_req=1、または BPF_SK_REUSEPORT_SELECT_OR_MIGRATE プログラム) にも存在します。reqsk_timer_handler() は inet_reqsk_clone() で request ソケットをクローンするため、元の request ソケットとそのクローンは同じ ireq_opt を共有し、その後 reqsk_migrate_reset() が元の側のポインタをクリアします。元の request ソケットへの参照を保持する別の CPU が、クローンが解放された時点でこれらのオプションをまだ使用している (SYNACK の送信、または tcp_v4_syn_recv_sock() での子ソケットの作成) 可能性があり、tcp_v4_reqsk_destructor() も単純な kfree() を使用しています。読み取り側はすでに RCU を使用しており、inet_opt を置き換える他の経路 (do_ip_setsockopt()、cipso_v4_sock_setattr() など) もすでに kfree_rcu() を使用しています。inet_sock_destruct() と tcp_v4_reqsk_destructor() でも同様に kfree_rcu() を使用してください。IPv6 は最初の問題の影響を受けません。tcp_v6_syn_recv_sock() がオプションを複製するためです。tcp_v6_reqsk_destructor() には ipv6_opt に関する同様のマイグレーション問題があり、これは CALIPSO によってのみ設定されます。これについては別のパッチで対処します。
ソース
CVE-2026-98432(Linux IPv4 TCP の ireq_opt ユースアフターフリー)を、差分 SYN-ACK オプションエコーによるブラックボックスリモートプローブと、静的 vmlinux 検証によって検出します。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。