
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 funktionale
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 Security- 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 Security-Tests
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 Security-Testfä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
- Security-Risikoanalyse als Grundlage für einen effizienten, risiko-basierten Security-Testprozess