
LinuxサーバーでCVE-2026-98432(IPv4 TCP use-after-free、CVSS 9.8)をチェック:根本原因の解説、読み取り専用のチェックスクリプト、緩和策。
Linux カーネルの IPv4 TCP ハンドシェイクにおける競合状態を理解し、チェックしましょう。この脆弱性により、リモートの攻撃者が解放済みのカーネルメモリを利用できるようになります。Anthropic の Frontier Red Team はこれを、マルチパス TCP (MPTCP) リスナーを持つサーバーに対するゼロクリックの root エクスプロイトへと発展させました。2026年10月30日時点で、Ubuntu と Red Hat にはまだ修正済みカーネルがありません。
代わりにコマンド出力をブラウザに貼り付けてください: https://fbuff.com/tools/cve-2026-98432-checker/ (ローカルで実行され、何もアップロードされません)
すべての TCP 接続はハンドシェイクから始まります。クライアントが SYN を送信し、サーバーが SYN-ACK で応答し、クライアントが ACK で返答します。SYN と ACK の間、カーネルはハーフオープン接続のための小さなプレースホルダー、すなわち request socket を保持します。クライアントの SYN が IPv4 オプション (Record Route、Timestamp など) を伴っていた場合、SYN-ACK はそれらをエコーバックしなければならないため、カーネルはプレースホルダーとともにそれらを保持します (ireq_opt)。
ACK が到着すると、tcp_v4_syn_recv_sock() はプレースホルダーを完全なソケットに変換し、コピーではなく同じオプションブロックをそのまま渡します。これで2つのオブジェクトが1つのメモリブロックを指すことになります。完全なソケットが破棄されると、inet_sock_destruct() がそのブロックを単純な kfree() で即座に解放します。
プレースホルダーは確立済み接続のハッシュテーブルに存在し、他の CPU がロックなしで読み取ります (この設計はコミット 079096f103fa「tcp/dccp: install syn_recv requests into ehash table」、Linux 4.4、2015年に導入されました)。クライアントが適切なタイミングで SYN を再送信すると、別の CPU が SYN-ACK を再送信中であり、ブロックが解放されている最中に ip_options_build() 内でオプションを読み取ります。これが use-after-free です。
同じチケットを2人に渡してしまうクロークに例えられます。一方が立ち去ると、もう一方がまだチケットを持ってカウンターへ向かっている最中に、係員がそのチケットを捨ててしまいます。
修正 (アップストリームコミット e3f33b0a1d89「ipv4: free inet_opt and ireq_opt after an RCU grace period」、7.3-rc7) は、すべての CPU が読み取りを終えるまで待機する kfree_rcu() でブロックを解放します。IPv6 は tcp_v6_syn_recv_sock() がオプションをコピーするため、主要な問題の影響を受けません。同じメモリへの2つ目の経路が、リクエストマイグレーション (net.ipv4.tcp_migrate_req=1 または BPF_SK_REUSEPORT_SELECT_OR_MIGRATE プログラム) を通じて存在します。
| 評価者 | スコア | 備考 |
|---|---|---|
| Linux カーネル CVE チーム (CNA) | 9.8 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Red Hat | 8.1 | AC:H: 競合に勝つのは困難 (暫定) |
| Ubuntu | 9.8、優先度 High |
MPTCP は1つの接続で複数のパスを同時に使用できるようにします。Linux ではオプトイン方式です。プログラムが MPTCP ソケットを要求する必要があり、ss -Mltn でリッスン中のものを一覧表示できます。Anthropic のエクスプロイトは「マルチパス TCP リスナーを持つ Linux サーバー」を標的としています。CVE レコードも修正も MPTCP には言及しておらず、Anthropic は MPTCP リスナーを持たないサーバーが乗っ取られ得るかどうかを明言していません。MPTCP リスナーは root への実証済みの経路であり、未パッチのすべてのサーバーは依然として欠陥のあるコードを実行しています。
| ディストリビューション | ステータス |
|---|---|
| Debian 12 bookworm | 修正済み: linux 6.1.190-1 (DLA-4841-1)、linux-6.12 6.12.113-1~deb12u1 |
| Debian 13 trixie | 修正済み: linux 6.12.113-1 (DSA-6568-1) |
| Ubuntu 22.04、24.04、26.04、26.10 | 脆弱、修正作業中 |
| Ubuntu 16.04、18.04、20.04 | 脆弱 |
| Ubuntu 14.04 | 影響なし |
| Red Hat Enterprise Linux | 影響あり。Red Hat は基準を満たす緩和策はないと述べています |
| アップストリーム stable | 5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56、7.2.10、7.3 で修正済み |
curl -fsSLO https://raw.githubusercontent.com/fbuff-tools/cve-2026-98432-checker/main/check.sh
sh check.sh
スクリプトは uname -r、/etc/os-release、カーネルパッケージの changelog(rpm -q --changelog、またはネットワークが必要な apt changelog)、sysctl net.mptcp.enabled net.ipv4.tcp_migrate_req、ss -Mltn を読み取ります。判定結果を出力し、0(修正済みまたは影響なし)、1(脆弱)、2(判定不能)で終了します。読み取りのみを行い、何も送信・変更しません。コンテナはホストのカーネルを共有するため、ホスト上で実行してください。
Ubuntu の 6.8.0-85 や RHEL の 5.14.0-570 のようなディストリビューションのカーネルは、バージョン番号を変えずに修正をバックポートするため、その changelog でしか判別できません。アップストリーム形式のバージョン(6.12.113+deb13)は、上記の修正済みリリースと比較されます。
sudo apt update && sudo apt full-upgrade # Debian, Ubuntu
sudo dnf upgrade kernel # RHEL family, Amazon Linux 2023
sudo zypper patch # SUSE
sudo reboot
sudo sysctl -w net.mptcp.enabled=0
sudo sysctl -w net.ipv4.tcp_migrate_req=0
printf 'net.mptcp.enabled = 0\nnet.ipv4.tcp_migrate_req = 0\n' | sudo tee /etc/sysctl.d/90-cve-2026-98432.conf
ip_options_build や ip_build_and_send_pkt を名指しするカーネルログの行(journalctl -k)、または単一の送信元からの IPv4 オプション付き SYN のバーストである。手順 2〜4 はいずれもパッチの代替にはならず、完全な回避策として確認したベンダーは存在しない。
関連: KSMBD checker、HTTP2Shell checker、PHP2Shell checker。
情報は 2026年10月30日時点のもの。修正状況は急速に変わるため、ベンダーのトラッカーを確認すること。MIT ライセンス。fbuff 制作。