Konkrete Kritik an CVSS4
Marc Ruef
Sicherheitsüberprüfungen können aus verschiedenen Perspektiven und mit den unterschiedlichsten Herangehensweisen durchgeführt werden. Eine im professionellen Umfeld zunehmends als besonders wichtig verstandene Methode besteht in der sogenannten Source Code Analyse. Bei dieser wird der Quelltext eines Programms, bevor es denn kompiliert und ausgeführt wird, untersucht.
Grundsätzlich handelt es sich hierbei um ein erweitertes Vier-Augen-Prinzip, welches innerhalb des üblichen Lifezycle einer Applikation zur Qualitätssicherung eingebracht wird: Der Auditor begutachtet aus dem Blickwinkel des Programmierers die Anwendung, um etwaige Fehler oder Unschönheiten möglichst früh auszumachen.
Klassisches Vulnerability Scanning im Netzwerk versucht die Fehlbarkeit eines Dienstes im laufenden Betrieb zu erkennen. Der Nachteil besteht in der entsprechenden Blackbox-Herangehensweise, denn bei der externen Prüfung können keine akkuraten Aussagen über die internen Zustände des Zielobjekts gemacht werden. Ob nun durch eine vermeintlich korrupte Eingabe das interne Verhalten der Anwendung manipuliert werden konnte, lässt sich nur bestimmen, wenn die Auswirkungen davon über das Netzwerk unmittelbar sichtbar sind. Gerade bei komplexen Attacken ist dies jedoch nicht zwingend der Fall.
Die Quelltext-Analyse blickt hier also von vornherein hinter die Kulissen. Genauestens wird der Programmsfluss und die Datenverwaltung studiert. Es müssen nicht mehr auf langwierige und ineffiziente Fuzzing- und Bruteforce-Methoden gesetzt werden. In akademischer Weise lässt sich eine sehr genaue Aussage über den Aufbau und die Funktionsweise der untersuchten Anwendung machen.
Die einfachste Variante einer solchen Prüfung besteht im Suchen von potentiell gefährlichen Funktionen. Bei C-Programmen zum Beispiel strcpy(), welches typischerweise gegen Pufferüberlauf-Attacken verwundbar ist. Oder printf(), welches Format String-Schwachstellen mitbringt. Es können aber auch sprachunabhängige Funktionen zur Diskussion stehen. Zum Beispiel jeglicher SQL-Zugriff, da er eine SQL-Injection initiieren lassen könnte. Oder eine allgemeine Ausgabe in einer Webapplikation, welche für Cross Site Scripting herhalten könnte.
Wirklich intensive Quelltext-Analysen untersuchen jedoch ebenfalls die logische Struktur und den linearen Ablauf des Programms. So werden Überläufe bei Inkrementierungen oder sich widersprechende Conditionals (z.B. in if-Verzweigungen) auszumachen versucht. Dies ist nur bedingt mit automatisierten Mitteln durchzuführen. Eine qualitativ hochwerte Quelltext-Analyse erfordert also schlussendlich sehr viel Verständnis für die Funktionsweise der eingesetzten Sprache.
Diese Technik wird je länger je mehr in komplementärer Weise zum traditionellen Vulnerability Scanning und Penetration Testing im Netzwerk eingesetzt. Durch das zusätzliche Untersuchen des Quelltexts lassen sich frühzeitig etwaige Angriffsvektoren ausmachen, bevor die effektive Tragweite derer im laufenden Betrieb mittels Proof-of-Concept bewiesen wird. Oder es können nachträglich etwaige Schwächen, die bei einem Audit über das Netzwerk eruiert wurden, als solche verifiziert werden. Die Qualität der Gesamtprüfung lässt sich durch diese vielschichtige Betrachtung vervielfachen.
Zusätzlich zur Source Code Analyse kann übrigens eine sogenannte Binary-Analyse erfolgen. Bei diesem klassischen Prozess des Reverse Engineerings wird die kompilierte Fassung des Programms untersucht. Auch hier sollen Programmabläufe und Datenverarbeitungen studiert werden. Die höhere Komplexität dieser Methode verspricht ein zusätzliches Mass an Genauigkeit, da sich hier die effektiven Zustände des Prozessors exakt erkennen lassen.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!