- Fuzzing
-
Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen und beteilige dich an der Diskussion! (+)
Begründung: Bitte den Abschnitt "Werkzeuge/Tools/Software" überarbeiten und OMA-Test machen --Crazy1880 21:24, 26. Nov. 2010 (CET)Fuzzing, auch Robustness Testing oder Negative Testing, ist eine spezielle Technik für Software-Tests. Hierfür werden automatisch mit Tools zufällige Daten erzeugt, die über Eingabeschnittstellen eines Programms verarbeitet werden (z. B. durch Öffnen einer Datei, deren Datenformat das Programm unterstützt).
Das Fuzzing (Fuzz-Testing, nach dem englischen Wort für unscharf, verschwommen) wurde an der Universität von Wisconsin-Madison 1989 von Professor Barton Miller und seinen Studenten entwickelt.
Inhaltsverzeichnis
Anwendung
Fuzzing wird in Software-Entwicklungs-Projekten in der Regel im Rahmen eines Black-Box-Tests durchgeführt, um neue Software auf Fehleranfälligkeit zu prüfen sowie um eventuelle Sicherheitslücken aufzuspüren. Mittlerweile wird diese Art des Tests auch manchmal bei Penetration Tests im IT-Security-Bereich durchgeführt, das jedoch eher selten, weil mit Systemabstürzen zu rechnen ist.
Wenn das Programm bei bestimmten gelieferten Daten ein Problem verursacht (z. B. abstürzt), kann darauf aufbauend anhand von White-Box-Tests die genaue Ursache erforscht werden.
Fuzz‐Testing weist ein gutes Preis-Leistungs-Verhältnis auf, weshalb es gerne im Rahmen der Testphase eingesetzt wird. Besteht erst einmal eine Basis (Werkzeuge, Regeln, Abläufe) für das Fuzzing (Fuzz‐Testing), können bestehende Fuzz-Tests (Regeln/Sets) sehr schnell und im Rahmen der Entwicklung leicht erweitert werden.
Fuzzing ist eine zuverlässige Methode zur Qualitätssicherung von Software, speziell um noch unbekannte Schwachstellen und Robustheitsprobleme in Software aufzudecken.
Fuzzing-Werkzeuge
Oft werden für das Fuzzing spezielle auf das Projekt ausgelegte Tools benötigt und aufgrund dessen oft extra angefertigt/programmiert. Mittlerweile gibt es aber auch – im Gegensatz zu sogenannten „Frameworks“ – erprobte kommerzielle Software. Bei Webanwendungen kann man oft auf bestehende Werkzeuge zurückgreifen, da der Ablauf, abstrahiert dargestellt, immer der gleiche ist und man eine gemeinsame Schnittstelle (HTTP/HTML) hat. Grundsätzlich kann mit Fuzzing‐Tools aber alles getestet werden, was eine standardisierte Schnittstelle hat, bzw. alles, was man mit einem Protokoll ansprechen kann.
An diesem Punkt klinken sich Fuzzing‐Tools ein. Für das Fuzzing von Browsern und Software gibt es mittlerweile auch gute Werkzeuge. Mit diesen Tools kann man generell Software, wie z. B. Webbrowser, mit zuvor generierten ungültigen Datenstrings/Dateien ansteuern und ungewöhnliches Programmverhalten (z. B. Abstürze, Denial of Service, Degradation of Service) provozieren, ggf. loggen und später auswerten.
Besonders hervorgetan im Bereich Fuzzing hat sich die Security Programmers Group der Universität von Oulu in Finnland. Diese entwickelte bereits 1996 ein bekanntes OpenSource Fuzzing Tool mit Namen PROTOS, jedoch wird PROTOS seit 2004 nicht weiter entwickelt. PROTOS ist ein Fuzzer, der mit älteren Techniken arbeitet.[1].
Heute werden im kommerziellen Umfeld mehr und mehr „intelligente“ oder „stateful“ Fuzzer entwickelt, die vorab die Interoperabilität des zu testenden Systems überprüfen und auf Basis der Prüfergebnisse dann das Fuzzing‐Testset (anomalisierte Datenpakete) auf das Zielsystem schicken.
Bekannte OpenSource‐Frameworks sind hier z. B. Sulley oder Peach. Diese Frameworks sind sehr komplex und benötigen umfangreiche Kenntnisse im Bereich Fuzzing und Protokolle. Kommerzielle, intelligente Fuzzing‐Tools sind u. a. beSTORM von BeyondSecurity oder Defensics von Codenomicon. Codenomicon’s Defensics arbeitet mit sogenannten „Testcases“, die vordefiniert sind. BeyondSecurity’s „beSTORM“‐Fuzzer bedient hingegen jedes Feld im Protokoll mit n×n Anomalien und nicht mit Testcases.
Das Bundesministerium für Bildung und Forschung (BMBF) fördert ein umfangreiches Forschungsprojekt an der Hochschule Bonn‐Rhein‐Sieg zum Thema Fuzzing (und Threat Modeling).[2]
Siehe auch
- Sicherheitstest (Software)
- Robustness Testing (Software)
- Reverse Engineering
- Debugger
Einzelnachweise
Literatur
- Kostengünstige Identifizierung von Sicherheitslücken mit Threat Modeling und Fuzzing - Pohl, H.; Sakal, P. In: KES - Fachzeitschrift für Informationssicherheit 63 - 66, 2, 2010
Weblinks
- Fuzz Testing of Application Reliability (engl.) – Website der ursprünglichen Entwicklern um Professor Barton Miller
- Artikel bei heise Security mit Links zu Fuzzing-Tools
- Fuzzing: Breaking software in an automated fashion – Vortrag beim 22. Chaos Communication Congress
- Rapid in-depth Analysis of Software-Vulnerabilities - Threat Modeling and Fuzzing - softScheck
Kategorie:- Testen (Software)
Wikimedia Foundation.