Statische Quellcode Analyse

Software-Sicherheit: Identifikation von derzeit unbekannten Sicherheitslücken in Software mithilfe von Static Code Analysis-Software in der Designphase der Softwareentwicklung

Statische Quellcode Analyse

Ab der Implementierungsphase wird der Quellcode der Zielsoftware auf Übereinstimmung mit formalen Methoden überprüft und auf Einhaltung der syntaktischen Konventionen der Programmiersprache sowie der Programmierregeln getestet. Dieses Verfahren ist mit einem Parser vergleichbar, der eine lexikalische, syntaktische und semantische Analyse des Programmiercodes durchführt.

In der Regel erfordert jeder Fehler eine manuelle Überprüfung gemäß den lexikalischen Regeln der verwendeten Programmiersprache und ihrer semantischen Zugehörigkeiten, um falsch-positive Ergebnisse auszuschließen und relevante Strategien zur Fehlerbehebung zu entwickeln. Daher hängen die Qualität und Quantität der Analyseergebnisse maßgeblich von der Auswahl geeigneter Werkzeuge ab.

Angewandtes Verfahren / Methode

Die Statische Quellcodeanalyse (Code Review, Statische Quellcodeanalyse) ist entweder eine toolbasierte und automatisierte oder eine halbautomatisierte Technik; die von den Tools erzeugten Ergebnisse werden gesammelt und „manuell“ bewertet. Der Quellcode der Zielsoftware wird ohne Ausführung analysiert (White Box). Die folgende Grafik stellt den systematischen Prozess der Statischen Quellcodeanalyse dar.

Verwendete Werkzeugtypen

Ein Mann, der einen Computer benutzt
  • Style-Checking-Werkzeuge werden verwendet, um den Quellcode auf die Einhaltung der Programmierregeln zu testen. Diese einfachen Werkzeuge erkennen in der Regel keine Sicherheitslücken, die für die Entstehung von Softwarefehlern verantwortlich sind.
  • Semantische Analysewerkzeuge ergänzen den Syntaxbaum des Compilers mit zusätzlichen Informationen, die auf statisch identifizierbare Fehler durch Anwendung verschiedener Regeln überprüft werden. Typische Fehler umfassen: Datentyp-Probleme, nicht initialisierte Variablen und ungenutzte Methoden.
  • Deep Flow Static Analysis ist die effektivste Art von Werkzeug: Die semantische Analyse wird durch die Generierung eines „Control Flow Graph“ und die Durchführung einer Datenflussanalyse ergänzt, die es ermöglicht, komplexe Fehler zu identifizieren, die auf Faktoren wie Race Conditions, Deadlocks oder falsche Zeigerverwaltung basieren.