address-sanitizer
Wykrywaj błędy pamięci w kodzie C/C++ podczas fuzzing testów
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
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ć
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.
Podczas kompilacji kodu C/C++, który chcesz testować, dodaj flagę
-fsanitize=addressdo poleceń kompilacji. Na przykład:clang -fsanitize=address program.c -o program.Uruchom fuzzing test na skompilowanym kodzie. AddressSanitizer automatycznie będzie monitorować dostęp do pamięci i alokacje w trakcie wykonania.
Jeśli chcesz zwiększyć szczegółowość raportów, ustaw zmienną środowiskową
ASAN_OPTIONS=verbosity=1przed uruchomieniem testów.W zależności od potrzeb, dostosuj opcje AddressSanitizer: użyj
ASAN_OPTIONS=detect_leaks=0aby wyłączyć detekcję wycieków, lubASAN_OPTIONS=abort_on_error=1aby wymuszić przerwanie programu przy pierwszym błędzie.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ń.