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 Testtechnik 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 von Schnittstellen, Protokollen oder Diensten für die Testfallgenerierung. Damit verringert sich die große Zahl der Testfälle auf die relevanten. Komplexe Fehler werden schneller aufgedeckt. Smart Fuzzing ist im Vergleich zu zufallsbasierten Fuzzing-Techniken deutlich effizienter.

Wir entwickeln Fuzzing-Heuristiken sowohl für Data Fuzzing (auf Basis von Fuzzino) als auch für Behavioral Fuzzing. Dafür verwenden wir funtionale Testmodelle. Selbst 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 gestaltet den Testprozess wesentlich effizienter.

Unser Prozess basiert auf einer Analyse des zu testenden 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 IT-Sicherheits- und Robustheits-Testfälle generiert werden. Am Beispiel eines Geldverarbeitungssystems eines Industriepartners haben wir gemeinsam mit System-Experten eine Risikoanalyse durchgeführt und dessen Protokoll mit Hilfe von funktionalen Testfällen auf mögliche Schwachstellen untersucht. Ausgehend von diesen funktionalen Testfällen und mit Hilfe der Risikoanalyse wurden geeignete Testfälle ausgewählt und daraus spezifische IT-Sicherheitstest generiert. Sowohl Data als auch Behavioral Fuzzing wurden angewendet. Dank einer optimierten Ausführungsumgebung konnte so in angemessener Zeit eine hohe Überdeckung von Risiken erzielt werden. Ergebnisse hierzu sind auf der Website des mehrfach ausgezeichneten DIAMONDS-Projekts zu finden.

Unsere Basislösung für Fuzzing, Fuzzino, wird bereits von verschiedenen Werkzeuganbietern eingesetzt. Dazu zählen Dornier Consulting mit seinem modellbasiertem Testwerkzeug do.ATOMS und Spirents TTworkbench, eine TTCN-3-basierte Testautomatisierungsplattform. Mit der Hilfe von Fuzzino können sowohl IT-Sicherheitstestfälle als auch funktionale Testfälle mit dem gleichen Werkzeug durchgeführt werden.

Unser Angebot

  • Analyse produktspezifischer Schnittstellen, Protokolle und Dienste sowie Entwicklung maßgeschneiderter Fuzzing-Heuristiken
  • Vorbereitung und Durchführung von Sicherheits- und Robustheits-Tests Ihres Produkts mit Fuzzing
  • Unterstützung bei der Einführung von Fuzz Testing in Ihren Testprozess und bei der Integration von Fuzzino in Ihre Testwerkzeuge 
  • IT-Sicherheits-Risikoananlyse als Grundlage für einen effizienten, risiko-basierten IT-Sicherheitstestprozess