Co to jest testowanie Fuzz?
Testowanie Fuzz lub Fuzzing to metoda sprawdzania, czy program lub system komputerowy zareaguje na różne, czasem losowe dane wejściowe i informacje. Proces ten polega na wygenerowaniu pewnego rodzaju danych, całkowicie losowych lub losowych w ramach pewnych ograniczeń, a następnie wprowadzeniu tych danych do programu w celu przetestowania, w jaki sposób obsługuje nieoczekiwane informacje. Najbardziej podstawowa forma testowania fuzz polega na wysłaniu losowej sekwencji naciśnięć klawiszy lub znaków do programu i sprawdzeniu, czy przetwarza je poprawnie. Bardziej złożona wersja testów Fuzz wykorzystuje ustrukturyzowane dane, które są następnie losowo przetwarzane i wysyłane do programu. Dane mogą dotrzeć do programu jako zdarzenia systemowe, dane wejściowe z klawiatury, fałszywe sygnały sieciowe, a nawet jako pliki, które mają zostać załadowane.
Istnieją różne części programu komputerowego, które można przetestować za pomocą generatora Fuzz. Graficzny interfejs użytkownika (GUI) można przetestować, tworząc sekwencję losowych zdarzeń myszy i klawiatury oraz sprawdzając, czy GUI jest w stanie obsłużyć dane wejściowe bez awarii, zawieszenia lub wykonania nieoczekiwanego zadania. Protokoły sieciowe można przetestować, pozwalając generatorowi fuzzów losowo zmieniać części ważnego pakietu danych, a następnie upewniając się, że protokół może nadal działać po otrzymaniu zniekształconych danych. Podstawowe elementy wejściowe prawie każdego programu można sprawdzić pod kątem ich odporności na błędy, takie jak dane wejściowe, które są zbyt długie dla typu pamięci, dane wejściowe innego typu niż oczekiwano i dane wejściowe, które są w jakiś sposób niekompletne lub nieprawidłowe.
Branża bezpieczeństwa komputerowego może korzystać z testów fuzz, aby upewnić się, że w niektórych systemach nie występują oczywiste luki w zabezpieczeniach. Można to zrobić za pomocą generatora Fuzz zaprojektowanego do testowania bezpieczeństwa komputera. Programy te będą próbowały używać słów kluczowych systemowych, znanych domyślnych haseł administratora, funkcji w bibliotekach używanych przez program oraz losowych wywołań funkcji systemowych, aby zobaczyć, jak program zareaguje.
Różne typy testowania Fuzz można dostosować, aby zawierały się w określonych zakresach, a nawet testować tylko określone typy danych wejściowych. Oznacza to, że program może mieć wysyłane tylko prawidłowe polecenia, ale mogą być w nonsensownej kolejności. Istnieją bardziej złożone programy testujące fuzz, które mogą pobierać elementy programu docelowego i manipulować nimi w celu stworzenia sytuacji, które mogłyby zostać wykorzystane w sposób złośliwy. Może to obejmować zmianę kolejności odradzanych procesów, modyfikacje uprawnień lub modyfikację podstawowych danych i plików bibliotek.
Końcowym rezultatem testów fuzz jest sprawdzenie, czy program jest bezpieczny i zachowuje się tak, jak powinien, w sytuacji nieoczekiwanej. W połączeniu z oprogramowaniem do profilowania i analizy może także wykrywać wycieki pamięci w obszarach programu, takich jak obsługa błędów lub wąskie gardła wydajności. W przypadku bezpieczeństwa komputera niebezpieczne problemy, takie jak przepełnienia, które mogą zagrozić systemowi, mogą zostać wykryte przy prawidłowej konfiguracji. Testowania Fuzz nie można jednak stosować jako jedynej metody testowania oprogramowania i musi on być częścią większego procesu zapewniania jakości i kontroli oprogramowania.