Fuzzing – Per Zufall auf Schwachstellensuche

Hacker und Softwaretester gehen oft auf ähnliche Weise vor. Und manchmal sogar mit den gleichen Tools. Zumindest bei einer Form der Schwachstellensuche, dem Fuzzing ist das so. Dabei werden Programme automatisiert mit zufällig erzeugten Eingabedaten versehen und die Reaktionen darauf ausgewertet. Im Idealfall gibt ein Programm bei der Eingabe unzulässiger Daten (z.B. Buchstaben in ein Zahlenfeld, überlange Eingabestrings etc.) eine Fehlermeldung aus und verwirft die Eingabe.

Vom Gesichtspunkt der Gebrauchstauglichkeit (Usability) gesehen, sollte die Fehlermeldung dem Nutzer mitteilen was falsch war und wie er es richtig machen kann. Vom Sicherheitsaspekt her betrachtet, sollte die Fehlermeldung keine Hinweise enthalten, die ein Angreifer verwerten kann (z.B. betroffene Systemkomponenten, Versionsnummern, Pfadangaben etc.). Solche Angaben gehören in ein geschütztes Logfile für den Administrator oder Entwickler, nicht auf den Bildschirm des Anwenders.

Durch Fuzzing lässt sich u.a. aufdecken, ob ein Programm durch Eingaben zum Absturz gebracht werden kann oder in unerwarteter Weise reagiert (z.B. dass Ablaufschritte übersprungen werden). Auch die bei Angreifern allseits beliebten Pufferüberläufe, durch die sich Schadcode einschmuggeln lässt, werden oftmals so entdeckt. Mit der Kenntnis, welche Eingabedaten zu Abstürzen führen, kann ein Angreifer gezielt Programme oder Internet-Dienste lahmlegen (Denial of Service), da Eingaben nicht nur durch Nutzer sondern auch durch das Lesen von Dateien oder das Entgegennehmen von Geräte- und Netzwerkdaten anfallen.

Viele der für Fuzzing benötigten Tools sind entweder schon Bestandteil von Entwicklerumgebungen. Oder aber frei erhältlich, wie z.B. in einem Heise-Testbericht nachzulesen ist.

Neben dem reinen Brute Force Fuzzing, bei dem man zu testende Programme mit Zufallsdaten füttert, gibt es auch intelligentere Testansätze, bei denen Protokolle und Formate wie z.B. HTML-Tags, PDF- und JPG-Header etc. berücksichtigt werden. So lassen sich z.B. gültige PDF-Dateienn erzeugen, deren Inhalt den Reader aber beim Versuch ihn zu verarbeiten ggf. in echte Probleme bringen kann.

Allerdings muss nicht jedes per Fuzzing entdeckte Softwareproblem gleich auch eine Sicherheitslücke darstellen. So schreibt heise.de: „Die Popularität des Fuzzing ist in den vergangenen Jahren sprunghaft angestiegen, was sich gut an der wachsenden Zahl der hoch spezialisierten Fuzzing-Tools ablesen lässt. Einige der Tools lassen sich bereits ohne fundierte technische Kenntnisse einsetzen. Dementsprechend häufen sich in letzter Zeit auf einschlägigen Mailinglisten vermeintliche Sicherheits-Advisories, die deutlich erkennen lassen, dass der Poster den Fehlern mit Fuzzing auf die Spur gekommen ist. Frei nach dem Strickmuster “Programm X in Version Y stürzt ab, wenn man eine Datei mit Inhalt Z öffnet” fehlt ihnen jeglicher Tiefgang, und oft lassen sie selbst Sicherheitsexperten über tatsächliche Auswirkungen und geeignete Gegenmaßnahmen im Dunkeln.“

Alles in allem ist Fuzzing eine wichtige Methode zur Verbesserung der Softwarequalität. Aber auch ein Instrument, um bei fehlender Qualität Schwachstellen in Softwaresystemen zu finden.

Zum Weiterlesen: Schwachstellensuche mit Fuzzing (heise.de)

Einen Kommentar schreiben