28.11.2007, 08:19 Uhr

Klarer sehen mit Quelltext-Analysen

Welche Möglichkeiten bietet eigentlich eine Source Code Analyse?
5607.jpg
Source Code Analysen werden komplementär zum Vulnerability Scanning im Netzwerk eingesetzt.
Marc Ruef ist Buchautor und Security Consultant beim Sicherheitsunternehmen scip in Zürich. www.scip.ch
Security-Überprüfungen können aus verschiedenen Perspektiven und mit unterschiedlichen Herangehensweisen durchgeführt werden. Eine im professionellen Umfeld zunehmend als besonders wichtig verstandene Methode ist die «Source Code Analyse». Bei dieser wird der Quelltext eines Programms untersucht, bevor dieses kompiliert und ausgeführt wird.
Grundsätzlich handelt es sich hierbei um ein erweitertes Vier-Augen-Prinzip, welches innerhalb des üblichen Life-cycle 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 aufzudecken.
Klassisches Vulnerability Scanning im Netzwerk versucht, die Fehlbarkeit eines Dienstes im laufenden Betrieb zu erkennen. Der Nachteil dabei ist die entsprechende «Blackbox»-Herangehensweise. Denn bei der externen Prüfung können keine akkuraten Aussagen über die internen Zustände des Zielobjekts gemacht werden. Ob aber 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 hingegen blickt hier auch hinter die Kulissen, weil sie den Programmfluss und die Datenverwaltung detailliert studiert. Es sind keine langwierigen und ineffizienten Fuzzing- und Bruteforce-Methoden nötig. Vielmehr lassen sich in akademischer Weise sehr genaue Aussagen über den -Aufbau und die Funktionsweise der untersuchten Anwendung machen.
Die einfachste Variante einer solchen Prüfung besteht im Suchen potenziell gefährlicher 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 zudem auch die logische Struktur und den linearen Ablauf des Programms. So wird versucht, Überläufe bei Inkrementierungen oder sich widersprechende Conditionals (beispielsweise «in if»-Verzweigungen) auszumachen. Dies ist aber nur bedingt mit automatisierten Mitteln durchführbar. Eine qualitativ hochwertige Quelltext-Analyse erfordert daher sehr viel Verständnis für die Funktionsweise der eingesetzten Programmiersprache.
Dennoch wird die Quelltext-analyse vermehrt in komplementärer Weise zum traditionellen Vulnerability Scanning und Penetration Testing im Netzwerk eingesetzt. Durch das zusätzliche Untersuchen des Quelltexts können frühzeitig potenzielle Angriffsvektoren ausgemacht werden - bevor deren effektive Tragweite im laufenden Betrieb mittels Proof-of-Concept bewiesen wird. Zudem 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 die vielschichtige Betrachtung steigern.
Zusätzlich zur Source Code Analyse kann eine «Binary-Analyse» erfolgen. Dieser klassische Prozess des Rever-se Engineerings untersucht die kompilierte Fassung des Programms. Auch hier werden Programmabläufe und Datenverarbeitungen studiert. Die höhere Komplexität dieser Methode verspricht zusätzliche Genauigkeit, da sich die effektiven Zustände des Prozessors exakt erkennen lassen.
Marc Ruef



Das könnte Sie auch interessieren