Toolverse
Wszystkie skille

address-sanitizer

autor: trailofbits

Wykrywaj błędy pamięci w kodzie C/C++ podczas fuzzing testów

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Testowanie
Wyświetlenia
1

O skillu

AddressSanitizer to narzędzie do detekcji błędów pamięci, które uruchamia się podczas testowania kodu. Instrumentuje kod na etapie kompilacji, aby śledzić alokacje pamięci i wykrywać niebezpieczne operacje w czasie wykonania. Znajduje przepełnienia bufora, błędy use-after-free, double-free i wycieki pamięci. Szczególnie przydatne przy fuzzing testach kodu C/C++ oraz testowaniu kodu Rust z unsafe blokami. Dodaje około 2-4x spowolnienie wydajności, ale znacznie poprawia bezpieczeństwo testów.

Jak używać

  1. Zainstaluj AddressSanitizer jako część swojego toolchain'u (dostępny w Clang i GCC). Upewnij się, że masz obsługę na swojej platformie — AddressSanitizer ma ograniczoną obsługę na Windows i macOS.

  2. Podczas kompilacji kodu C/C++, który chcesz testować, dodaj flagę -fsanitize=address do poleceń kompilacji. Na przykład: clang -fsanitize=address program.c -o program.

  3. Uruchom fuzzing test na skompilowanym kodzie. AddressSanitizer automatycznie będzie monitorować dostęp do pamięci i alokacje w trakcie wykonania.

  4. Jeśli chcesz zwiększyć szczegółowość raportów, ustaw zmienną środowiskową ASAN_OPTIONS=verbosity=1 przed uruchomieniem testów.

  5. W zależności od potrzeb, dostosuj opcje AddressSanitizer: użyj ASAN_OPTIONS=detect_leaks=0 aby wyłączyć detekcję wycieków, lub ASAN_OPTIONS=abort_on_error=1 aby wymuszić przerwanie programu przy pierwszym błędzie.

  6. Przeanalizuj raporty z AddressSanitizer — narzędzie wyświetli dokładną lokalizację i typ błędu pamięci (przepełnienie bufora, use-after-free itp.) wraz ze stosem wywołań.

Podobne skille