Konkrete Kritik an CVSS4
Marc Ruef
Bei Fuzzing handelt es sich um eine Technik im Bereich des Software-Testing. Dabei werden in semi-automatisierter oder automatisierter Weise Eingaben getätigt, um mittels fehlerhafter Zugriffe unerwartete Reaktionen zu provozieren.
Die Geburt des Begriffs wird Barton Miller zugeschrieben, der 1988 an der University of Winsconsin eine entsprechende Arbeit mit dem Titel Operating System Utility Program Reliability – The Fuzz Generator durchgeführt hat. Doch schon 1983 wurde für den Macintosh durch Steve Capps eine Applikation namens The Monkey entwickelt, mit der entsprechendes Fuzz Testing in der Software MacPaint umgesetzt werden konnten.
Fuzzing ist damit eigentlich eine relativ alte Technik, die aber erst ab ca. 2005 den zaghaften Durchbruch in der IT-Security Branche geschafft hat. Heutzutage gilt es als fester Bestandteil systematischer Sicherheitsüberprüfungen.
Ein System erwartet immer irgendwelche Eingaben. Diese haben eine bestimmte Struktur. Zum Beispiel erwartet in einem Formular das Feld Postleitzahl für Schweizer Adressen stets vier Ziffern der folgenden Form (als regulärer Ausdruck):
([0-9]{4}) = { 0000, 0001, ..., 9999 }
Beim Fuzzing werden nun Eingaben getätigt, die gezielt diese Anforderungen verletzen. In diesem Beispiel bieten sich an:
Test | Beispiel |
---|---|
kürzer als 4 Zeichen | 111_ |
länger als 4 Zeichen | 1234567890(...) |
Buchstaben | 123A |
Sonderzeichen | 123* |
Minuswerte | -123 |
konstruierte Werte | 1+23 (wird nach Berechnung als 24 gehandelt) |
leere Eingabe | ____ |
nicht abgeschlossene Eingaben | (gibts in diesem Beispiel nicht) |
reservierten Mustern | HTML-Anweisungen, SQL-Abfragen, … |
alternative Codierungen | UTF-8, Unicode, … |
Dadurch soll ein Verhalten provoziert werden, auf das das Zielsystem nicht ausgelegt ist. Wenn zum Beispiel die PLZ eingegeben und das Formular abgeschickt wurde, dann soll direkt die Ortschaft aus einer Datenbank geholt und dargestellt werden. Doch was wird geholt, wenn 123*
eingegeben wird? Mögliche Resultate, denen eine generische Kritikalität beigemessen wird, sind:
Sicherheitstechnisch Positiv | |
---|---|
passed | allgemeine Fehlermeldung (bevorzugte Lösung) |
low | es passiert gar nichts (vom Betrieb her aber unerwünscht) |
Sicherheitstechnisch Negativ | |
medium | technische Fehlermeldung (z.B. Informationen zur internen Verarbeitung) |
medium | erster Treffer wird geladen |
medium | letzter Treffer wird geladen |
medium | “zufälliger” Treffer wird geladen (z.B. je nach Sortierung) |
high | alle Treffer werden geladen (erweiterte Zugriffsrechte) |
high | auf geschützte Daten zugreifen (erweiterte Zugriffsrechte) |
high | geschützte Funktionen benutzen (z.B. Code ausführen) |
high | Datenverarbeitung blockieren (Denial of Service) |
In einer guten Sicherheitsüberprüfung wird mit intelligentem Fuzzing gearbeitet. Dies erfordert aber viel Verständnis für die eingesetzten Technologien. Das simple Abstützen auf irgendwelche Vulnerability Scanner gewährleistet nicht, dass derlei Tests mitberücksichtigt werden. Gerade wenn individuelle Software-Lösungen zum Tragen kommen, muss ein zielgerichtetes Fuzzing angestrebt werden.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!