Vereinbaren Sie ein unverbindliches Erstgespräch!

Vereinbaren Sie ganz einfach online einen Termin für ein unverbindliches und kostenloses Erstgespräch mit einem unserer Mitarbeiter.

Gespräch vereinbaren

Statische Code-Analyse

Die statische Codeanalyse, 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. Die statische Codeanalyse bezieht sich üblicherweise auf den Einsatz von Tools zur statischen Codeanalyse, 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 wird die Funktionalität unter Ausführung von Code getestet. In diese Kategorie fall­en beispielsweise Unit- und Funktionstests. In die Kategorie der statischen Testverfahren dagegen fall­en beispielsweise manuelle Reviews und die statis­che Codeanalyse. Statisch heißt dabei, dass das Programm nicht ausgeführt wird, sondern die Prüfung nur anhand des Quelltextes stattfindet.

In der Entwicklungsumgebung


Im Idealfall finden solche Tools automatisch Sicherheitsmängel mit einem hohen Maß an Vertrauen, dass das, was gefunden wird, tatsächlich ein Fehler ist. Dies übersteigt jedoch den Stand der Technik für viele Arten von Sicherheitslücken in der Anwendung. Daher dienen solche Tools häufig als Hilfsmittel für einen Analysten, um ihnen zu helfen, sicherheitsrelevante Codeteile zu finden, damit sie Fehler effizienter finden können, als ein Tool, das Fehler einfach automatisch findet. Einige Tools beginnen, sich in die Integrierte Entwicklungsumgebung (IDE) zu integrieren. Für die Arten von Problemen, die während der Software-Entwicklungsphase selbst erkannt werden können, ist dies eine leistungsstarke Phase innerhalb des Entwicklungslebenszyklus, um solche Tools einzusetzen, da sie dem Entwickler sofortiges Feedback zu Problemen gibt, die er während der Code-Entwicklung selbst in den Code einbringen könnte. Dieses unmittelbare Feedback ist sehr nützlich, wenn man Schwachstellen viel später im Entwicklungszyklus findet.

Techniken


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 Compiliervor- gang 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 ein- er 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.

Neugierig? Überzeugt? Interessiert?

Fordern Sie noch heute einen Beispielbericht oder unser Leistungsportfolio an. Wir bearten Sie gerne!

Wir haben Ihre Nachricht erhalten. Wir werden uns in Kürze bei Ihnen melden. Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.