Statische Code-Analyse: Frühphasig Sicherheitslücken identifizieren und beheben
Mit einer statischen Code-Analyse lässt sich Quellcode bereits vor dem Kompilieren auf viele Schwachstellen untersuchen. Wie funktioniert das?

Keine Software ist frei von Fehlern. Im praktischen Einsatz treten unweigerlich Bugs, Bedienfehler und Sicherheitslücken auf, die während der Entwicklung nicht berücksichtigt wurden. Mit einer statischen Code-Analyse lässt sich Quellcode jedoch bereits vor dem Kompilieren auf zahlreiche Schwachstellen untersuchen. In diesem Artikel erläutern wir, wie das funktioniert, welche Analysetools Sie benötigen und warum eine manuelle Analyse dennoch unverzichtbar bleibt.
Was ist eine statische Code-Analyse?
Bei der statischen Code-Analyse werden Schwachstellen im Quellcode mithilfe verschiedener Techniken identifiziert. Dies geschieht im Rahmen des Code-Reviews während der Implementierungsphase -- also bevor der Code zu einem lauffähigen Programm kompiliert wird. Die statische Code-Analyse ist ein zentrales Werkzeug innerhalb eines Security Development Lifecycle. Zu diesem frühen Zeitpunkt ist die Fehlerbehebung vergleichsweise kostengünstig, da sich Anpassungen deutlich einfacher umsetzen lassen als im laufenden Betrieb.
Techniken in der statischen Code-Analyse
Bei der statischen Code-Analyse kommen verschiedene Techniken zum Einsatz. In der Praxis bündeln Tools all diese Techniken in einer Oberfläche und können so Quellcode automatisch auf eine Vielzahl von Sicherheitslücken gleichzeitig prüfen.
- Die Datenflussanalyse simuliert eine laufende Software, um daraus sicherheitsrelevante Informationen zu gewinnen.
- Bei der Taint-Analyse werden benutzergesteuerte Variablen zu Funktionen zurückverfolgt, die potenzielle Sicherheitslücken darstellen. Ein Angreifer könnte beispielsweise gezielt Daten über eine solche Variable einschleusen und sich damit Zugang zu anderen Bereichen der Anwendung verschaffen.
- Die lexikalische Analyse transformiert die Code-Syntax in Informationstokens, wodurch sie für das Tool verarbeitbar wird. Diese Tokens werden anschließend mit Entwicklungsstandards abgeglichen und gezielt variiert, um Schwachstellen aufzudecken.
Tools für die statische Code-Analyse
Für jede gängige Programmiersprache stehen Tools zur Verfügung, die verschiedene Techniken der Code-Analyse in einer Oberfläche bündeln. Theoretisch wäre eine vollautomatische statische Code-Analyse denkbar, die nicht nur die Arbeit des Sicherheitsanalysten ersetzen, sondern auch ein sehr hohes Maß an Sicherheit bieten würde. In der Praxis sind die verfügbaren Tools jedoch noch nicht in der Lage, jede Art von Sicherheitslücke in heutiger Software zu erkennen. Sie ersetzen daher nicht die manuelle Arbeit eines Analysten, unterstützen ihn aber dabei, den Code systematisch zu prüfen und Schwachstellen effizienter zu finden.
Java-Quellcode mit Spotbugs und Find Security Bugs analysieren
Mit SpotBugs untersuchen Sie den Quellcode von Java-Anwendungen. Das kostenlos erhältliche Tool prüft nach der Installation den Code auf über 400 bekannte Bugs und Sicherheitslücken.
Aufbauend auf SpotBugs wurde Find Security Bugs entwickelt, um auch Java-Web-Applikationen gezielt auf Schwachstellen zu untersuchen. Find Security Bugs ist kostenlos verfügbar und erkennt derzeit 138 verschiedene Sicherheitslücken. Darüber hinaus steht das Tool als Plug-in für alle gängigen Entwicklungsumgebungen bereit.
Mit FlawFinder C/C++-Quellcode auf Sicherheitslücken überprüfen
FlawFinder ist das Werkzeug der Wahl für die statische Analyse von C- und C++-Code. Es untersucht den Quellcode auf mögliche Sicherheitsrisiken und gibt diese priorisiert nach Risikolevel aus. FlawFinder ist in Python geschrieben und lässt sich einfach per pip installieren. Anschließend durchsucht das Tool mit einem einzigen Befehl den gesamten Quellcode-Ordner.
Syntax von PHP-Anwendungen mit dem PHP Code Sniffer überprüfen
PHP Code Sniffer ist ein kostenloses Open-Source-Skript, mit dem Sie den Code Ihrer PHP-Anwendung gegen den PEAR-Standard prüfen und Fehler automatisch korrigieren lassen können. Installation und Bedienung sind unkompliziert. PHP Code Sniffer ist mit den meisten Editoren kompatibel und lässt sich als Add-on einbinden.
Statische Code-Analyse: ein unverzichtbares Mittel für mehr Sicherheit und höhere Software-Qualität
Die statische Code-Analyse bietet Entwicklern die Möglichkeit, sicherheitsrelevante Probleme bereits vor der lauffähigen Version einer Software zu identifizieren und proaktiv zu beheben. Für jede Programmiersprache stehen Tools zur Verfügung, die den Code automatisch auf verschiedene Schwachstellen prüfen. Die Code-Analyse ist jedoch kein Allheilmittel: Sie erkennt nicht alle Sicherheitslücken, sodass die manuelle Arbeit eines Sicherheitsanalysten weiterhin unverzichtbar bleibt.