Was ist Fuzz testing?

Was ist Fuzz testing?

Fuzz-Testing, auch bekannt als Fuzzing oder Monkey-Testing, ist eine Technik zum Testen von Software auf unbekannte Schwachstellen. Der Fuzz-Testprozess wird durch ein Programm namens Fuzzer automatisiert. Dieses Programm liefert eine große Datenmenge, die als Eingabe an das Zielprogramm gesendet wird. Wenn das Zielprogramm abstürzt oder sich unerwünscht verhält, erstellt der Fuzzer ein Protokoll der Eingaben, die den Fehler verursacht haben.

Hacker verwenden häufig Fuzzer, um nach Schwachstellen in Software zu suchen und sie auf Schwachstellen zu untersuchen, die sie ausnutzen können. Softwareentwickler können einen Fuzzer verwenden, um diese Art von Angriffen zu antizipieren und sich dagegen zu wehren.

Herkunft

Der erste Fuzzer wurde Anfang der 1980er Jahre vom Entwickler Steve Capps geschrieben, um Programme für den Macintosh-Computer auf Schwachstellen zu testen. Er nannte sein Programm „The Monkey“ und bezog sich damit auf das klassische Sprichwort eines Affen, der unendlich lange zufällige Tasten auf einer Schreibmaschine drückt. Die Theorie besagt, dass der Affe, wenn er genügend Zeit hat, schließlich die gesamten Werke von Shakespeare schreiben wird. Obwohl dieser Ansatz zum Testen von Software oft als “Fuzzing” bezeichnet wird, wird er aufgrund des Capps-Programms auch als “Monkey-Testing” bezeichnet.

Liste der Fuzzer

Fuzzing-Techniken helfen beim Testen von Software, und es gibt viele Fuzzer für bestimmte Zwecke.

Das Folgende ist eine Liste von Fuzzern, von denen die meisten Open Source sind und viele sich noch in der aktiven Entwicklung befinden.

Fuzzer-Name/URL Beschreibung
Google Desinfektionsmittel Eine Gruppe von vier bei Google entwickelten Data Sanitizern, die Fuzzing verwenden, um Programmfehler zu erkennen:

  • AddressSanitizer, der Speicheradressfehler in C- und C++-Programmen erkennt.

  • LeakSanitizer, der Speicherlecks erkennt.

  • ThreadSanitizer, der Racebedingungen in C++ und Go erkennt.

  • Memory Sanitizer, der nicht initialisierten Speicher erkennt.

afl-fuzz American Fuzzy Lop, ein Tool, das genetische Algorithmen verwendet, um die Sicherheit kompilierter Programme zu testen.
Backfuzz Ein Protokoll-Fuzzing-Toolkit.
BrundleFuzz Ein verteilter Fuzzer für Windows und Linux.
CERT-FEIND Failure Observation Engine, ein vom CERT entwickeltes Tool, das Mutations-Fuzzing verwendet, um Schwachstellen in Windows-Programmen zu erkennen.
CERTfuzz Der Quellcode von CERT FOE.
Choronzon Ein evolutionärer wissensbasierter Fuzzer.
Schwierig Ein von Twitter entwickeltes Tool zur Erkennung von Schwachstellen in Webdiensten.
Schwindlig Eine Fuzzing-Bibliothek für Python
dfuzzer Ein Fuzzing-Tool zum Testen von Prozessen, die über den D-Bus IPC- und RPC-Mechanismus kommunizieren.
dotdotpwn Ein Tool zum Testen von Webanwendungen auf Path-Traversal-Schwachstellen.
Dranzer Ein Fuzz-Tester für ActiveX-Steuerelemente.
EMFFuzzer Ein erweiterter Metafile-Fuzz-Tester.
Ausbeutbar Eine Erweiterung für GDB (den GNU-Debugger), die ausführbare Linux-Dateien analysiert und ihre Fehler anhand bekannter Exploits nach Schweregrad klassifiziert. Ursprünglich am CERT entwickelt.
Go-fuzz Ein Fuzz-Tester für Go-Programme, der ihre Objekte mit zufälligen Werten füllt.
grr Übersetzt 32-Bit-Binärdateien in 64-Bit und fuzzt sie als Teil des Prozesses.
honggfuzz Evolutionärer, rückkopplungsgetriebener Fuzzer für Hard- und Software.
HTTP/2-Fuzzer Ein Fuzzer für HTTP/2-Anwendungen, noch zum Download verfügbar, aber nicht mehr aktiv entwickelt.
Hodor Ein “etwas mehr als total dummer” (Brute Force) Fuzzer.
iFuzzer Ein in Python geschriebener Fuzzer, der Mercurial und Valgrind verwendet.
KEMUfuzzer Ein Fuzzer für virtuelle Maschinen, die auf QEMU-, VMware-, VirtualBox- oder BHOCS-Emulationsplattformen ausgeführt werden.
KernelFuzzer Ein Fuzzer für Kernel-Systemaufrufe.
LibFuzzer Eine Bibliothek für prozessbegleitende, evolutionäre, abdeckungsgeführte Fuzz-Tests.
Netzob Ein Fuzzer zum Reverse-Engineering von Kommunikationsprotokollen.
Neuraler Fuzzer Ein Fuzzer, der maschinelles Lernen (neuronale Netze) verwendet, um seine Tests durchzuführen.
Albtraum Ein verteilter Fuzzer mit webbasierten Verwaltungstools.
Pathgrind Pfadbasierte dynamische Analyse für 32-Bit-Anwendungen.
Perf-Fuzzer Ein Fuzzer, der speziell zum Testen des Systemaufrufs perf_event_open() im Linux-Kernel entwickelt wurde.
Pulsar Ein Fuzzer, der Protokolle “lernt”.
PyJFuzz Ein Python-JSON-Fuzzer.
QuickFuzz Ein experimenteller Grammatik-Fuzzer, geschrieben in Haskell.
Radamsa Ein Allzweck-Fuzzer.
Geil Ein einfacher Python-Fuzzer, der zufällige Eingaben für das getestete Programm generiert.
schnuppern Einfacher Fuzz. „Genau das, wonach es sich anhört – ein einfacher Fuzzer.“ Als Teil des Kali Linux-Toolsets enthalten.
Skipfish Ein von Google entwickelter Sicherheitsscanner für Webanwendungen.
syntribios Ein automatisierter Fuzz-Tester für Web-APIs, geschrieben in Python und gepflegt von der OpenStack Security Group.
TriforceAFL Ein Full-System-Fuzzer, der QEMU verwendet.
Wapiti Ein Schwachstellenscanner für Webanwendungen.
Wfuzz Ein Brute-Force-Fuzzer für Webanwendungen.
zzuf Ein deterministischer, transparenter Anwendungseingabe-Fuzzer, der zufällig Bits in den Eingabeoperationen einer Datei ändert.

Das Folgende sind Fuzzing-Harnesse oder Frameworks, die Ihnen bei der Verwaltung Ihrer Fuzz-Tests helfen.

Fuzzing-Framework Beschreibung
ZERT BFF Das vom CERT entwickelte BFF (Basic Fuzzing Framework) wurde entwickelt, um Schwachstellen in Windows-, macOS- und Linux-Anwendungen zu finden.
FuzzFlow Ein Fuzzing-Framework in AngularJS.
Fuzzinator Ein Framework für zufällige Fuzz-Tests.
FuzzLabs Ein Allzweck-Framework für Fuzz-Tests.
Schleifer Ein Fuzz-Testautomat/Framework zum Testen von Webbrowsern.
Kätzchen Ein in Python geschriebenes Fuzz-Test-Framework.
ofuzz Ein in OCaml geschriebenes Fuzzing-Framework.
Nodefuzz Ein Fuzz-Testing-Framework für Webbrowser, geschrieben in nodejs.
PassiveFuzzFrameworkOSX Ein Fuzzer zum Testen von Schwachstellen im macOS-Kernel.
Pfirsich-Fuzzer Eine Plattform für Fuzz-Tests, die „praktisch jedes System auf unbekannte Schwachstellen testen kann“.
RamFuzz Ein Fuzzer zum Testen der einzelnen Parameter von Objektmethoden.
Sulley Ein “vollautomatisches und unbeaufsichtigtes, reines Python”-Fuzzing-Framework.
FunFuzzer Ein Python-Fuzzing-Harness für JavaScript-Engines und DOM-Renderer von Mozilla.

Fehler, Programmierbedingungen, Sicherheitsbedingungen, Softwaretests

Neueste Artikel
Vielleicht möchten Sie lesen

LEAVE A REPLY

Please enter your comment!
Please enter your name here