Fuzzing

Fuzzing
QS-Informatik

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

Einzelnachweise

  1. [1]
  2. [2]

Literatur

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Fuzzing — Le fuzzing est une technique pour tester des logiciels. L idée est d injecter des données aléatoires dans les entrées d un programme. Si le programme échoue (par exemple en crashant ou en générant une erreur), alors il y a des défauts à corriger …   Wikipédia en Français

  • fuzzing — noun Fuzz testing …   Wiktionary

  • Fuzzing — Пыление (бумаги) …   Краткий толковый словарь по полиграфии

  • fuzzing — fÊŒz n. cotton, fluff, lint; police, cop (Slang) v. cover with fuzz, become fuzzy …   English contemporary dictionary

  • fuzzing —  a splinter. N …   A glossary of provincial and local words used in England

  • Fuzz testing — Fuzzing redirects here. For other uses, see Fuzz (disambiguation). Fuzz testing or fuzzing is a software testing technique, often automated or semi automated, that involves providing invalid, unexpected, or random data to the inputs of a computer …   Wikipedia

  • Fuzzer — Fuzzing Le fuzzing est une technique pour tester des logiciels. L idée est d injecter des données aléatoires dans les entrées d un programme. Si le programme échoue (par exemple en crashant ou en générant une erreur), alors il y a des défauts à… …   Wikipédia en Français

  • Codenomicon — Type Privately held company Founded 2001 Headquarters Oulu, Finland Area served worldwide Products …   Wikipedia

  • Audit de sécurité — L audit de sécurité d un système d information (SI) est une vue à un instant T de tout ou partie du SI, permettant de comparer l état du SI à un référentiel. L audit répertorie les points forts, et surtout les points faibles (vulnérabilités) de… …   Wikipédia en Français

  • Mutation testing — For the biological term, see: Gene mutation analysis. Software Testing portal Mutation testing (or Mutation analysis or Program mutation) is a method of software testing, which involves modifying programs source code or byte code in small ways …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”