Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
kernel98scan — LinuxホストはCVE-2026-98432に晒されていますか? | Kitploit
ツール/GitHubGitHub/akaihigurashi/kernel98scan
防御ツール偵察脆弱性スキャナーネットワークマッピングポートスキャン脆弱性分析構成監査情報収集ウェブセキュリティ
GitHubakaihigurashi/kernel98scan

kernel98scan

LinuxホストはCVE-2026-98432に晒されていますか?

12日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見るウェブサイト

kernel98scan

Linux ホストが CVE-2026-98432 に晒されている可能性があるかどうかをチェックします。これはカーネルの IPv4 TCP ハンドシェイクにおける use-after-free です。shouldipanic.ch の一部です。

IPv4 オプション(Record Route、Timestamp)を含む SYN が、すでに解放された可能性のあるオプションを読み取るコードに到達します。開いている IPv4 TCP ポートが1つあれば十分で、ログインは不要です。これは 4.4(2016年)以降のすべてのカーネルに存在し、各ツリーの修正版まで影響します: 5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56、7.2.10、7.3。カーネル CNA はこれを 9.8 と評価しています。MPTCP リスナーを持つサーバーに対する動作するリモート root エクスプロイトが報告されています(未公開)。修正はネットワーク上では見えません: 修正済みカーネルは未パッチのものとまったく同じように応答します。

このことが各モードで言える内容を形作っています:

  • --on-host はマシン自体で実行中のカーネルを読み取ります: そのバージョン、パッケージの changelog、そして新しいカーネルが再起動を待っているかどうか。
  • 外部からは誰もカーネルを読むことはできません。kernel98scan は HTTP の Server ヘッダーから Linux ディストリビューションを読み取り、そのディストリビューションが修正済みカーネルをまだリリースしているかどうかを表示します。これは強いヒントであり、判定ではありません: リバースプロキシの背後やコンテナ内では、カーネルは別のマシンのものです。

kernel98scan には2つの形態があります:

  • kernel98scan.py: 依存関係のない単一の Python ファイルです。ホスト上では --on-host が実際の判定を提供します。アドレスを指定すると、IP 範囲にわたってディストリビューションのフィンガープリンティングをポートスキャンと vhost 検出とともに行います。
  • Web ページ(Docker イメージ)では、誰でも1つのホストを外部からチェックでき、悪用対策が施されています。kernel98scan.shouldipanic.ch で実行されています。

Ubuntu を表示するサーバーの結果

コマンドライン

curl -LO https://github.com/akaihigurashi/kernel98scan/releases/latest/download/kernel98scan.py
python3 kernel98scan.py --on-host           # real verdict for THIS machine

Python 3.8 以降、インストール不要。例:

python3 kernel98scan.py --on-host                       # read the running kernel
python3 kernel98scan.py 203.0.113.10                    # outside: distribution + fix status
python3 kernel98scan.py 203.0.113.0/24                  # a whole range from outside
python3 kernel98scan.py 203.0.113.10 --ip-options       # + do IP-options packets get through?
python3 kernel98scan.py 203.0.113.10 -o out.csv         # CSV output
python3 kernel98scan.py -h                              # all options

ホスト上(--on-host、終了コード 2 / 1 / 0 / 3):

ステータス意味
VULNERABLE実行中のカーネルに修正を示すものが何もない
CHECK修正済みカーネルはインストールされているが、古いカーネルがまだ実行中:再起動が必要
FIXEDカーネルの changelog に CVE が記載されている、または素のアップストリームカーネルが修正バージョンである

ベンダーカーネル(Ubuntu、RHEL、Proxmox)は修正を古いバージョン番号にバックポートするため、 それらについては changelog のみが判断材料となります。また、MPTCP が有効かどうか(報告された exploit は MPTCP リスナーを経由します)と tcp_migrate_req も表示します。

外部から:

ステータス意味
POSSIBLY VULNERABLEバナーが Linux ディストリビューションを示している:修正済みカーネルがまだ存在しない(現在の Ubuntu、RHEL およびその再ビルド版)か、存在するがインストールして起動する必要がある
UNKNOWNディストリビューションが判別できない、またはプロキシ/CDN が応答している
NOT LINUXServer ヘッダーが非 Linux ホストを指している

VULNERABLE と PATCHED が外部から報告されることはありません。ディストリビューションごとの 修正ステータスは check.py 内のテーブル(FIX_STATUS、FIXED_TABLE)にあり、 各ベンダーのリリースごとに更新されます。

オプション動作
--on-hostこのマシンで実行中のカーネルを読み取り、実際の判定を出す
--ip-optionsSYN に Record-Route IP オプションを載せた接続を 1 つ行う(下記参照)
-o FILEすべての結果を CSV にも書き出す
-a / -v非表示の結果を表示 / 根拠を表示
-dデバッグ:すべてのリクエスト、ヘッダー、マッチを表示
-qバナーなし(スクリプト向け)
-Vバージョンを表示
-hすべてのオプションを表示

--ip-options(オプトイン、コマンドラインのみ)

通常の接続を 1 つと、SYN に空の Record-Route IP オプションを載せた接続を 1 つ開き、そのような パケットがホストに到達するか(reach)、途中で破棄されるか(filtered)、ポートが閉じているか (noport)を報告します。これはバグに到達するためのパケット形状であるため、デフォルトでは オフで、Web ページ上では決して実行されません。自分のホストで使用し、たとえばファイアウォールが IP オプションを破棄することを確認するのに使ってください。単一の connect ではバグに必要な レースに勝つことはできず、filtered という結果は途中の任意のネットワークによるものであり得ます。

修正済みカーネルが動作するまでの緩和策

nft add table ip cve98432
nft add chain ip cve98432 pre '{ type filter hook prerouting priority -300; }'
nft add rule ip cve98432 pre meta l4proto tcp ip hdrlength != 5 drop
sysctl -w net.mptcp.enabled=0     # if you don't need MPTCP

IPv4 TCPパケットでIPオプションを含むものをドロップします。再起動後は永続化されず、修正済みカーネルの代替にはなりません。

Dockerを使用したWebページ

docker run -d --name kernel98scan --restart unless-stopped \
  -p 127.0.0.1:8092:8092 \
  -e PANIC_ORIGIN=https://kernel98scan.example.ch \
  -v kernel98scan-data:/data \
  ghcr.io/akaihigurashi/kernel98scan:latest

または Compose を使用する場合:docker-compose.yml をダウンロードし、PANIC_ORIGIN を設定してから docker compose up -d を実行します。コンテナは localhost のみで待ち受けます。その前に TLS 付きのリバースプロキシを配置してください(nginx の例)。

変数デフォルト目的
PANIC_ORIGIN–公開アドレス。他のオリジンからのリクエストは拒否されます。必ず設定してください。
PANIC_OPERATOR / PANIC_CONTACT–ページ下部の任意の連絡先セクション
PANIC_IMPRINT_URL–既存のインプリントへの任意のリンク
PANIC_TRUSTED_PROXY127.0.0.1,::1X-Real-IP ヘッダーが信頼されるプロキシ
PANIC_DENY_HOSTS / PANIC_DENY_IPS–これらのドメイン / アドレスは決してチェックしない
PANIC_AUDIT_DIR/data/audit日次監査ログファイル
PANIC_RETENTION_DAYS30これより古い監査ファイルは削除される

このページには php2scan と同じ保護機能があります:同意チェックボックス、監査ログ、VPN/Tor/データセンターのクライアントの拒否、レート制限、結果キャッシュ、接続をチェック対象アドレスに固定した公開ホスト名のみ、決してチェックされないホスト(よく知られたサービス、アクセス数上位100サイト、政府サイト、制裁対象国)、および制裁対象国からのアクセス不可。Web ページはスタートページのみを読み込み、IP オプションを送信することは決してありません。

仕組み

スキャナーエンジン(フェッチ、フィンガープリンティング、ポートスキャン、vhost 検出、Web サーバー)は panic-core にあります。CVE-2026-98432 に固有のものはすべて check.py にあります。kernel98scan.py と web.py は両方から生成されます:

git clone https://github.com/akaihigurashi/panic-core ../panic-core
python3 ../panic-core/bundle.py check.py

ライセンス

GPL-3.0、詳細は LICENSE を参照してください。フォント: Bricolage Grotesque、Instrument Sans、JetBrains Mono(SIL Open Font License)。

ツールをダウンロード