Fuzzing
Fuzzing von der Analyse bis zur Testausführung Fraunhofer FOKUS

Fuzz Testing – eine effektive Technik um unbekannte Sicherheitslücken aufzudecken

Security Testing ist in der zunehmend vernetzten Welt ein Grundbaustein im Entwicklungsprozess geworden. Fuzz Testing hat sich als effektive Technik bewährt, um unbekannte Sicherheitslücken (0-Day-Vulnerabilities) aufzudecken. Bei dieser Testmethode werden die Schnittstellen des zu testenden Systems mit ungültigen und unerwarteten Eingaben konfrontiert, um deren Robustheit zu testen.

Zufallsbasiertes Fuzzing ist die einfachste Form, um Sicherheitslücken zu finden. Auf Grund der Komplexität des Eingaberaums bietet es jedoch nicht die ausreichende Effizienz, um ein System umfassend zu testen. Smart Fuzzing nutzt Modelle für Interfaces, Protokolle oder Services für die Testfallgenerierung. Damit verringert sich die große Zahl der Testfälle auf die relevanten. Komplexe Fehler werden besser aufgedeckt. Smart Fuzzing ist im Vergleich zu einfachen Fuzzing-Techniken deutlich effizienter.

Wir entwickeln Smart Fuzzing-Heuristiken sowohl für Data Fuzzing (auf Basis von Fuzzino) als auch für Behavioral Fuzzing, die maßgeschneidert auf Interfaces, Protokolle und Services sind. Dafür verwenden wir Systemmodelle. Aber auch wenn diese nicht vorliegen, können wir funktionale Testfälle oder System-Traces nutzen und somit die Einstiegshürden verringern. Die Integration zusätzlicher Informationen aus einer Risikoanalyse gestalten den Testprozess wesentlich effizienter.

Unser Prozess basiert auf einer Analyse des zu fuzzenden Systems und idealerweise auch auf einer Risikoanalyse. Auf Grundlage dieser Ergebnisse werden geeignete Fuzzing-Heuristiken ausgewählt und neue entwickelt. Im nächsten Schritt erfolgt die Auswahl und ggf. Annotation geeigneter Test-Szenarien, aus denen automatisiert die Widerstandsfähigkeits- oder Sicherheits-Testfälle generiert werden. Am Beispiel eines Geldverarbeitungssystems eines Industrie-Partners haben wir gemeinsam mit System-Experten eine Risikoanalyse erstellt und sein Protokoll mit Hilfe von funktionalen Testfällen auf mögliche Schwachstellen untersucht. Ausgehend von diesen funktionalen Testfälle und mit Hilfe der Risikoanalyse wurden geeignete Testfälle ausgewählt und daraus spezifische Sicherheitstest generiert. Sowohl Data als auch Behavioral Fuzzing wurden dafür verwendet. Dank einer optimierten Ausführungsumgebung konnte so in angemessener Zeit eine hohe Überdeckung von Risiken erzielt werden. Ergebnisse hierzu können auf der Website des DIAMONDS-Projekts gefunden werden.

Unsere Basislösung für Fuzzing "Fuzzino" wird bereits von verschiedenen Werkzeuganbietern eingesetzt. Dazu zählen Dornier Consulting und TestingTechnologies. Mit do.ATOMS bietet Dornier Consulting ein Testwerkzeug für modellbasierte funktionale Tests an. Mit Hilfe von Fuzzino können mit dem gleichen Werkzeug neben funktionalen Tests auch Sicherheitstests mit Fuzzing durchgeführt werden. Auch TestingTechnologies' TTworkbench ist bereits auf Fuzzing vorbereitet und bietet mit der neuesten Version eine TTCN-3-Spracherweiterung an, mit deren Hilfe auf einfache Art funktionale Testsuiten für Fuzzing, unterstützt von Fuzzino, wiederverwendet werden können.

Unser Angebot

  • Vorbereitung und Durchführung von Sicherheits- und Widerstandsfähigkeits-Tests Ihres Produkts mit Fuzzing
  • Analyse produktspezifischer Interfaces, Protokolle und Services und Entwicklung individueller Fuzzing-Heuristiken
  • Unterstützung bei der Einführung von Fuzz Testing in Ihren Testprozess und Ihre Testwerkzeuge mit Hilfe von Fuzzino
  • IT-Sicherheits-/ Risikoananlyse