harness-writing
Techniques for writing effective fuzzing harnesses across languages. Use when creating new fuzz targets or improving existing harness code.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Techniques for writing effective fuzzing harnesses across languages. Use when creating new fuzz targets or improving existing harness code.
How to use
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.
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ą.
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.
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.
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.
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.