Toolverse
Wszystkie skille

fuzzing-obstacles

autor: trailofbits

Obejdź bariery fuzzing'u – patche kod, aby fuzzer dotarł głębiej

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Testowanie
Wyświetlenia
3

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ć

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Podobne skille