Statische Quellcode Analyse
Identifizierung bisher nicht erkannter Sicherheitslücken in Standard- und IndividualsoftwareAb der Implementierungsphase wird die Konformität des Quellcodes der Zielsoftware mit formalen Methoden auf Einhaltung syntaktischer Programmierkonventionen der Programmiersprache, sowie auf Einhaltung der Programmierrichtlinien überprüft. Dieses Verfahren ist vergleichbar mit einem Parser, der eine lexikalische, syntaktische und semantische Analyse des Programmcodes durchführt.
Aufgrund lexikalischer Regeln der verwendeten Programmiersprache und der semantischen Zugehörigkeiten benötigen die einzelnen Fehler im Allgemeinen einen manuellen Audit, um false positives auszuschließen und entsprechende Behebungsstrategien zu entwerfen. Die Qualität und Quantität des Analyse-Resultats hängt somit maßgeblich von der Auswahl geeigneter Tools und dem manuellen Audit ab.
Verfahren
Static Code Analysis (Code Review, statische Source Code Analyse) wird Tool-gestützt automatisiert und semi-automatisiert durchgeführt. Die Befunde der Tools werden gesammelt und „manuell“ ausgewertet. Analysiert wird der Quellcode (Whitebox) der Zielsoftware. Der systematische Ablauf der Static Code Analysis ist in der Abbildung grafisch dargestellt.
In den modernen Static Code Analysis Tools, die wir einsetzten, wird neben der statischen Analyse meist auch noch der Bau- und Link-Vorgang zum Erstellen der ausführbaren Datei mit betrachtet. Dadurch können weitere sonst nicht erkennbare Fehler mit berücksichtigt werden.
Im Bereich Static Code Analysis werden drei Tool-Klassen unterschieden:
- Style Checking Tools verifizieren den Source-Code bezüglich der Einhaltung syntaktischer Programmierrichtlinien. Diese einfachen Tools finden größtenteils keine Fehler, die einen Software-Defekt hervorrufen.
- Semantic Analysis Tools fügen zusätzlich semantische Informationen zum Syntaxbaum des Compilers hinzu. Diese werden mithilfe verschiedener Regeln auf statisch feststellbare Fehler verifiziert. Typische Fehler sind Datentyp-Probleme, nicht initialisierte Variablen und ungenutzte Methoden.
- Deep Flow Static Analysis ist die effektivste Tool-Klasse: Die semantische Analyse wird um eine „control-flow graph“-Generierung und eine Data Flow Analyse ergänzt. Somit ist es möglich, komplexe Fehler, die etwa auf Race Conditions, Deadlocks oder falsche Pointerverwaltung basieren, zu identifizieren.
Wollen Sie sichergehen, dass Ihre Software vor Angriffen geschützt ist, dann kontaktieren Sie uns!