atheris
Fuzzer do testowania kodu Python z przewodnikiem pokrycia i wsparciem dla rozszerzeń C
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Atheris to narzędzie do fuzzingu kodu Python oparte na libFuzzer. Pozwala testować zarówno czysty kod Python, jak i rozszerzenia C, z wbudowanym wsparciem dla AddressSanitizer do wykrywania błędów pamięci. Wybierz Atheris, gdy chcesz fuzzować kod Python z przewodnikiem pokrycia, testować rozszerzenia C pod kątem uszkodzenia pamięci lub zintegrować się z ekosystemem libFuzzer. Narzędzie działa na Linuksie i macOS, ale Linux jest zalecany ze względu na prostotę i wydajność.
Jak używać
Zainstaluj Atheris za pomocą pip: uruchom polecenie
uv pip install atheris. Upewnij się, że masz zainstalowany Python 3.7 lub nowszy oraz aktualną wersję clang.Utwórz plik Python z funkcją testową oznaczoną dekoratorem
@atheris.instrument_func. Funkcja powinna przyjmować parametrdatatypu bytes i zawierać logikę testową, na przykład sprawdzanie wartości bajtów lub wywoływanie testowanego kodu.W funkcji
main()zainicjuj Atheris za pomocąatheris.Setup(sys.argv, test_one_input), gdzietest_one_inputto nazwa twojej funkcji testowej.Wywołaj
atheris.Fuzz()na końcu funkcjimain(), aby uruchomić fuzzer z przewodnikiem pokrycia.Uruchom skrypt poleceniem
python nazwa_pliku.py. Fuzzer będzie generować losowe dane wejściowe i szukać błędów, ścieżek powodujących wyjątki lub problemów z pamięcią w kodzie C.Do pełnego środowiska z wszystkimi zależnościami rozważ użycie Docker. Użyj obrazu Python (np.
python:3.11) i zainstaluj clang oraz Atheris wewnątrz kontenera.