Fuzzer | ||
ProjectToFuzzTest | ||
.gitignore | ||
README.md |
Projekt - Podstawy bezpieczeństwa komputerowego
W ramach projektu zaimplementowany zostały fuzzer do testowania JSON parsera.
Implementacja JSON parsera znajduje się na githubie: https://github.com/geekskool/python-json-parser
Opis działania fuzzera
Fuzzer w losowy sposób generuje poprawne JSON-y, a następnie wprowadza do nich popularne błędy, aby sprawdzić, jak parser radzi sobie z niepoprawnymi danymi. Popularne błędy obejmują:
- brakujące zamknięcie cudzysłowu.
- brakujące zamknięcie nawiasu klamrowego lub kwadratowego.
- dodatkowy przecinek na końcu listy lub obiektu.
- brakujący dwukropek w obiekcie.
Wyniki testów są zapisywane do pliku logów, a następnie analizowane, aby ocenić skuteczność parsera.
Wynik przeprowadzonych testów
Przeprowadzono 100,000 testów, które trwały 28 sekund.
- Powiodło się 94,361 testów.
- Nie przeszło 5,639 testów.
Wnioski
Wszystkie JSON-y, które nie zostały celowo "zepsute" poprzez wprowadzenie popularnych błędów, przeszły testy pomyślnie. Oznacza to, że algorytm jest w stanie poprawnie sparsować każdy poprawny JSON niezależnie od danych wewnątrz.
JSON-y zawierające typowe błędy, takie jak:
- niedomknięty cudzysłów,
- podwójny przecinek,
- brakujący nawias klamrowy,
- brakujący dwukropek w obiekcie,
spowodowały niepowodzenie testów.
Aby algorytm przeszedł wszystkie testy, należałoby dodać odpowiednią obsługę błędnych JSON-ów, co pozwoliłoby na wykrywanie i raportowanie tych błędów zamiast generowania wyjątków lub niepoprawnych wyników.