Toolverse
Wszystkie skille

harness-writing

autor: trailofbits

Naucz się pisać efektywne harneesy do fuzzingu w dowolnym języku programowania

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Testowanie
Wyświetlenia
3

O skillu

Umiejętności pisania harnesów fuzzingowych, które rzeczywiście znajdują błędy. Dowiedz się, jak budować funkcje wejściowe łączące losowe dane z kodem testowanym, strukturyzować złożone dane wejściowe i unikać pułapek powodujących niskie pokrycie kodu. Technika obejmuje kluczowe koncepcje: punkt wejścia, FuzzedDataProvider, determinizm i fuzzing przeplatany. Zastosuj ją przy tworzeniu nowych celów fuzzingu, poprawie istniejących harnesów lub debugowaniu niepowtarzalnych awarii.

Jak używać

  1. Zainstaluj umiejętność harness-writing z repozytorium Trail of Bits w swoim środowisku agenta Claude lub Copilota. Umiejętność zawiera dokumentację technik pisania harnesów dla różnych języków programowania.

  2. Zidentyfikuj kod, który chcesz poddać fuzzingowi (System Under Test, SUT) i określ jego interfejs API. Ustal, jakie funkcje będą celem testów i jakie typy danych przyjmują.

  3. Zaprojektuj funkcję harnesu zgodnie z wymaganiami fuzera (np. LLVMFuzzerTestOneInput dla libFuzzer). Harnes musi przyjmować losowe bajty, konwertować je na sensowne dane wejściowe i wywoływać funkcje testowane.

  4. Użyj FuzzedDataProvider lub podobnej klasy pomocniczej do strukturalnego wyodrębniania typowanych danych z surowych bajtów. Pozwoli to fuzzerowi efektywnie eksplorować ścieżki kodu zamiast generować losowy szum.

  5. Obsłuż przypadki brzegowe i błędy w harnesie — upewnij się, że awarie są powtarzalne i że kod nie zawiesza się na nieprawidłowych danych. Przetestuj harnes z kilkoma ręcznym wejściami przed uruchomieniem pełnej kampanii fuzzingu.

  6. Monitoruj pokrycie kodu podczas fuzzingu. Jeśli pokrycie jest niskie lub fuzzer nie znajduje błędów, przejrzyj harnes — może wymagać lepszej strukturyzacji danych wejściowych, testowania wielu operacji (fuzzing przeplatany) lub zmian w logice parsowania.

Podobne skille