Fuzz testing
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.
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 | edytuj kod]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 | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ 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.
- ↑ 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] .
- ↑ 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] .
- ↑ 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] .
- ↑ american fuzzy lop [online], lcamtuf.coredump.cx [dostęp 2019-06-21] .
- ↑ 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.).