Source Code Analyse - Vorgehen und Möglichkeiten

Source Code Analyse

Vorgehen und Möglichkeiten

Marc Ruef
by Marc Ruef
time to read: 3 minutes

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.

About the Author

Marc Ruef

Marc Ruef has been working in information security since the late 1990s. He is well-known for his many publications and books. The last one called The Art of Penetration Testing is discussing security testing in detail. He is a lecturer at several faculties, like ETH, HWZ, HSLU and IKF. (ORCID 0000-0002-1328-6357)

Are you interested in a Penetration Test?

Our experts will get in contact with you!

×
Specific Criticism of CVSS4

Specific Criticism of CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentication

Voice Authentication

Marc Ruef

Bug Bounty

Bug Bounty

Marc Ruef

You want more?

Further articles available here

You need support in such a project?

Our experts will get in contact with you!

You want more?

Further articles available here