
CVE-2026-98432 Linux TCP use-after-free 向けツールキット:カーネルパッチチェック、レースオラクルによるトリガー、pcap UAF 解析、KASLR スライド復元、nftables ハードニング。

倫理的な使用のみ – 許可されたセキュリティテスト
このリポジトリは、許可を得たセキュリティ専門家、ブルーチーム、ペネトレーションテスターのみにツールを提供します。 コンピュータシステムへの不正アクセスは、CFAA(米国)、Computer Misuse Act(英国)、TCK 243/244(トルコ)、および世界中の同様の法律の下で違法です。

CVE-2026-98432 は、Linux カーネルの IPv4 TCP スタックにおけるユースアフターフリーです。IPv4 オプションを含む受信 SYN により、カーネルはそれらのオプションのコピーをリクエストソケットに保存します。適切なタイミングで SYN が再送されると、ある CPU がそのコピーを解放している間に別の CPU が SYN-ACK を構築するためにそのコピーを読み取ってしまい、ip_options_build() でユースアフターフリーが発生します。
2 つ目のトリガーは、サーバーが保留中の接続リクエストをソケット間で移行する場合(net.ipv4.tcp_migrate_req=1、または BPF_SK_REUSEPORT_SELECT_OR_MIGRATE プログラム)に存在します。どちらのトリガーも同じ根本原因を共有しています。inet_sock_destruct() と tcp_v4_reqsk_destructor() が、RCU の猶予期間を待たずに単純な kfree() でオプションを解放してしまうのです。
tcp_v4_save_options() が受信した IPv4 オプション(ireq_opt)をリクエストソケットに保存します。tcp_v4_syn_recv_sock() が ireq_opt をコピーせずに子ソケットへ渡します。inet_sock_destruct() が inet_opt を単純な kfree() で解放します。tcp_v4_send_synack() → ip_options_build() に到達し、すでに解放済みのオプションを読み取ります。上流の修正はコミット e3f33b0a1d89(「ipv4: free inet_opt and ireq_opt after an RCU grace period」)で、両方の解放を kfree_rcu() に変換しています。IPv6 は主要な問題の影響を受けません。
5.15.0-xxx のようなディストリビューションのバージョンを上流の番号と比較しないでください。ベンダー独自のセキュリティトラッカーを確認してください。| 日付 | 観察事項 | ソース |
|---|---|---|
| 2026-11-04 | Ubuntu 22.04 LTS(およびそれ以降)では、修正が依然として -proposed にのみ存在する。標準の -updates ユーザーは、修正が昇格されるまで脆弱なカーネルのままである。影響を受けるリリースでは MPTCP がデフォルトで有効になっているが、このバグは MPTCP 固有のものではない。 | Ubuntu CVE Tracker · Ubuntu Blog – Fixes in -proposed |
| 2026-11-02 | AWS は、この脆弱性が Linux カーネル 4.4 以降に影響し、Ubuntu ベースの Lightsail ブループリントが対象範囲に含まれることを確認した。緩和策は、パッチ適用済みカーネルをインストールするか、IP オプション付きの IPv4 TCP パケットをドロップする一時的なファイアウォールルールを適用することである。 | AWS Docs – Address CVE-2026-98432 on Lightsail |
| 2026-10-15 | 公式カーネル CVE アナウンス:根本原因は、inet_opt / ireq_opt の kfree() 前の RCU グレースピリオドの欠如である。5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56、7.2.10、7.3-rc7 で修正済み。 | Linux CVE Announce – Openwall |
注記: これらの観察事項は露出(脆弱なカーネル + 標準 Ubuntu でのデフォルト MPTCP)と公式の修正状況を確認するものであり、このリポジトリのエクスプロイトが特定のホストで正常に実行されたことを確認するものではない。
| ツール | 目的 | 対象ユーザー |
|---|---|---|
cve_2026_98432 | レッドチームおよびブルーチーム向けツールキット。ソースおよびランタイムのパッチチェック、ネットワークプローブ、マーカー再利用検出を備えたレースオラクル、pcap 解析、KASLR スライド復元、緩和策のガイダンス。対話式メニューまたは直接フラグによる単一コマンド。 | レッドチーム、ブルーチーム、許可されたペネトレーションテスター |
--check | ローカルカーネルバージョンおよびソースツリーの検査。 | ブルーチーム、監査担当者 |
--probe | TCP リスナーに到達可能であり、IPv4 SYN オプションがスタックに到達することを確認する。 | レッドチーム、ブルーチーム |
--race | マーカーベースのレースオラクル。細工した SYN を送信し、SYN-ACK を検査してフロー間のマーカー再利用を検出する。 | レッドチーム(Prob) |
--pcap | オフライン pcap 解析。UAF の証拠とカーネルポインタの候補を検出する。 | ブルーチーム(Partial) |
--map | System.map を使用して、漏洩したテキストポインタから KASLR スライドを復元する。 | レッドチーム(Partial) |
--harden | 緩和策(MPTCP 無効化、マイグレーション無効化、IP オプションのドロップ)を適用またはプレビューする。 | ブルーチーム(Prob) |
| ラベル | 意味 |
|---|---|
| (ラベルなし) | 決定論的。同じ入力、同じ出力。 |
| (Prob) | レースの結果は実行ごとに変動する可能性がある。ツールは一定時間内で試行を繰り返す。 |
| (Partial) | 正しい入力に依存する。有効な pcap または一致する System.map が提供された場合にツールは機能する。 |
| 機能 | ステータス | 備考 |
|---|---|---|
| ソースツリーパッチチェック | 決定的 | af_inet.c と tcp_ipv4.c を読み取り、両方のデストラクタで kfree_rcu を探します。 |
| 実行中カーネルチェック | 決定的 | uname -r を修正済みバージョンテーブルと比較します。 |
| ネットワークプローブ | 決定的 | TCP 接続を開き、最小限の HTTP リクエストを送信します。 |
| レースオラクル | (Prob) | 細工した SYN を送信し、SYN-ACK におけるマーカーの再利用を観察します。root と CAP_NET_RAW が必要です。 |
| Pcap 解析 | (Partial) | pcap を解析し、クロスフローのマーカー再利用とカーネルポインタ候補を探します。 |
| KASLR スライド復元 | (Partial) | 一致する System.map と、少なくとも 1 つの漏洩した text ポインタが必要です。 |
| 緩和策の適用 | (Prob) | nftables ルールと sysctl を書き込みます。このルールは IP オプションを含む IPv4 TCP パケットをドロップします。 |
| マススキャン | 決定的 | CIDR、ファイル、または単一ターゲット。レート制限と進捗出力を備えた非同期処理。 |
| JSON / JSONL / CSV | 決定的 | 出力ファイルの拡張子によって選択されます。 |
| プロキシ / Tor / ジッター | 決定的 | すべてのネットワーク操作に適用されます。 |
| レジューム | 決定的 | 完了した target:port のペアを状態ファイルに保存します。 |
git clone https://github.com/tc4dy/CVE-2026-98432-PoC-Exploit
cd CVE-2026-98432-PoC-Exploit
# No requirements; no extra pip packages needed.
リポジトリのルートからツールキットを起動します:
python -m cve_2026_98432
フラグを指定しない場合、インタラクティブメニューが開きます:
[1] source patch check
[2] network probe (Prob)
[3] race trigger (Prob)
[4] pcap analysis (Partial)
[5] KASLR resolve (Partial)
[6] apply hardening (Prob)
[0] exit
| フラグ | 説明 |
|---|---|
-t, --target | ターゲットの IP、ホスト名、または CIDR |
-l, --list | ターゲットを含むファイル(1 行に 1 件、# はコメント) |
-p, --port | ターゲットポート(デフォルト: 80) |
--timeout | 接続/読み取りタイムアウト(秒)(デフォルト: 10.0) |
--check | ローカルのカーネルおよびソースツリーのパッチチェックを実行 |
--probe | TCP リスナーに到達可能であることを確認 |
--race | レースオラクル(Prob)を実行 |
--pcap | pcap ファイルを解析 |
--map | KASLR スライド復元用の System.map |
--harden | 緩和策プランを表示、または --apply で適用 |
--apply | 緩和策を適用(root 権限が必要) |
--proxy | 単一の SOCKS5 プロキシ(例: socks5://127.0.0.1:1080) |
--proxy-file | SOCKS5 プロキシを含むファイル(リクエストごとにローテーション) |
--tor | Tor 経由でルーティング(socks5://127.0.0.1:9050) |
--jitter | リクエスト間の MIN-MAX 秒(デフォルト: 0-2) |
--rate-limit | 1 秒あたりのリクエスト数(デフォルト: 5.0) |
--threads | 大量スキャン用の同時ワーカー数(デフォルト: 10) |
--resume | 大量スキャンを再開するための状態ファイル |
-o, --output | 結果を .json、.jsonl、または .csv に保存 |
-v, --verbose | 詳細出力 |
-q, --quiet | エラー以外の出力を抑制 |
--dry-run | パケットを送信せずにプランを表示 |
--no-color | ANSI カラーを無効化 |