aflpp
Wielordzeniowe fuzzing dla projektów C/C++ z zaawansowanymi strategiami mutacji
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
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ć
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.
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.Skompiluj harness za pomocą kompilatora AFL++ (afl-clang-fast++ lub afl-clang-fast). Użyj flag
-DNO_MAIN=1 -O2 -fsanitize=fuzzeroraz dołącz wszystkie pliki źródłowe projektu, który chcesz testować.Przygotuj katalog z przykładowymi danymi wejściowymi (seed'ami). Utwórz folder
seedsi 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.Uruchom fuzzer poleceniem
afl-fuzz -i seeds -o out -- ./fuzz, gdzieseedsto katalog z danymi wejściowymi,outto katalog dla wyników, a./fuzzto skompilowany harness. AFL++ automatycznie będzie wykorzystywać wszystkie dostępne rdzenie procesora do równoczesnego testowania.