Statische Code-Analyse

Die statische Code-Analyse, auch bekannt als Quellcodeanalyse, wird in der Regel im Rahmen einer Code-Überprüfung durchgeführt und findet in der Implementierungsphase eines Security Development Lifecycle (SDL) statt.

Definition und Erklärung

Was ist eine statische Code-Analyse?

Die statische Code-Analyse bezieht sich üblicherweise auf den Einsatz von Tools, die versuchen, mögliche Schwachstellen im "statischen" nicht laufenden Quellcode zu erkennen. Diese Methode stellt einen White-Box-Test dar.

Grundsätzlich unterscheidet man zwischen dynamischen und statischen Testverfahren. Bei dynamischen Testverfahren, wie das Dynamic Application Security Testing (DAST), wird die Funktionalität unter Ausführung von Code getestet. In diese Kategorie fall­en beispielsweise Unit-, Pen- und Funktionstests. In die Kategorie der statischen Testverfahren dagegen fall­en beispielsweise manuelle Reviews und die statis­che Code-Analyse. Statisch heißt dabei, dass das Programm nicht ausgeführt wird, sondern die Prüfung nur anhand des Quelltextes stattfindet.

code-analyse

Branchen

Techniken

Code-Analyse-Module

Es gibt verschiedene Techniken, um statischen Quellcode auf potenzielle Schwachstellen zu analysieren, die möglicherweise zu einer Lösung kombiniert werden. Diese Techniken werden oft von Compiler-Technologien abgeleitet.

    Datenflussanalyse

    Die Datenflussanalyse wird verwendet, um Laufzeit-(dynamische) Informationen über Daten in der Software zu sammeln, während sie sich in einem statischen Zustand befinden. Es gibt drei gängige Begriffe, die in der Datenflussanalyse verwendet werden: Grundkonstruktion (der Code), Kontrollflussanalyse (der Datenfluss) und Kontrollfluss-Weg (der Pfad, den die Daten nehmen): Bei der Datenflussanalyse wird der Zustand einer Variablen entlang eines Pfades betrachtet. Dazu wird zunächst ein Graph des Programms (bzw. einer Funktion) gebildet, der sämtliche Pfade beinhaltet. Anschließend wird festgehalten, welche Aktionen ent­lang jedes Pfades mit dieser Variablen durchgeführt werden. Dabei kann man zwischen vier verschiedenen Aktionen unterscheiden. Die ersten Muster müssen nicht zwangsweise Fehler sein, sondern können auch Absicht gewesen sein.

    Kontrollflussdiagramm

    Bei der Kontrollflussanalyse wird der Programmablauf analysiert. Dabei werden beispielsweise Codefragmente gefunden, die in der Programmausführung niemals erreicht werden können. Oftmals erkennen bereits Compiler solche Fehler (zum Beispiel der Java-Compiler javac). Solcher Code führt nicht zwangsläufig zu Fehlern. Jedoch ist mit hoher Wahrscheinlichkeit dann davon auszugehen, dass der Programmierer dieses Fragments einen anderen Programmablauf beabsichtigt hatte.

    Taint Analyse

    Die Taint Analyse versucht, Variablen zu identifizieren, die mit benutzerdefinierten Eingaben "verunreinigt" wurden, und verfolgt sie zu möglichen verwundbaren Funktionen, die auch als "Senke" bezeichnet werden. Wenn die Variable an eine Senke übergeben wird, ohne vorher “gereinigt” zu werden, wird sie als Schwachstelle gekennzeichnet.

    Syntaxanalyse

    Bei der Syntaxanalyse, oft auch lexikalische Analyse genannt, wird der Quellcode gegen Syntax- und Grammatik-Regeln geprüft. Tools, die eine Syntaxanalyse durchführen, sind Compiler und Inter­preter. Die Syntaxanalyse findet dabei bei jedem Compiler-Durchlauf statt. Wird ein Fehler entdeckt, so wird eine Fehlermeldung erzeugt und der Compiliervorgang wird abgebrochen. Bei der Stilanalyse kommen Regelwerke zum Einsatz, die den Programmierstil betreffen. Zum einen können dies beispielsweise firmeninterne Coding-Style-Guides sein. Dadurch wird der Code innerhalb einer Firma einheitlich gehalten und ist somit einfacher zu lesen bzw. zu warten. Zum anderen können es aber auch Programmiersprachen-spezifische Richtlinien sein. Ziel dieser Richtlinien ist es, unsichere Programmierkonstrukte zu vermeiden. In vielen sicherheitskritischen Bereichen von Software in eingebetteten Systemen ist die Einhaltung solcher Standards sogar vorgeschrieben.

Aktuelle Informationen

Aktuelle Blog-Artikel

Unsere Mitarbeiter veröffentlichen regelmäßig Artikel zum Thema IT-Security

Kontakt

Neugierig? Überzeugt? Interessiert?

Vereinbaren Sie ein unverbindliches Erstgespräch mit einem unserer Vertriebsmitarbeiter. Nutzen Sie den folgenden Link, um einen Termin auszuwählen: