Samouczek Fuzz Testing (Fuzzing): Co to jest, typy, narzędzia i Przykład

Spisie treści:

Anonim

Testowanie Fuzz

Fuzz Testing lub Fuzzing to technika testowania oprogramowania polegająca na umieszczaniu nieprawidłowych lub losowych danych zwanych FUZZ w systemie oprogramowania w celu wykrycia błędów kodowania i luk w zabezpieczeniach. Celem testów fuzz jest wstawianie danych przy użyciu technik automatycznych lub półautomatycznych i testowanie systemu pod kątem różnych wyjątków, takich jak awaria systemu lub awaria wbudowanego kodu itp.

Testowanie Fuzz zostało pierwotnie opracowane przez Bartona Millera na Uniwersytecie Wisconsin w 1989 roku. Testowanie Fuzz lub fuzzing to technika testowania oprogramowania i jest to rodzaj testowania zabezpieczeń .

Dlaczego warto testować Fuzz?

  • Zwykle testy rozmyte wykrywają najpoważniejszy błąd lub usterkę zabezpieczeń.
  • Testowanie Fuzz daje bardziej efektywne wyniki, gdy jest używane z testami czarnoskrzynkowymi, testami beta i innymi metodami debugowania.
  • Testowanie Fuzz służy do sprawdzania podatności oprogramowania. Są to bardzo efektywne kosztowo techniki testowania.
  • Testowanie Fuzz jest jedną z technik testowania czarnych skrzynek. Fuzzing to jedna z najczęstszych metod wykorzystywanych przez hakerów do znajdowania podatności systemu.

Jak wykonać test Fuzz

Kroki testów rozmytych obejmują podstawowe kroki testowania:

Krok 1) Zidentyfikuj system docelowy

Krok 2) Zidentyfikuj wejścia

Krok 3) Wygeneruj rozmyte dane

Krok 4) Wykonaj test, używając rozmytych danych

Krok 5) Monitoruj zachowanie systemu

Krok 6) Zarejestruj usterki

Przykłady Fuzzerów

  • Fuzzery oparte na mutacjach zmieniają istniejące próbki danych, aby utworzyć nowe dane testowe. Jest to bardzo proste i nieskomplikowane podejście, zaczynające się od prawidłowych próbek protokołu i zniekształcające każdy bajt lub plik.

  • Generacyjne Fuzzery definiują nowe dane na podstawie danych wejściowych modelu. Zaczyna generować dane wejściowe od podstaw na podstawie specyfikacji.

  • Fuzzer oparty na protokole , najbardziej skutecznym fuzzerem jest posiadanie szczegółowej wiedzy na temat testowanego formatu protokołu. Zrozumienie zależy od specyfikacji. Obejmuje zapisanie tablicy specyfikacji w narzędziu, a następnie za pomocą techniki generowania testów opartej na modelu przejść przez specyfikację i dodać nieprawidłowości w zawartości danych, kolejności itp. Jest to również znane jako testowanie składni, testowanie gramatyczne, testowanie odporności, itp. Fuzzer może generować przypadki testowe z już istniejącego lub może używać poprawnych lub nieprawidłowych danych wejściowych.

Istnieją dwa ograniczenia fuzzingu opartego na protokołach:

  1. Testowanie nie może być kontynuowane, dopóki specyfikacja nie jest dojrzała.
  2. Wiele użytecznych protokołów stanowi rozszerzenie opublikowanych protokołów. Jeśli testowanie Fuzz jest oparte na opublikowanych specyfikacjach, zakres testów dla nowych protokołów będzie ograniczony.

Najprostszą formą techniki fuzzingu jest wysyłanie losowych danych wejściowych do oprogramowania jako pakiety protokołów lub jako zdarzenie. Ta technika przekazywania losowych danych wejściowych jest bardzo skuteczna w wykrywaniu błędów w wielu aplikacjach i usługach. Dostępne są również inne techniki, które są bardzo łatwe do wdrożenia. Aby wdrożyć te techniki, wystarczy zmienić istniejące dane wejściowe. Możemy zmienić dane wejściowe, po prostu zamieniając bity danych wejściowych.

Typy błędów wykrytych przez Fuzz Testing

  • Błędy asercji i wycieki pamięci Ta metodologia jest szeroko stosowana w dużych aplikacjach, w których błędy wpływają na bezpieczeństwo pamięci, co jest poważną luką w zabezpieczeniach.

  • Nieprawidłowe dane wejściowe

    W testowaniu fuzzerów fuzzery są używane do generowania nieprawidłowych danych wejściowych, które są używane do testowania procedur obsługi błędów, co jest ważne dla oprogramowania, które nie kontroluje swoich danych wejściowych. Prosty fuzzing może być znany jako sposób na zautomatyzowanie negatywnych testów.

  • Błędy poprawności

    Fuzzing może być również używany do wykrywania niektórych typów błędów „poprawności”. Takich jak uszkodzona baza danych, słabe wyniki wyszukiwania itp.

    Narzędzia testowe Fuzz

    Narzędzia używane w zabezpieczeniach sieci mogą być szeroko stosowane w testowaniu fuzzów, takie jak Burp Suite, Peach Fuzzer itp.

  • Peach Fuzzer

    Peach Fuzzer zapewnia bardziej solidną i bezpieczniejszą ochronę niż skaner. Inne narzędzia testujące mogą wyszukiwać tylko znane wątki, podczas gdy Peach Fuzzer umożliwia użytkownikom znajdowanie znanych i nieznanych wątków.

  • Spike Proxy

    Jest to profesjonalne narzędzie wyszukujące luki na poziomie aplikacji w aplikacjach internetowych. SPIKE Proxy obejmuje podstawy, takie jak SQL Injection i cross-site-scripting, ale jest to całkowicie otwarta infrastruktura Pythona. SPIKE Proxy jest dostępne dla systemów Linux i Windows.

  • Webscarab

    Webscarab jest napisany w Javie, dzięki czemu można go przenosić na wiele platform. Do analizy aplikacji używany jest framework Webscarab, który komunikuje się za pomocą protokołów HTTP i HTTPS.

    Np .: Webscarab działa jako przechwytujący serwer proxy, pozwala operatorowi przeglądać i modyfikować żądania utworzone przez przeglądarkę, zanim zostaną odebrane przez serwer. I pozwalają przeglądać i aktualizować odpowiedzi generowane przez serwer przed otrzymaniem przez przeglądarkę. W ten sposób, jeśli skarabeusz internetowy znajdzie jakąkolwiek lukę, utworzy listę zgłoszonych problemów.

  • OWASP WSFuzzer

    WSFuzzer to program na licencji GPL, napisany w Pythonie. GPL jest obecnie skierowany do usług internetowych. W obecnej wersji OWASPWSFuzzer oparte na HTTP usługi SOAP są głównym celem.

Zalety testowania Fuzz

  • Testy Fuzz poprawiają testowanie bezpieczeństwa oprogramowania.
  • Błędy znalezione podczas fuzzingu są czasami poważne i przez większość czasu używane przez hakerów, w tym awarie, wycieki pamięci, nieobsługiwane wyjątki itp.
  • Jeśli którykolwiek z błędów nie zostanie zauważony przez testerów z powodu ograniczenia czasu i zasobów, błędy te można również znaleźć w testach Fuzz.

Wady testowania Fuzz

  • Samo testowanie Fuzz nie jest w stanie zapewnić pełnego obrazu ogólnego zagrożenia bezpieczeństwa lub błędów.
  • Testowanie Fuzz jest mniej skuteczne w radzeniu sobie z zagrożeniami bezpieczeństwa, które nie powodują awarii programów, takimi jak niektóre wirusy, robaki, trojany itp.
  • Testy Fuzz mogą wykryć tylko proste błędy lub zagrożenia.
  • Aby działać skutecznie, zajmie to dużo czasu.
  • Ustalenie warunku wartości granicznej z przypadkowymi danymi wejściowymi jest bardzo problematyczne, ale teraz, korzystając z deterministycznych algorytmów opartych na danych wejściowych użytkowników, większość testerów rozwiązuje ten problem.

Podsumowanie:

W inżynierii oprogramowania testy Fuzz pokazują obecność błędów w aplikacji. Fuzzing nie może zagwarantować całkowitego wykrycia błędów w aplikacji. Ale dzięki zastosowaniu techniki Fuzz zapewnia, że ​​aplikacja jest solidna i bezpieczna, ponieważ ta technika pomaga ujawnić większość typowych luk w zabezpieczeniach.

Ten artykuł jest autorstwa Priyanka Kothe