Go to file
Mateusz Grzegorzewski 170459121e Implementation
2024-06-21 21:49:55 +02:00
Fuzzer Implementation 2024-06-21 21:49:55 +02:00
ProjectToFuzzTest Implementation 2024-06-21 21:49:55 +02:00
.gitignore Initial commit 2024-06-21 21:45:12 +02:00
README.md Implementation 2024-06-21 21:49:55 +02:00

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.