Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
slirp_snapshots_stateful — PoC para la entrada de blog «Snapshotting our way to CVE-2026-9539» | Kitploit
Herramientas/GitHubGitHub/quarkslab/slirp_snapshots_stateful
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesFuzzingSeguridad de RedesAnálisis de BinariosPapers e Investigación
GitHubquarkslab/slirp_snapshots_stateful

slirp_snapshots_stateful

PoC para la entrada de blog «Snapshotting our way to CVE-2026-9539»

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver RepositorioSitio web
23hace 10 díasAún no revisado
Compartir

slirp_snapshots_stateful

Instalación y ejecución

paso 0: instalar dependencias

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

Instala una toolchain de Rust.

paso 1: clonar libafl

clona libafl junto al directorio del fuzzer y haz checkout del commit correcto

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

paso 2: aplicar parches a 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

paso 3: clonar libslirp

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

paso 4: aplicar parches a 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

paso 5: compilar el objetivo

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

paso 6: encontrar el offset de la instrucción ret del checksum

Abre el binario en IDA/Binja/ghidra para encontrar el offset de la instrucción ret de la función cksum o

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

resta el primer offset que encontraste al segundo y reemplaza el valor en fuzzer/src/libslirp/hooks.rs:200

paso 7: compilar el fuzzer

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

Nota: Dependiendo de tu instalación de llvm, puede que necesites especificar la variable de entorno LLVM_CONFIG_PATH.

paso 8: ejecutar el fuzzer

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

Ejecutar con ASAN y cobertura

advertencia: esto no funciona en carpetas compartidas con una VM o montajes de red.

Realiza el paso 6 para cambiar el offset en offline_reproducer/runner/src/libslirp/hooks.rs:17. Luego compila el runner y el 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

En una terminal ejecuta el driver, luego en otra ejecuta el fuzzer.

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

Cobertura

Los archivos de cobertura se almacenarán en la carpeta coverage, se pueden abrir con bncov (binja)/lighthouse (ida/binja)/lightkeeper (ghidra). Si es necesario, la fusión se puede realizar con drcov-merge.

Errores conocidos

  • Qemu muere cuando se encuentra un bug y mata al fuzzer (limitación de libafl).
  • El reproductor offline no envía los crashes a la carpeta crashes.
Descargar herramienta