Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
slirp_snapshots_stateful — أداة إثبات مفهوم (PoC) لتدوينة «Snapshotting our way to CVE-2026-9539» | Kitploit
أدوات/GitHubGitHub/quarkslab/slirp_snapshots_stateful
التحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالاختبار العشوائيأمن الشبكاتتحليل الملفات الثنائيةالأوراق والأبحاث
GitHubquarkslab/slirp_snapshots_stateful

slirp_snapshots_stateful

أداة إثبات مفهوم (PoC) لتدوينة «Snapshotting our way to CVE-2026-9539»

عرض المستودع
23منذ 10 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

slirp_snapshots_stateful

التثبيت والتشغيل

الخطوة 0: تثبيت التبعيات

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

ثبّت سلسلة أدوات Rust.

الخطوة 1: استنساخ libafl

استنسخ libafl بجوار دليل الـ fuzzer وانتقل إلى الـ commit الصحيح

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 الخاصة بالـ checksum

إما أن تفتح الملف الثنائي في IDA/Binja/ghidra لإيجاد إزاحة تعليمة ret الخاصة بالدالة cksum أو

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

اطرح الإزاحة الأولى التي وجدتها من الثانية واستبدل القيمة في 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 والتغطية

تحذير: هذا لا يعمل في المجلدات المشتركة مع جهاز افتراضي أو عمليات تحميل الشبكة.

نفّذ الخطوة 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

في طرفية، شغّل الـ 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).
  • لا يرسل الـ offline reproducer حالات الانهيار إلى مجلد crashes.
تنزيل الأداة