Static Code Analysis

Security Testing
Software-Sicherheit: Identifizierung bisher nicht erkannter Sicherheitslücken in Standard- und Individualsoftware mit Static Code Analysis
Ab 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.

Security Testing
Aufgrund lexikalischer Regeln der verwendeten Programmiersprache und den 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 ab.
Verfahren
Static Code Analysis (Code Review, statische Source Code Analyse) wird Tool-gestützt automatisiert bzw. semi-automatisiert durchgeführt, die Befunde der Tools werden gesammelt und „manuell“ ausgewertet. Analysiert wird der Quellcode (Whitebox) der Zielsoftware ohne ihn auszuführen. Der systematische Ablauf der Static Code Analysis ist in der Abbildung grafisch dargestellt.

Im Bereich Static Code Analysis werden drei Tool-Klassen unterschieden:
•    Style Checking Tools verifizieren den Source-Code bezüglich der Einhaltung syntaktischer Programmier-Richtlinien. Diese einfachen Tools finden meist 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 Toolklasse: 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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s