Fuzz testing (fuzzing) – automatyczna lub półautomatyczna metoda testowania oprogramowania lub znajdowania w nim dziur, przydatnych przy atakach hakerskich[1]. Polega ona na zautomatyzowanym wysyłaniu do programu różnego rodzaju losowych danych wejściowych i rejestrowaniu niepożądanych wydarzeń, takich jak crash, wycieki pamięci czy nieautoryzowany dostęp. Dane mogą być wprowadzane:

  • z linii poleceń,
  • za pomocą plików otwieranych w programie,
  • za pomocą zdarzeń klawiatury i myszki,
  • za pomocą protokołów internetowych.
Zrzut ekranu programu American Fuzzy Lop; testowany program to: "main() { if (getchar() == '1') abort(); }".

Termin wprowadził Barton Miller z Uniwersytetu Wisconsin-Madison ok. 1989 roku, choć samo podejście było stosowane już wcześniej[2][3].

Fuzz testing jest mniej skuteczne w przypadku zagrożeń bezpieczeństwa, które nie powodują awarii programu, takich jak spyware, niektóre wirusy, robaki, trojany i keyloggery. Chociaż fuzz testing jest proste, to oferuje wysoki stosunek korzyści do kosztów i może ujawnić poważne defekty, które są pomijane, gdy oprogramowanie jest pisane i debugowane w klasyczny sposób. Nie może jednak dostarczyć pełnego obrazu ogólnego bezpieczeństwa, jakości lub skuteczności programu i jest najbardziej skuteczny w połączeniu z szeroko zakrojonymi testami black box testing, beta testing i innymi metodami debugowania[4].

Przy pomocy wolnego i otwartego fuzzera AFL autorstwa Michała „lcamtufa” Zalewskiego wykryto nieznane wcześniej podatności bezpieczeństwa i błędy w dziesiątkach programów i platform, takich jak PuTTY, PHP, OpenSSL, LibreOffice, Firefox, GnuPG, nginx, BIND, curl, Tor, kernelach iOS i OpenBSD, filtrze pakietów NetBSD czy Apache httpd[5].

Fuzzing mutacyjny edytuj

Polega na losowej zmianie poprawnych plików (tworzeniu ich mutacji). Za pomocą tej metody znaleziono dziury w Adobe Reader 9.5.1 i 10.1.3.[6]

Zobacz też edytuj

Przypisy edytuj

  1. Karwatka P., Ejminowicz P., Engelmann M. i inni, (2013), Technologia w e-commerce. Teoria i praktyka. Poradnik menedżera. Helion. ISBN 978-83-246-8727-5.
  2. Ari Takanen i inni, Fuzzing for software security testing and quality assurance, wyd. 2, Norwood, MA: Artech House, 2008, xvi, 22, 59, 138, ISBN 978-1-63081-519-6, OCLC 1040072327 [dostęp 2019-06-21] [zarchiwizowane z adresu 2017-06-28].
  3. Barton P. Miller, Louis Fredriksen, Bryan So, An Empirical Study of the Reliability of UNIX Utilities, „Communications of the ACM”, 33 (12), 1990, s. 32–44, DOI10.1145/96267.96279, ISSN 0001-0782 [dostęp 2019-06-21].
  4. Michael Sutton, Adam Greene, Pedram Amini, Fuzzing: brute force vulnerabilty discovery, Upper Saddle River, NJ: Addison-Wesley, 2007, ISBN 0-321-44611-9, OCLC 86117714 [dostęp 2019-06-21].
  5. american fuzzy lop [online], lcamtuf.coredump.cx [dostęp 2019-06-21].
  6. j00ru//vx tech blog : PDF fuzzing and Adobe Reader 9.5.1 and 10.1.3 multiple critical vulnerabilities [online], j00ru.vexillium.org [dostęp 2017-11-23] (ang.).