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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
slirp_snapshots_stateful — 「Snapshotting our way to CVE-2026-9539」ブログ記事のPoC | Kitploit
ツール/GitHubGitHub/quarkslab/slirp_snapshots_stateful
動的分析 (サンドボックス)脆弱性分析ファジングネットワークセキュリティバイナリ解析論文と研究
GitHubquarkslab/slirp_snapshots_stateful

slirp_snapshots_stateful

「Snapshotting our way to CVE-2026-9539」ブログ記事のPoC

リポジトリを見る
2310日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

slirp_snapshots_stateful

インストールと実行

ステップ 0: 依存関係のインストール

sudo apt install meson ninja-build valgrind clang-20 binutils libglib-2.0-dev cmake python3-venv

Rust ツールチェーンをインストールします。

ステップ 1: libafl のクローン

fuzzer ディレクトリの隣に libafl をクローンし、正しいコミットをチェックアウトします

git clone https://github.com/AFLplusplus/LibAFL.git libafl/
cd libafl
git checkout 6e7ea0da898b63c5098f84c0908a8c427a5c73ff

ステップ 2: libafl へのパッチ適用

git apply ../patches/libafl/module_snapshot.patch
git apply ../patches/libafl/snapshot.patch
git apply ../patches/libafl/libafl_bolts_wide.patch
git apply ../patches/libafl/libafl_targets_simd.patch

ステップ 3: libslirp のクローン

cd ..
git clone https://gitlab.freedesktop.org/slirp/libslirp.git
cd libslirp
git checkout 4ddbcd5cc4f7a14473ebfc1dcdd1afb4edf96908

ステップ 4: libslirp へのパッチ適用

git apply ../patches/libslirp/meson_fuzzing.patch
git apply ../patches/libslirp/meson_options.patch
git apply ../patches/libslirp/meson.patch
git apply ../patches/libslirp/qemu_target.patch
git apply ../patches/libslirp/tcp_input.patch
git apply ../patches/libslirp/tcp_outpt.patch

ステップ 5: ターゲットのコンパイル

CC=clang-20 CXX=clang++-20 meson build
ninja -C build

ステップ 6: チェックサムの ret 命令のオフセットを見つける

IDA/Binja/ghidra でバイナリを開いて cksum 関数の ret 命令のオフセットを見つけるか、次のコマンドを実行します

nm -n build/fuzzing/qemu-target | grep cksum
objdump -d --disassemble=cksum build/fuzzing/qemu-target | grep -E '\bret[qwl]?\b'

最初に見つけたオフセットから 2 番目のオフセットを引き、その値を fuzzer/src/libslirp/hooks.rs:200 の値と置き換えます

ステップ 7: fuzzer のコンパイル

cd ../fuzzer
cargo +nightly build --release

注: llvm のインストール状況によっては、LLVM_CONFIG_PATH 環境変数を指定する必要がある場合があります。

ステップ 8: fuzzer の実行

cp ../libslirp/build/fuzzing/qemu-target ./target/release/
cd target/release
mkdir corpus
RUST_LOG=warn ./slirp-snapshots-stateful-fuzzer

ASAN とカバレッジを使用した実行

警告: これは VM と共有されたフォルダやネットワークマウントでは動作しません。

ステップ 6 を実行して offline_reproducer/runner/src/libslirp/hooks.rs:17 のオフセットを変更します。次に runner と driver をコンパイルします

cd runner
cargo +nightly-2026-06-11 build --release
cp target/release/offline_runner ../../fuzzer/target/release
cp target/release/x86_64-unknown-linux-gnu/release/libafl_qemu_asan_host.so ../../fuzzer/target/release
cd ../driver
cargo +nightly build --release
cp target/release/offline_driver ../../fuzzer/target/release
cd ../../fuzzer/target/release
mkdir corpus coverage repro_files

1 つのターミナルで driver を実行し、別のターミナルで fuzzer を実行します。

RUST_LOG=warn ./offline_driver
RUST_LOG=warn ./slirp-snapshots-stateful-fuzzer

カバレッジ

カバレッジファイルは coverage フォルダに保存され、bncov (binja)/lighthouse (ida/binja)/lightkeeper (ghidra) で開くことができます。必要に応じて drcov-merge でマージできます。

既知のバグ

  • バグが見つかると Qemu が終了し、fuzzer も停止します (libafl の制限)。
  • オフラインリプロデューサーはクラッシュを crashes フォルダに送信しません。
ツールをダウンロード