
مُشوِّش موجَّه بالتغطية يستخدم تتبُّع التلوث والتحسين القياسي لحل قيود المسار دون الحاجة إلى تنفيذ رمزي، مما يحسّن تغطية الفروع لاكتشاف الثغرات الأمنية.
Angora هي أداة تشويش موجّهة بالتغطية وتقوم على التحوير. الهدف الرئيسي من Angora هو زيادة تغطية الفروع من خلال حلّ قيود المسار دون التنفيذ الرمزي.
Arxiv: Angora: Efficient Fuzzing by Principled Search, S&P 2018.
PREFIX=/path-to-install ./build/install_llvm.sh.أضف الإدخالات التالية إلى ملف إعداد الصدفة (~/.bashrc, ~/.zshrc).
export PATH=/path-to-clang/bin:$PATH
export LD_LIBRARY_PATH=/path-to-clang/lib:$LD_LIBRARY_PATH
سيعمل سكريبت البناء على حل معظم الاعتماديات وإعداد بيئة التشغيل.
./build/build.sh
كما هو الحال مع AFL، يجب تعطيل تفريغ النواة (core dumps) في النظام.
echo core | sudo tee /proc/sys/kernel/core_pattern
اختبر ما إذا تم بناء Angora بنجاح.
cd /path-to-angora/tests
./test.sh mini
يُصرِّح Angora البرنامج إلى ملفين ثنائيين منفصلين، لكلٍّ منهما أدوات القياس الخاصة به. باستخدام برامج autoconf كمثال، إليك الخطوات المطلوبة.
# Use the instrumenting compilers
CC=/path/to/angora/bin/angora-clang \
CXX=/path/to/angora/bin/angora-clang++ \
LD=/path/to/angora/bin/angora-clang \
PREFIX=/path/to/target/directory \
./configure --disable-shared
# Build with taint tracking support
USE_TRACK=1 make -j
make install
# Save the compiled target binary into a new directory
# and rename it with .taint postfix, such as uniq.taint
# Build with light instrumentation support
make clean
USE_FAST=1 make -j
make install
# Save the compiled binary into the directory previously
# created and rename it with .fast postfix, such as uniq.fast
إذا فشل البناء بهذه الطريقة، جرّب wllvm و gllvm الموضّحين في بناء برنامج هدف.
أيضًا، قمنا بتنفيذ تحليل التلوث باستخدام libdft64 بدلاً من DFSan (استخدام libdft64 لتتبع التلوث).
./angora_fuzzer -i input -o output -t path/to/taint/program -- path/to/fast/program [argv]
لمزيد من المعلومات، يُرجى مراجعة الوثائق الموجودة في دليل docs/.