Fuzzing (dynamic Analysis)

Identifizierung bislang nicht erkannter Sicherheitslücken in einem Target System (Soft-und Hardware/Firmware) mit Dynamic Analysis: Fuzzing.

Manuelle Überprüfungen auf sicherheitskritische Fehler und Sicherheitslücken von IT-basierten Target Systems sind angesichts des meist großen Binärcode-Umfangs nicht praktikabel. Der Einsatz herkömmlicher Verfahren zur Behebung funktionaler Fehler und insbesondere nicht erkannter Sicherheitslücken (Vulnerabilities) ist sehr kostenaufwändig – viele Vulnerabilities werden daher erst nach der Auslieferung der Software an Kunden – z.T. auch von Dritten erkannt.

Dynamic Analysis: Fuzzing ist ein Verfahren mit dem Vulnerabilities in Soft- und Hardware/Firmware (!) kostengünstig identifiziert werden können. Fuzzing ist auf jede Art Software anwendbar – angefangen von Protokollen bis hin zu Individualsoftware, Standardsoftware wie ERP, CRM, Datenbanksysteme und auch auf unternehmensspezifische Anpassungen an Standardsoftware (Customizing), Web-Applications, Betriebssysteme und auch in Hardware und Embedded Systems.

Verfahren

Bisher nicht erkannte Fehler und Vulnerabilities werden mit Dynamic Analysis: Fuzzing im Binärcode – ohne den Quellcode zu kennen – kostensparend Tool-gestützt identifiziert. Das erfolgreiche Verfahren Fuzzing wird von KMU und großen Software-Herstellern zur Kostenreduzierung des gesamten Patchverfahrens erfolgreich eingesetzt: Der Patchaufwand geht gegen null. Auch Endanwender nutzen das Verfahren zur Abnahmeprüfung von Software.

Fuzzing stellt eine halb-automatisierte Methode zur Identifizierung von (mit Angriffen ausnutzbaren) Sicherheitslücken in Software und Hardware/Firmware dar: Tool-gestützte Eingabe von Testdaten in ein Target System (Programm, Firmware) werden verwendet, um unvorhergesehene – im Programmcode unberücksichtigte – Eingabedaten zu erkennen. Die falsche oder unzureichende Verarbeitung dieser (im Programm nicht berücksichtigten) Daten führt zu einem unerwarteten Verhalten (Crash, hoher Verbrauch an Ressourcen wie Rechenzeit, Speicher) des Zielprogramms. Dieses anomale Verhalten des Programms wird mit Hilfe eines Monitoring-Tools protokolliert, voranalysiert und dargestellt. Durch die Analyse der Monitorergebnisse können falsche Hinweise (False Positives) ausgesondert werden. Sicherheitslücken werden durch Reproduzierung der Anomalie und Erstellen eines Exploits nachgewiesen.

Für diese – im Grundsatz Black-Box-Technik – wird ausschließlich der ausführbare Maschinencode (Exe-Datei) benötigt.

Klassisches Penetration Testing umfasst im Gegensatz zu Fuzzing nur die Suche nach schon bekannten (!) Vulnerabilities (Vulnerability Scanner), Fehlkonfigurationen etc.

Erfolge des Fuzzing

  • Tool-Kombination: Für die jeweiligen zu untersuchenden Target Systems werden pro Projekt die jeweils speziell geeigneten 5 – 7 Tools gezielt aus den ca. 300 weltweit verfügbaren entgeltfreien und entgeltpflichtigen Tools ausgewählt und eingesetzt: Unterschiedliche Tools identifizieren verschiedene Vulnerabilities!
  • Die Wirksamkeit der Fuzzer unterscheidet sich maßgeblich durch die generierten Fuzz-Daten (Eingabedaten in das Zielprogramm) bzw. den Algorithmus zur Generierung dieser Fuzz-Daten. kann dazu einen auf das Target System hin optimierten eigenen Fuzz-Datensatz einsetzen.
  • Fuzzing wird bereits von großen und kleinen Softwareherstellern mit Erfolg eingesetzt, um die Kosten zur Fehlerbehebung und für Patches nachhaltig zu senken. Die Methode wird gleichermaßen von Anwendern zur Abnahme von Zielsystemen eingesetzt.
Fuzzing