Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-23398-poc — 再現可能なラボ: CVE-2026-23398。これは、ICMP Fragmentation Needed パケットによってトリガーされる Linux カーネルの icmp_tag_validation() における NULL ポインタ参照であり、サービス拒否を引き起こします。QEMU VM セットアップ、Scapy PoC、およびパッチ適用済みカーネルと脆弱なカーネルをテストするためのスクリプトが含まれています。 | Kitploit
ツール/GitHubGitHub/zpol/cve-2026-23398-poc
脆弱性分析エクスプロイトファジングペネトレーションテスト学習と教育ラボと実践
GitHubzpol/cve-2026-23398-poc

cve-2026-23398-poc

再現可能なラボ: CVE-2026-23398。これは、ICMP Fragmentation Needed パケットによってトリガーされる Linux カーネルの icmp_tag_validation() における NULL ポインタ参照であり、サービス拒否を引き起こします。QEMU VM セットアップ、Scapy PoC、およびパッチ適用済みカーネルと脆弱なカーネルをテストするためのスクリプトが含まれています。

リポジトリを見る
14ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

ラボ: CVE-2026-23398 (ICMP / ip_no_pmtu_disc=3)

icmp_tag_validation() におけるLinuxカーネルバグ(net.ipv4.ip_no_pmtu_disc = 3 かつ、inet_protos[] にハンドラのないプロトコル番号を持つ引用された内部IPv4ヘッダーを含む Fragmentation Needed ICMPが到着した際のNULLポインタ参照)の再現可能なラボです。

許可された用途のみ: 所有しているシステム、または明示的な書面によるテスト許可を得たシステムのみ。影響はサービス拒否(カーネルパニック)です。


ホスト要件

コンポーネント目的
QEMU (qemu-system-x86_64, qemu-img)被害者VM
cloud-image-utils (cloud-localds)、wget、genisoimagecloud-init とイメージのダウンロード
Docker + Docker ComposeホストからのICMP送信者(host ネットワークモード)
OpenSSHクライアントSSH自動化
~/.ssh/id_ed25519.pub または id_rsa.pub のSSHキー、または sshpassパスワード入力をしないゲストログイン(キー推奨)
sudoTAPモードのみ(ホストからVMの固定IPへのICMP)

ホスト上のPython 3とScapyは、リモートペイロードにDockerを使用しない場合にのみ必要です。


リポジトリ構成

root@kitploit:~
├── send_frag_needed.py          # Scapy PoC (ICMP 3,4 + 一般的でないプロトコルを持つ内部IP)
├── send-payload-to-host.sh      # ネットワーク上のIP/ホスト名にペイロードを送信
├── docker-compose.yml           # "sender" サービス (host ネットワーク + CAP_NET_RAW)
├── Dockerfile
├── vm/                          # ディスク、cloud-init シード、QEMU シリアルログ
└── scripts/
    ├── fetch-image.sh
    ├── prepare-disk.sh
    ├── build-seed-dhcp.sh       # DHCP シード (usernet モード)
    ├── build-seed.sh            # 静的 192.168.76.2 シード (TAP モード)
    ├── vm-start-usernet.sh      # QEMU + ユーザーネットワーク (SSH ポート 2222)
    ├── vm-stop-usernet.sh
    ├── vm-start.sh / vm-stop.sh # QEMU + TAP (tap-up.sh の後)
    ├── tap-up.sh / tap-down.sh  # ホスト上の TAP インターフェース (sudo)
    ├── run-lab-usernet.sh       # 完全なフロー: イメージ + VM + ゲスト上の Scapy (最近のカーネル)
    ├── run-lab.sh               # TAP フロー + docker sender → 192.168.76.2
    ├── install-vulnerable-mainline.sh  # パッチ未適用の mainline 6.12 + veth PoC (パニック)
    └── poc-veth-netns.sh        # ゲスト*内部*で実行 (veth + netns)

モードA — 完全なQEMUラボ(ユーザーネットワーク、TAPなし)

QEMU ユーザーネットワークは、ホスト発信のICMPをゲストへ確実に配信しません。自動化フローはScapyをVM上にインストールし、そこでスクリプトを実行します。現在のUbuntuカーネルは通常パッチ済みです: "Sent 1 packets" は表示されますが、パニックは発生しません。

root@kitploit:~
cd /path/to/repo
chmod +x scripts/*.sh send-payload-to-host.sh

# 初回実行: Ubuntu Noble クラウドイメージのダウンロード、オーバーレイ、シード、QEMU 起動、SSH :2222、apt、PoC
./scripts/run-lab-usernet.sh
  • SSH: ssh -p 2222 [email protected](パスワード認証を使用する場合はパスワード lablab)
  • VM停止: ./scripts/vm-stop-usernet.sh
  • シリアルコンソール(パニック、oops): vm/serial-usernet.log

モードB — 脆弱なカーネル + 再現可能なパニック

CVE修正は2026年3月に導入されました。古いmainlineビルド(例: 2024-11 の 6.12.0)にはその修正は含まれていません。スクリプトはそれらの .deb パッケージをVMにインストールし、再起動し、veth + ネットワーク名前空間を使用してPoCを実行します。これによりICMPは実際の入力パスをたどります(ゲスト自身のループバック/インターフェースIPにのみ送信するだけでは不十分です)。

警告: これは通常カーネルパニックで終了します。SSHは応答を停止します。

root@kitploit:~
# usernet VM 実行中(または run-lab-usernet.sh で一度作成済み)
./scripts/vm-start-usernet.sh   # まだ実行されていない場合

./scripts/install-vulnerable-mainline.sh

成功したかどうかの判断方法

シグナルパニックが発生した(脆弱な6.12で期待される)パニックが発生しなかった
"Running PoC …" 直後のSSHハング、または Connection timed out / Connection resetセッションは引き続き動作。シェルが得られる
send_frag_needed.py の出力SSHが死ぬ前に . Sent 1 packets. が表示されるはず(リンクが即座に切断されると切り詰められることが多い)Install Scapy: pip install scapy → ゲストにScapyがなかった。ICMPは送信されなかった。install-vulnerable-mainline.sh を再実行(python3-scapy をインストール)するか、VM上で sudo apt install -y python3-scapy を実行してPoCを再実行
シリアルログtail -f vm/serial-usernet.log に Kernel panic、icmp_unreach、CR2: 0000000000000010 などが表示されるパニック行なし。ゲストは実行を継続
QEMUプロセス実行中だが、ゲストOSは再起動まで停止ゲストはポート2222で応答を継続

新しいディスクの注意: prepare-disk.sh + vm-start-usernet.sh のみを実行した場合(run-lab-usernet.sh ではない)、install-vulnerable-mainline.sh がインストールするまで(または手動でインストールするまで)、ゲストに python3-scapy が存在しない場合があります。

パニック後 — クリーンリセット:

root@kitploit:~
./scripts/vm-stop-usernet.sh
rm -f vm/victim.qcow2
./scripts/prepare-disk.sh
./scripts/build-seed-dhcp.sh
./scripts/vm-start-usernet.sh
# 任意: パッケージの再インストール / install-vulnerable-mainline.sh の再実行

モードC — ホスト → VM ICMP (TAP)

ゲストは 192.168.76.2、ホストはTAP上で 192.168.76.1 を使用します。ICMPは実際のLANと同様に動作します。

root@kitploit:~
./scripts/tap-up.sh              # sudo: icmp-lab-tap0 を作成
./scripts/prepare-disk.sh
./scripts/build-seed.sh          # cloud-init での静的アドレス指定
./scripts/vm-start.sh
./scripts/wait-ssh.sh 192.168.76.2

# VM上: sysctl -w net.ipv4.ip_no_pmtu_disc=3 と、パニックを希望する場合は脆弱なカーネル

docker compose build
docker compose run --rm sender 192.168.76.2

./scripts/run-lab.sh はこの一部を連結します(TAP + Dockerが必要)。


ネットワーク上のマシンへのペイロード

便利なラッパー(ホスト名 → IPv4 を解決し、Dockerを優先、それ以外は sudo + Python):

root@kitploit:~
chmod +x send-payload-to-host.sh
docker compose build    # 一度だけ

./send-payload-to-host.sh 192.168.1.50
./send-payload-to-host.sh myserver.lan --inner-proto 253 --nexthop-mtu 1200

Dockerなしの場合:

root@kitploit:~
sudo pip install scapy   # 必要な場合
sudo ./send-payload-to-host.sh 192.168.1.50

このCVEに関連するターゲット条件:

  1. 修正がないLinuxカーネル(またはディストリビューション相当の修正が未適用)。
  2. net.ipv4.ip_no_pmtu_disc = 3(強化されたPMTUモード)。
  3. パケットは通常のIPv4入力パスを通じて受信される必要があります(インターフェースに到着するトラフィック)。

カーネルがパッチ済み、またはsysctlが 3 でない場合、パニックは発生しません。パケットはワイヤ上で送信される可能性があります。


環境変数

変数説明
ICMP_LAB_TAPTAPデバイス名(デフォルト icmp-lab-tap0)
ICMP_LAB_HOST_IPTAP上のホストアドレス(デフォルト 192.168.76.1/24)
ICMP_LAB_SSH_PORTusernet SSHポート(デフォルト 2222)
ICMP_LAB_SSH_HOSTSSHホスト(デフォルト 127.0.0.1)

参考

  • CVE-2026-23398 (NVD)
  • 修正: icmp: fix NULL pointer dereference in icmp_tag_validation()(mainlineのコミット 614aefe56af8e)
  • モード 3 の導入: コミット 8ed1dc44d3e9 (hardened ip_no_pmtu_disc)

クイックコマンドリファレンス

目的コマンド
初回のusernetラボ./scripts/run-lab-usernet.sh
usernet VMの起動 / 停止./scripts/vm-start-usernet.sh / ./scripts/vm-stop-usernet.sh
脆弱なカーネル + PoC(パニック)./scripts/install-vulnerable-mainline.sh
パニック後のディスクリセットrm -f vm/victim.qcow2 && ./scripts/prepare-disk.sh && ./scripts/build-seed-dhcp.sh
LAN IP/ホストへのペイロード./send-payload-to-host.sh <IP|hostname>
Docker送信者イメージのビルドdocker compose build
ツールをダウンロード