Co to jest testowanie Fuzz?
Testowanie Fuzz jest uważane za rodzaj testu, w którym wymagane są techniki testowania zautomatyzowanego lub półautomatycznego w celu wykrycia błędów w kodowaniu, a także luk bezpieczeństwa w oprogramowaniu lub systemach operacyjnych poprzez wprowadzenie danych losowych. do systemu. Te losowe dane nazywa się FUZZ. W końcu dzieje się tak, system jest sprawdzany pod kątem różnego rodzaju wyjątków, takich jak awaria systemu lub nawet awaria wbudowanego kodu i wiele więcej. Zostało to pierwotnie opracowane przez kogoś o imieniu Barton Miller, który pochodził z University of Wisconsin. Nazywa się to również fuzzingiem, uważanym za rodzaj testu bezpieczeństwa.
Dlaczego potrzebujemy testów Fuzz?
- Często testy Fuzz umożliwiają wykrycie najpoważniejszych błędów bezpieczeństwa w systemie.
- Zapewnia o wiele bardziej efektywne wyniki, gdy korzystamy z niego wraz z testami czarnej skrzynki, testami beta lub innymi metodami debugowania.
- Jest także potrzebny do zweryfikowania podatności oprogramowania. Jest to również bardzo opłacalna technika testowania.
- Jest uważana za jedną z technik testowania czarnej skrzynki. Jest to również jeden z najczęściej używanych metod hakerów, który odkrywa podatność systemu.
Jak przeprowadzane są testy rozmyte?
Kroki testowania rozmytego obejmują podstawowe kroki testowania -
Krok 1 : Rozpoznanie systemu docelowego.
Krok 2 : Rozpoznanie danych wejściowych.
Krok 3 : Generowanie fałszywych danych.
Krok 4 : Wykonanie testu przy użyciu danych rozmytych.
Krok 5 : Monitorowanie zachowania systemu.
Krok 6 : Rejestrowanie wad.
Przykłady Fuzzerów
Istnieje wiele fuzzerów, jak poniżej:
- Fuzzery oparte na mutacjach: Fuzzery te zmieniają istniejące próbki danych, aby uzyskać nowe dane testowe. Jest to dość łatwa, podobnie jak metoda bezpośrednia, zaczyna się od rozsądnego protokołu i ciągle miesza każdy bajt, a nawet jako plik.
- Fuzzery oparte na generacji: definiują nowe dane w zależności od danych wejściowych modelu. Rozpoczyna generowanie danych wejściowych od zera w zależności od specyfikacji.
- Fuzzer oparty na protokole: Uważany jest za fuzzer, który odnosi największe sukcesy i ma dość wyjaśnioną wiedzę na temat formatu protokołu, który należy przetestować. To zrozumienie zależy od specyfikacji. Obejmuje zapis szeregu specyfikacji wewnątrz narzędzia, a następnie wykorzystuje technikę opartą na modelu. Jest również znany jako testowanie składni lub testowanie gramatyczne lub testowanie odporności.
Mamy dwa ograniczenia tego opartego na protokole fuzzingu, który jest następujący:
- Nie możemy kontynuować testowania, dopóki specyfikacja nie będzie dość dojrzała.
- Istnieje wiele protokołów stanowiących rozszerzenie opublikowanych protokołów. W przypadku, gdy testy Fuzz są oparte na opublikowanych specyfikacjach, zasięg testów dla tych nowych protokołów byłby ograniczony.
Istnieje najprostsza forma testowania fuzzingu, polegająca na wysyłaniu losowych danych wejściowych do oprogramowania w postaci pakietów protokołów lub nawet zdarzenia. Ten szczególny sposób przekazywania losowych danych wejściowych jest uważany za dość skuteczny do lokalizowania błędów w różnych aplikacjach, a także usługach. Istnieją również inne techniki, które są dostępne, a także są dość łatwe do wdrożenia.
Typy błędów wykryte podczas testowania Fuzz
- Wycieki pamięci i awarie asercji: Ta metoda jest szeroko stosowana w szerokich aplikacjach, w których błędy wpływają na bezpieczeństwo pamięci, która jest uważana za poważną lukę.
- Nieprawidłowe dane wejściowe: Fuzzery są potrzebne do wygenerowania nieprawidłowych danych wejściowych wymaganych do testowania procedur obsługi błędów w testowaniu fuzz. Jest to również konieczne w przypadku oprogramowania, które nie kontroluje danych wejściowych. Fuzzing jest uważany za sposób automatyzacji testów negatywnych.
- Poprawność błędów: Fuzzing jest potrzebny do wykrywania kilku rodzajów błędów „poprawności”, takich jak uszkodzona baza danych lub słabe wyniki wyszukiwania i wiele więcej.
Narzędzia testujące Fuzz
Narzędzia, które są dość przydatne w bezpieczeństwie sieciowym, mogą być również w dużej mierze używane do testowania fuzz lub rozmytych. Na przykład Peach Fuzzer, Burp Suite itp.
1. Peach Fuzzer
To narzędzie zapewnia znacznie bardziej niezawodne i większe bezpieczeństwo w porównaniu ze skanerem. Jeśli mówimy o innych narzędziach testujących, mają one jednak możliwość przeszukiwania tylko znanych zagrożeń. Ale Peach Fuzzer sprawia, że użytkownicy odkrywają znane i nieznane zagrożenia.
2. Spike Proxy
Spike jest uważany za narzędzie klasy profesjonalnej, które wyszukuje luki w zabezpieczeniach na poziomie aplikacji w różnych aplikacjach internetowych. SPIKE Proxy bierze pod uwagę tylko takie podstawy, jak SQL Injection lub cross-site scripting. Jest to jednak w pełni otwarta infrastruktura Pythona. SPIKE Proxy jest obecny zarówno w systemie Linux, jak i Windows.
Zalety
- Błędy wykryte podczas testowania fuzzów są często uważane za poważne i najczęściej wykorzystywane są przez hakerów, które składają się z awarii, wycieku pamięci lub nieobsługiwanego wyjątku i wielu innych.
- Jeśli tester nie wykryje błędu lub błędu z powodu ograniczenia czasu i zasobów, błędy te można wykryć podczas testowania Fuzz.
Niedogodności
- Same testy Fuzz nie są w stanie przedstawić ogólnego scenariusza wszystkich zagrożeń bezpieczeństwa.
- Ponadto testowanie Fuzz jest uważane za mało skuteczne w przypadku błędów bezpieczeństwa, które nie powodują awarii programu, takich jak wirusy, robaki itp.
- Ma zdolność wykrywania tylko prostych zagrożeń.
- Aby zapewnić efektywne działanie, wymaga dużo czasu.
Wniosek
Możemy zatem stwierdzić, że w inżynierii oprogramowania testy te, czyli testy Fuzz, wykazują obecność błędów w dowolnej aplikacji. Testowanie nie zapewnia pełnego wykrywania błędów w żadnej aplikacji. Jeśli jednak użyjemy tej techniki Fuzz, gwarantuje to, że aplikacja jest dość solidna, a także zapewnia bezpieczeństwo, ponieważ testowanie Fuzz pomaga w ujawnieniu wielu typowych luk.
Polecane artykuły
To jest przewodnik po testowaniu Fuzz. Tutaj omawiamy, co to jest testowanie Fuzz? narzędzia do testowania, zalety i wady odpowiednio. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- Testy porównawcze
- Rodzaje testowania oprogramowania
- Co to jest test użyteczności?
- Testy statyczne