Toolverse
Wszystkie skille

aflpp

autor: trailofbits

Wielordzeniowe fuzzing dla projektów C/C++ z zaawansowanymi strategiami mutacji

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Wyświetlenia
1

O skillu

AFL++ to zaawansowana wersja klasycznego fuzzera AFL, zaprojektowana do testowania bezpieczeństwa kodu C/C++. Główną zaletą jest natywne wsparcie dla fuzzing'u na wielu rdzeniach procesora, co pozwala na znacznie szybsze odkrywanie błędów w dużych projektach. Narzędzie oferuje różnorodne strategie mutacji i jest idealne dla zespołów pracujących nad kodem produkcyjnym, gdzie wydajność i skalowanie są kluczowe. Możesz go używać do testowania zarówno nowych aplikacji, jak i istniejących kodebaz.

Jak używać

  1. Zainstaluj AFL++ na systemie Linux (Ubuntu 23.10 lub Debian 12 zalecane). Narzędzie wymaga LLVM, Python i Rust — najłatwiej zainstalować je z repozytoriów dystrybucji lub użyć obrazu Docker dostarczonego w projekcie.

  2. Przygotuj harness fuzzing'owy — funkcję C/C++, która będzie testowana. Harness musi zawierać funkcję LLVMFuzzerTestOneInput, która przyjmuje dane z fuzzera i przekazuje je do testowanego kodu. Funkcja powinna zwracać 0 po każdym uruchomieniu.

  3. Skompiluj harness za pomocą kompilatora AFL++ (afl-clang-fast++ lub afl-clang-fast). Użyj flag -DNO_MAIN=1 -O2 -fsanitize=fuzzer oraz dołącz wszystkie pliki źródłowe projektu, który chcesz testować.

  4. Przygotuj katalog z przykładowymi danymi wejściowymi (seed'ami). Utwórz folder seeds i umieść w nim co najmniej jeden plik testowy — może to być zwykły tekst lub dane binarne, w zależności od formatu, który akceptuje Twoja aplikacja.

  5. Uruchom fuzzer poleceniem afl-fuzz -i seeds -o out -- ./fuzz, gdzie seeds to katalog z danymi wejściowymi, out to katalog dla wyników, a ./fuzz to skompilowany harness. AFL++ automatycznie będzie wykorzystywać wszystkie dostępne rdzenie procesora do równoczesnego testowania.

Podobne skille