Luki w oprogramowaniu stanowią istotny problem w cyberbezpieczeństwie. Pozwalają one na atakowanie oprogramowania, a gdy te produkty są podłączone do bezpiecznych sieci, mogą stanowić punkt wejścia dla hakerów.
Wszystkie profesjonalne produkty programowe są dokładnie testowane przed wydaniem. Niestety, luki w zabezpieczeniach nadal są częstym zjawiskiem. Jednym ze sposobów znalezienia dodatkowych luk w zabezpieczeniach jest użycie techniki testowania oprogramowania znanej jako fuzzing.
Czym więc jest fuzzing i jak to działa?
Co to jest fuzzowanie?
Fuzzing to zautomatyzowana technika testowania oprogramowania, która próbuje znaleźć luki w zabezpieczeniach przy użyciu losowych danych wejściowych.
Oprogramowanie często zachowuje się nieprzewidywalnie, gdy użytkownik wprowadza dane wejściowe inne niż żądane. Fuzzing to praktyka polegająca na wprowadzaniu dużej ilości nieoczekiwanych danych wejściowych i rejestrowaniu tego, co się dzieje. Pomysł polega na tym, że użytkownik może następnie monitorować oprogramowanie i określić, czy występują jakiekolwiek luki w zabezpieczeniach.
Fuzzing jest używany do testowania oprogramowania i przez specjalistów ds. bezpieczeństwa w celu określenia, czy sieć jest bezpieczna. Jest również używany przez hakerów, którzy ćwiczą fuzzing, aby znaleźć luki, które sami mogą wykorzystać.
Luki wykryte przez fuzzing są bardzo zróżnicowane. Nieoczekiwane dane wejściowe mogą spowodować awarię oprogramowania. Ale może również zwrócić prywatne informacje lub umożliwić użytkownikowi dostęp do części oprogramowania, które w przeciwnym razie byłyby niedostępne.
Jakie są zalety fuzzingu?
Fuzzing to tylko jeden z wielu sposobów testowania oprogramowania pod kątem luk w zabezpieczeniach. Jest popularny, ponieważ:
- Fuzzing jest całkowicie zautomatyzowany. Po skonfigurowaniu programu fuzzingowego może on nadal szukać luk w zabezpieczeniach bez udziału człowieka.
- Fuzzing może znaleźć luki, których nie znajdują inne techniki testowania oprogramowania. Z tego powodu jest często używany jako dodatek do technik manualnych.
- Fuzzing jest często używany przez hakerów do znajdź luki dnia zerowego. Korzystanie z tych samych technik, co hakerzy, pozwala programistom znaleźć luki dnia zerowego, zanim to zrobią.
Jak działa fuzzing?
Narzędzie używane do fuzzingu zazwyczaj składa się z trzech elementów. Często określa się ich mianem poety, kuriera, wyroczni.
Poeta
Poeta rozpoczyna proces i odpowiada za wygenerowanie przypadku testowego. Przypadek testowy to długa lista potencjalnych danych wejściowych.
Kurier
Kurier wstawia wszystkie losowe dane wejściowe do docelowego oprogramowania. Fuzzery zaprojektowano tak, aby robiły to automatycznie, umożliwiając masowe testowanie dużych ilości danych wejściowych.
Wyrocznia
Wyrocznia sprawdza, czy którekolwiek z danych wejściowych powoduje, że oprogramowanie robi coś innego niż zostało zaprojektowane. Jeśli fuzzing jest przeprowadzany w uzasadnionych celach, zachowanie można następnie powielić i naprawić. Lub jeśli haker przeprowadza fuzzing, a nieoczekiwane zachowanie jest przydatne, może zostać wykorzystane do złośliwych celów.
Jak atakujący używają fuzzingu?
Fuzzing jest popularną techniką wśród hakerów, ponieważ pozwala im znaleźć luki w oprogramowaniu bez dostępu do kodu źródłowego. Ponieważ fuzzing jest zautomatyzowany, jest również łatwy do wykonania. Jeśli haker odkryje lukę w zabezpieczeniach, może przeprowadzić następujące ataki.
Ataki DDoS
Jeśli fuzzing wykryje, że pewne dane wejściowe wymagają długiego czasu na przetworzenie, informacje te można wykorzystać do przeprowadzenia ataku DDoS. Atak DDoS polega na wysyłaniu do systemu tak wielu żądań, że przestaje on działać. Fuzzing umożliwia takie dostosowanie żądań, aby odpowiedź wymagała jak największej ilości zasobów systemowych.
Wstrzyknięcie SQL
Atak wstrzykiwania SQL ma miejsce, gdy złośliwe instrukcje SQL są wysyłane do aplikacji. Jeśli te oświadczenia nie są odpowiednio oczyszczone, mogą umożliwić atakującemu interakcję z bazą danych. Może to pozwolić im na kradzież danych lub ich modyfikację. Fuzzing jest skutecznym narzędziem do próbowania dużych ilości instrukcji SQL i określania, czy któreś z nich dają pozytywną odpowiedź.
Przepełnienie bufora
Atak przepełnienia bufora ma miejsce, gdy do bufora programu dodawanych jest więcej danych, niż może obsłużyć. W tym scenariuszu haker może spowodować, że program wykona złośliwy kod. Może to służyć do kradzieży danych lub uzyskania nieautoryzowanego dostępu. Fuzzing służy do znajdowania danych wejściowych, które mogą spowodować przepełnienie bufora.
Rodzaje fuzzingu
Narzędzia do fuzzingu można sklasyfikować na podstawie zarówno sposobu generowania przypadków testowych, jak i ilości wiedzy o systemie.
Głupi kontra Mądry
Głupie fuzzing po prostu dodaje duże ilości losowych danych wejściowych. Nie wybiera danych wejściowych, które najprawdopodobniej zostaną zaakceptowane przez aplikację. Ułatwia to wdrożenie bez znajomości oprogramowania; jest jednak również wysoce nieefektywny, ponieważ większość danych wejściowych zostanie odrzucona.
Inteligentne fuzzing generuje dane wejściowe, które aplikacja prawdopodobnie zaakceptuje. Wymaga, aby użytkownik zrozumiał, jaki format wejściowy jest akceptowalny, a następnie generuje duże ilości danych wejściowych w tym formacie. Wdrożenie inteligentnego fuzzingu wymaga większego wysiłku i wiedzy o produkcie, ale jest znacznie wydajniejsze.
Mutacja a Pokoleniowy
Fuzzery mutacyjne pobierają dane wejściowe, które zostały wcześniej zaakceptowane, i wprowadzają do nich niewielkie zmiany. Pozwala to na generowanie danych wejściowych, które prawdopodobnie zostaną zaakceptowane bez znajomości akceptowanego formatu.
Fuzzery pokoleniowe tworzą zupełnie nowe dane wejściowe w oparciu o to, co wiadomo o przyjętym formacie.
Białe pudełko kontra Czarna skrzynka
Fuzzing Black Box jest używany bez żadnych informacji o testowanej aplikacji. Jest mniej skuteczny niż fuzzing białych pól, ale można go zastosować do dowolnej aplikacji bez dostępu do kodu źródłowego. To sprawia, że jest popularny wśród hakerów.
Fuzzing białych skrzynek wykorzystuje informacje o testowanej aplikacji do tworzenia danych wejściowych, które najprawdopodobniej zostaną zaakceptowane i generują luki. Jest używany głównie przez twórców oprogramowania, ponieważ jest bardziej skuteczny niż fuzzing czarnej skrzynki.
Fuzzing to potężna metoda testowania oprogramowania używana przez programistów, specjalistów ds. bezpieczeństwa i hakerów. Jego wdrożenie wymaga minimalnego wysiłku i jest w stanie znaleźć luki, których nie znajdują inne techniki testowania oprogramowania.
Jest to szczególnie ważne z punktu widzenia bezpieczeństwa, ponieważ często służy do wykrywania luk zero-day. Te luki mogą zostać wykryte i naprawione przez specjalistów ds. bezpieczeństwa lub wykryte i wykorzystane przez hakerów.