Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
slirp_snapshots_stateful — PoC für den Blogbeitrag „Snapshotting our way to CVE-2026-9539“ | Kitploit
Tools/GitHubGitHub/quarkslab/slirp_snapshots_stateful
Dynamische Analyse (Sandboxing)SchwachstellenanalyseFuzzingNetzwerksicherheitBinäranalysePapers & Forschung
GitHubquarkslab/slirp_snapshots_stateful

slirp_snapshots_stateful

PoC für den Blogbeitrag „Snapshotting our way to CVE-2026-9539“

Repository anzeigen
23vor 10 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Webseite
Teilen

slirp_snapshots_stateful

Installation und Ausführung

Schritt 0: Abhängigkeiten installieren

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

Installiere eine Rust-Toolchain.

Schritt 1: libafl klonen

Klonen Sie libafl neben das Fuzzer-Verzeichnis und checken Sie den richtigen Commit aus

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

Schritt 2: Patches auf libafl anwenden

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

Schritt 3: libslirp klonen

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

Schritt 4: Patches auf libslirp anwenden

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

Schritt 5: das Ziel kompilieren

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

Schritt 6: den Offset der ret-Instruktion der Checksumme finden

Öffnen Sie entweder das Binary in IDA/Binja/ghidra, um den Offset der ret-Instruktion der Funktion cksum zu finden, oder

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

Subtrahieren Sie den ersten gefundenen Offset vom zweiten und ersetzen Sie den Wert in fuzzer/src/libslirp/hooks.rs:200

Schritt 7: den Fuzzer kompilieren

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

Hinweis: Je nach Ihrer llvm-Installation müssen Sie möglicherweise die Umgebungsvariable LLVM_CONFIG_PATH angeben.

Schritt 8: den Fuzzer ausführen

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

Ausführung mit ASAN und Coverage

Warnung: Dies funktioniert nicht in Ordnern, die mit einer VM oder Netzwerk-Mounts geteilt werden.

Führen Sie Schritt 6 aus, um den Offset in offline_reproducer/runner/src/libslirp/hooks.rs:17 zu ändern. Kompilieren Sie dann den Runner und den 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

Führen Sie den Driver in einem Terminal aus und dann den Fuzzer in einem anderen.

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

Coverage

Coverage-Dateien werden im Ordner coverage gespeichert und können mit bncov (binja)/lighthouse (ida/binja)/lightkeeper (ghidra) geöffnet werden. Bei Bedarf kann das Zusammenführen mit drcov-merge durchgeführt werden.

Bekannte Fehler

  • Qemu stirbt, wenn ein Fehler gefunden wird, und beendet den Fuzzer (Einschränkung von libafl).
  • Der Offline-Reproducer legt Abstürze nicht im Ordner crashes ab.
Tool herunterladen