fuzzing-obstacles
Obejdź bariery fuzzing'u – patche kod, aby fuzzer dotarł głębiej
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Technika do modyfikacji kodu źródłowego w celu wyeliminowania przeszkód, które blokują postęp fuzzer'a. Checksummy, globalne stany i złożone walidacje uniemożliwiają eksplorację głębokich ścieżek kodu. Umożliwia warunkową kompilację – zmienia zachowanie kodu podczas testów fuzzing'owych, zachowując produkcyjne działanie. Idealna dla zespołów testujących bezpieczeństwo i niezawodność systemów.
Jak używać
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.