fuzzing-obstacles
Techniques for patching code to overcome fuzzing obstacles. Use when checksums, global state, or other barriers block fuzzer progress.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Techniques for patching code to overcome fuzzing obstacles. Use when checksums, global state, or other barriers block fuzzer progress.
How to use
Zidentyfikuj przeszkody fuzzing'u w swoim kodzie – szukaj checksum'ów, haszów kryptograficznych, globalnych stanów (np. czasu systemowego, zmiennych środowiskowych) lub złożonych walidacji, które blokują fuzzer'owi dostęp do głębszych ścieżek kodu.
Przygotuj warunkową kompilację w swoim systemie testowanym (SUT). Dodaj flagi kompilacji, które pozwolą na zmianę zachowania kodu podczas budowy fuzzing'owej – na przykład pomiń weryfikację checksum'ów lub zastąp niedeterministyczne generatory liczb losowych stałymi wartościami.
Zastosuj techniki z tej umiejętności do patche'owania kodu – obejdź checksummy poprzez ich wyłączenie w trybie fuzzing'u, wyeliminuj zależności od globalnego stanu (czasu, zmiennych środowiskowych), a upraszczaj walidacje, aby fuzzer mógł generować prawidłowe dane wejściowe bez powtarzających się błędów walidacji.
Zbuduj wersję fuzzing'ową projektu z włączonymi flagami warunkowej kompilacji. Upewnij się, że kod produkcyjny pozostaje niezmieniony – patche'owanie dotyczy tylko specjalnej konfiguracji budowania.
Uruchom fuzzer'a na zmodyfikowanej wersji i obserwuj, czy osiąga głębsze ścieżki kodu i odkrywa więcej potencjalnych błędów. Porównaj wyniki z fuzzing'iem bez patche'owania, aby potwierdzić poprawę pokrycia kodu.
Zweryfikuj, że wszystkie znalezione błędy mogą rzeczywiście wystąpić w kodzie produkcyjnym – odfiltruj fałszywe alarmy, które wynikają wyłącznie z patche'owania fuzzing'owego.