Fuzzing

Zrzut ekranu programu American Fuzzy Lop. Testowany program: main() { if (getchar() == '1') abort(); }

Fuzzing, także fuzz testing – automatyczna lub półautomatyczna metoda testowania oprogramowania, służąca m.in. do wykrywania w nim błędów i luk w zabezpieczeniach, które mogłyby zostać wykorzystane przez hakerów. Polega na automatycznym przekazywaniu do programu nieoczekiwanych lub losowych danych wejściowych i rejestrowaniu niepożądanych zdarzeń, takich jak awarie programu (ang. crash), wycieki pamięci czy nieautoryzowany dostęp. Dane mogą być wprowadzane:

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

Fuzzing jest mniej skuteczny w wykrywaniu problemów bezpieczeństwa, które nie powodują awarii programu. Choć jest prosty, 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 daje jednak pełnego obrazu bezpieczeństwa, jakości ani skuteczności programu i jest najbardziej skuteczny w połączeniu z testami czarnej skrzynki (ang. black box testing), testami beta i innymi metodami testowania.

Za pomocą 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, jądrach iOS i OpenBSD, filtrze pakietów NetBSD czy Apache httpd.

Fuzzing mutacyjny

Polega na losowym modyfikowaniu poprawnych danych wejściowych, np. plików (tworzeniu ich mutacji). Tą metodą Mateusz Jurczyk i Gynvael Coldwind z zespołu bezpieczeństwa Google znaleźli w 2012 roku kilkadziesiąt błędów powodujących awarie programu Adobe Reader w wersjach 9.5.1 i 10.1.3. Modyfikowali w tym celu publicznie dostępne pliki PDF prostymi algorytmami, takimi jak odwracanie pojedynczych bitów.

Zobacz też

Przypisy

  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, Jared DeMott, Charles Miller, Atte Kettunen, Fuzzing for software security testing and quality assurance, wyd. 2, Norwood, MA: Artech House, 2018, ISBN 978-1-63081-519-6, OCLC 1040072327.
  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, DOI: 10.1145/96267.96279, ISSN 0001-0782 [dostęp 2019-06-21].
  4. ↑ Michael Sutton, Adam Greene, Pedram Amini, Fuzzing: Brute Force Vulnerability 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. ↑ Mateusz Jurczyk, Gynvael Coldwind, PDF fuzzing and Adobe Reader 9.5.1 and 10.1.3 multiple critical vulnerabilities [online], j00ru//vx tech blog, 14 sierpnia 2012 [dostęp 2026-09-29] (ang.).

Linki zewnętrzne