Source Code Analyse - Vorgehen und Möglichkeiten

Source Code Analyse

Vorgehen und Möglichkeiten

Marc Ruef
von Marc Ruef
Lesezeit: 3 Minuten

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.

Über den Autor

Marc Ruef

Marc Ruef ist seit Ende der 1990er Jahre im Cybersecurity-Bereich aktiv. Er hat vor allem im deutschsprachigen Raum aufgrund der Vielzahl durch ihn veröffentlichten Fachpublikationen und Bücher – dazu gehört besonders Die Kunst des Penetration Testing – Bekanntheit erlangt. Er ist Dozent an verschiedenen Fakultäten, darunter ETH, HWZ, HSLU und IKF. (ORCID 0000-0002-1328-6357)

Haben Sie Interesse an einem Penetration Test?

Unsere Spezialisten kontaktieren Sie gern!

×
Konkrete Kritik an CVSS4

Konkrete Kritik an CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentisierung

Voice Authentisierung

Marc Ruef

Bug-Bounty

Bug-Bounty

Marc Ruef

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv