
CVE-2026-98432に対する暫定的なnftables緩和策、自動ロールバック、およびロシア語の管理者ガイド。カーネルパッチではありません。
Linuxサーバーの一時的な保護:狭いIPv4 TCPフィルター、状態確認、 バックアップとロールバック。監査はカーネルの修正とフィルターの動作を切り分けます。
Audit: работающее ядро → пакет → основание → UNKNOWN при нехватке данных
Protection: inet + bridge → строгая проверка → откат через 180 секунд
Validation: обычный TCP / IP options / UDP в отдельном namespace
Monitoring: проверка по таймеру → журнал ошибок, без изменения firewall
これはカーネルパッチではなく、あらゆるエクスプロイト手法の排除を保証するものでもありません。 このスクリプトは、CVE-2026-98432 の既知の IPv4 TCP/IP-options 経路に対する限定的なネットワークフィルタをインストールします。最終的な修正は、まさにこの CVE に対する修正が確認されたカーネルと、そのカーネルへの起動です。
推奨事項の有効性は2026年11月1日に確認されています。適用前に、お使いのディストリビューションのベンダーによる最新のステータスを確認してください。
Anthropic のデモでは MPTCP リスナーが使用されていました。Go Security Team は次のように警告しています。エラー自体はカーネルの共通 IPv4 TCP コードに存在するため、MPTCP ソケットが存在しないことは安全性を証明しません。GODEBUG=multipathtcp=0 は既知の攻撃経路に対する追加の制限であり、カーネルの修正の代替ではありません。
このスクリプトは MPTCP を変更せず、アップデートをインストールせず、アプリケーションを再起動せず、サーバを再起動しません。フィルタは既に開いているリスナーに対しても機能します。
2つの独立した nftables テーブル:
inet cve_2026_98432_guard: IP ヘッダ長が 20 バイトを超える IPv4 TCP パケット;bridge cve_2026_98432_guard: ブリッジ上の同様のパケット。その他のトラフィックは既存のルールへそのまま通過します。完全な flush ruleset は行わず、Docker/Kubernetes/SSH その他サービスのルールは置き換えられません。
これは IPv4 options のフィルタリングであり、TCP options ではありません。通常の TCP timestamps、window scaling、SACK、標準的な SSH/HTTPS 接続はこの条件ではブロックされません。IPv4 options を伴う正当な TCP トラフィックも破棄されます: ご利用のネットワークの要件を確認してください。
Linux、root、nft、Python 3.8+、Bash、systemd、およびカーネルによる nftables の inet/bridge サポートが必要です。
スクリプトはディストリビューションの firewall サービスを有効化せず、依存関係もインストールしません。
--check による検査は、適用前に必要な機能の欠如を検出します。
サーバのポリシーに適合する場合の、不足しているツールのインストール例:
# Debian / Ubuntu:
sudo apt-get install nftables python3
# RHEL / Rocky / AlmaLinux:
sudo dnf install nftables python3
OpenWrt、RouterOS、BSD、Windows、古いNAS、root/CAP_NET_ADMINのないコンテナ、およびsystemdのないシステムは、このインストーラーではサポートされません。これらにはメーカー別の個別手順が必要です。このスクリプトは汎用的な脆弱性スキャナーとは見なせません。手動プロファイルのAlpine/WSLについては、個別の手順を参照してください。
bash mitigate.sh --audit
sudo bash mitigate.sh --audit --json
監査はメタデータと設定を読み取るだけです。ネットワークをスキャンしたり、
エクスプロイトを実行したり、アップデートをダウンロードしたり、firewall を変更したりはしません。root なしでは一部の結果は
UNKNOWN になります。レポートにはインターフェース名や PID が含まれる場合があります。公開前に
匿名化してください。
| JSON フィールド | 意味 |
|---|---|
patch.state | 稼働中のカーネルに対する PATCHED、VULNERABLE、または UNKNOWN |
enforcement.enforcement | 両方のテーブルが完全一致した場合にのみ ACTIVE_VERIFIED |
persistence.state | CONFIGURED — unit が有効。実際の reboot では検証されていない |
coverage.state | PARTIAL_OR_UNKNOWN: namespaces/CNI/NetLabel は個別の分析が必要 |
rollback_timer, monitor_timer | 自動ロールバックと任意の監視の状態 |
schema_version: 1。--audit の終了コード 0 はレポートの収集が完了したことを意味し、
脆弱性がないことを意味するものではありません。独立したフィールドと reason を確認してください。
Patch assessment は稼働中のカーネルを正確なパッケージと照合します。組み込みの
vendor-baselines は 01.11.2026 時点で Debian 12/13 のみ検証済みです: linux 6.1/6.12
および bookworm linux-6.12。これらは
Debian tracker に基づいています。
その他のブランチ、Ubuntu、WSL、未検証のディストリビューションでは、結果は
UNKNOWN のままであり、uname の番号や changelog 内の CVE の単なる
言及から導き出されることはありません。既知の vendor trackers については、レポートにリンクが含まれます。
これはパッケージのメタデータへの信頼であり、バイナリの認証ではありません。
custom kernels と livepatch は別途検証されます。
監査は可視の netns 32 個に制限されています: MPTCP リスナーの数は表示しますが、
namespaces のカバレッジを証明するものではありません。十分なデータがない場合、
CIPSO は UNKNOWN のままです。netlabelctl の不在は labeling の不在を証明しません。
まずコードをダウンロードして読んでください。curl | sudo bash は使用しないでください。
git clone https://github.com/ZombiePm/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
less mitigate.sh
sudo bash mitigate.sh --check
sudo bash mitigate.sh --apply
NetLabel/CIPSO または MLS ポリシーが検出された場合、適用はインストールの変更前に停止します。互換性の分析後、リスクの明示的な確認:
sudo bash mitigate.sh --apply --accept-ipv4-options-risk
このフラグは、保護を拡張するのではなく、IP options を含む正規のトラフィックを妨害するリスクを受け入れます。labeling の兆候が見つからない場合でも、互換性は UNKNOWN と表示されます。
--apply の後は、180秒後の自動ロールバックが有効になります。現在のターミナルを保存してください。サーバーへの新しい SSH 接続を開き、VPN、サイト、API、メール、クラスタ通信などの重要なサービスを外部から確認してください。
すべてが動作している場合は、新しい接続から:
cd cve-2026-98432-mitigation
sudo bash mitigate.sh --status
sudo bash mitigate.sh --confirm
--confirm はロールバックタイマーをキャンセルします。これがない場合、保護は自動的に削除されます。
確認後、systemd は次回のサーバー起動時にフィルターを読み込みます。
確認または手動ロールバックを行うまで、サーバーを再起動しないでください。
一度に1つのノードに適用してください。Kubernetes やクラスターの場合は、まず接続が維持されることを確認してから、次のノードに進んでください。
sudo bash mitigate.sh --status
sudo nft list table inet cve_2026_98432_guard
sudo nft list table bridge cve_2026_98432_guard
systemctl status cve-2026-98432-guard.service
journalctl -u cve-2026-98432-guard.service --no-pager
packets 0 カウンターは、一致したパケットが存在しないことを意味し、保護が存在しないことを意味するものではありません。
MPTCP を使用するプログラムを個別に確認する:
sudo ss -Mlnp
-t を追加しないでください。MPTCP のみを表示したい場合、これにより通常の TCP ソケットが選択対象に追加されます。MPTCP の出力が空であっても、CVE が解消されたことを確認するものではありません。
再起動後、および firewall の変更/再読み込みの後は、--status を再度実行してください。
別の管理者や firewall マネージャーが完全な flush ruleset を実行すると、これらのテーブルが削除される可能性があります。その場合は、まず管理側の設定を確認してください。保存されたフィルタを再読み込みするには:
sudo systemctl restart cve-2026-98432-guard.service
新しい SSH 接続からの確認と --confirm の後:
sudo bash mitigate.sh --watch-enable
systemctl status cve-2026-98432-check.timer
journalctl -u cve-2026-98432-check.service --no-pager
sudo bash mitigate.sh --watch-disable
タイマーは60秒ごとに厳密な --status を実行し、起動後の最初のチェックは2分後です。ルールの復元、sysctlの変更、外部通知の送信は行いません。failed unit を独自の監視に接続してください。チェック間にはフィルタのない間隔が生じる可能性があり、これは継続的な保護ではありません。--rollback はこのタイマーも無効化します。
sudo bash mitigate.sh --rollback
コマンドはタイマーを停止し、unit を無効化し、自身の2つのテーブルのみを削除します。設定ファイルとバックアップは確認用に残ります。修正済みカーネルをインストールするまでのロールバックは、悪用リスクを再び招きます。
必要に応じて手動で:
sudo systemctl stop cve-2026-98432-rollback.timer
sudo systemctl disable --now cve-2026-98432-guard.service
sudo nft delete table inet cve_2026_98432_guard
sudo nft delete table bridge cve_2026_98432_guard
/etc/cve-2026-98432.nft — この保護のルールのみ;/usr/local/sbin/cve-2026-98432-guard — ローダー/ロールバック;/usr/local/sbin/cve-2026-98432-admin — 制御用にインストールされた CLI のコピー;/var/lib/cve-2026-98432-guard/audit.py — 読み取り専用監査のコンパニオン;/etc/systemd/system/cve-2026-98432-check.{service,timer} — --watch-enable の後のみ;/etc/systemd/system/cve-2026-98432-guard.service — 自動起動;/var/lib/cve-2026-98432-guard/backup-* — 以前の自身のファイルとテーブル。リポジトリ内の guard.nft は、組み込みルールの可読コピーです。mitigate.sh
はインストールと厳格なルール検証に自己完結しており、追加の監査は
audit.py に実装されています。ランタイムローダーは /etc からインストール済みのファイルを使用します。
netlabelctl ユーティリティの不在は、ラベリングの不在を証明するものではありません。uname -r を確認してください。2026年10月30日時点で、Canonical は依然としていくつかの Ubuntu カーネルフレーバーを 脆弱 / work in progress とマークしていました。より新しい番号のためだけに、任意の mainline カーネルを本番サーバーにインストールしないでください。