Toolverse
Wszystkie skille

libafl

autor: trailofbits

Buduj zaawansowane fuzzery na miarę swoich potrzeb — modułowa biblioteka do testowania bezpieczeństwa

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Wyświetlenia
1

O skillu

LibAFL to modułowa biblioteka do fuzzingu napisana w Rust, która daje ci pełną kontrolę nad procesem testowania. W przeciwieństwie do tradycyjnych fuzzerów, wszystkie komponenty — mutatory, mechanizmy feedback, strategie przeszukiwania — można dostosować do swoich potrzeb. Użyj LibAFL gdy standardowe narzędzia nie wystarczą: potrzebujesz niestandardowych strategii mutacji, twoja architektura nie jest wspierana przez libFuzzer czy AFL++, albo prowadzisz badania nad nowymi technikami fuzzingu. Działa jako zamiennik libFuzzer lub punkt wyjścia do budowy własnego fuzzera od zera.

Jak używać

  1. Zainstaluj wymagane zależności: Clang/LLVM w wersji 15–18, Rust (przez rustup) oraz narzędzia systemowe. Na Linuksie lub macOS zainstaluj Clang poleceniem apt install clang, lub pobierz konkretną wersję ze strony apt.llvm.org (np. wget https://apt.llvm.org/llvm.sh, chmod +x llvm.sh, sudo ./llvm.sh 15).

  2. Sklonuj repozytorium LibAFL i przejdź do katalogu kompatybilności z libFuzzer: git clone https://github.com/AFLplusplus/LibAFL, cd LibAFL/libafl_libfuzzer_runtime, następnie uruchom ./build.sh.

  3. Przygotuj funkcję testową w C++ — utwórz plik harness.cc z funkcją LLVMFuzzerTestOneInput, która przyjmuje dane od fuzzera i przekazuje je do testowanego kodu. Funkcja powinna zwracać 0.

  4. Skonfiguruj zmienne środowiskowe Rust (RUSTFLAGS) zgodnie z dokumentacją, aby włączyć niezbędne flagi kompilacji dla twojej platformy.

  5. Skompiluj fuzzer poleceniem clang++ z flagami -DNO_MAIN -g -O2 -fsanitize=fuzzer-no-link, linkując libFuzzer.a, harness.cc i main.cc, a wynik zapisz jako plik wykonywalny (np. fuzz).

  6. Uruchom fuzzer wskazując katalog z corpus: ./fuzz corpus/. Fuzzer będzie generować i testować dane, szukając błędów w twoim kodzie.

Podobne skille