Parasoft

Fehlerfreier Code, sichere Anwendung

6. Oktober 2022, 8:53 Uhr | Arthur Hicken
Parasoft - Fehlerfreier Code, sichere Anwendung
© Gorodenkoff / stock.adobe.com

Statische Analyse ermöglicht es Software-Entwicklern, die Codequalität von Anfang an hochzuhalten. Das frühzeitige und häufige Prüfen auf Fehler und deren Behebung reduziert den Arbeitsaufwand und hilft dabei, Software-Schwachstellen zu vermeiden.

Es ist verlockend, bei der Software-Entwicklung in die übliche Falle zu tappen: Man prüft die Qualität in der Regel am Ende einfach in das Softwareprojekt hinein, anstatt von vornherein bessere Software zu entwickeln. Dieser Ansatz der Qualitätskontrolle stützt sich auf Unit- oder Funktionstests. Man sollte unbedingt der Versuchung widerstehen, so vorzugehen. Eingebaute Qualität kann auch von Anfang an Teil der Software sein. Die einfachste und effektivste Maßnahme ist hierbei der Einsatz der statischen Analyse: Sie hilft Software-Ingenieuren Fehler zu vermeiden, den Code zu härten und gleichzeitig die Anwendungslieferung zu beschleunigen.

Was ist statische Code-Analyse?

Die statische Code-Analyse oder einfach statische Analyse ist eine Softwaretestaktivität in der Software-Entwicklung. Dabei wird der Quellcode auf Konstrukte untersucht, von denen eine Verbindung mit Softwarefehlern oder Sicherheitsschwachstellen bekannt ist. Bei Entdeckung eines Konstrukts mit hohem Risiko meldet das statische Analysetool einen Verstoß, den der Entwickler anzeigen und beheben kann.

Es gibt einige Hauptarten der statischen Analyse – jede mit ihren eigenen Stärken und Schwächen:

  • Musterbasierte statische Analyse: In seiner einfachsten Form scannt ein statisches Analysewerkzeug den Quellcode und prüft ihn anhand einer oder mehrerer Regelwerke. Ingenieure machen beispielsweise manchmal den Fehler, die Zeichenfolge „\0“ zu verwenden, obwohl eigentlich das Null-Zeichen ‚\0‘ gemeint ist. Dieser Fehler kann zu einer Beschädigung des Speichers führen, das Programm zum Absturz bringen oder ähnlich folgenschwere Probleme mit sich bringen. Ein statisches Analysetool sucht nach diesen Mustern im Code und meldet sie als mögliche Fehler. Diese Art der statischen Analyse nennt sich musterbasierte statische Analyse. Bei einigen Mustern handelt es sich um einfache Syntaxprüfungen, ähnlich wie bei einer Rechtschreibprüfung beim Tippen. Andere können sehr viel ausgefeilter sein und komplette Muster mit subtilen Problemen analysieren und erkennen. Bei dieser statischen Analyse kommt es fast nie zu falsch-positiven Ergebnissen. Moderne Software-Entwicklungsstandards wie MISRA (Motor Industry Software Reliability Association) und JSF (Joint Strike Fighter) basieren auf der Idee, dass bestimmte Konstrukte in sicherheitskritischem Code vermieden werden sollten, da der Code in solchen Systemen Probleme verursachen kann.
  • Fluss-Analyse: Die Fluss-Analyse, manchmal auch Kontrollfluss- oder Datenfluss-Analyse genannt, verfolgt einen etwas anderen Ansatz, indem sie problematische Konstruktionen anhand einer Reihe von Regeln überprüft. Dabei simuliert sie Entscheidungspfade, um tiefer in die Anwendung einzudringen und schwer aufzufindende Fehler aufzuspüren. Diese Fehler können beispielsweise Nullzeiger-Dereferenzen, Pufferüberläufe und Sicherheitsmängel wie manipulierte Daten sein. Die Fluss-Analyse kann echte Fehler finden, beinhaltet allerdings eine gewisse Anzahl falsch-positiver Ergebnisse.
  • Zusätzliche Analysetypen: Weitere Arten der statischen Analyse verfolgen jeweils unterschiedliche Ziele. So messen Metrik-Analysetools beispielsweise Code-Merkmale wie Code-Zeilen und Komplexität. Tools zur Abdeckungsanalyse führen Unit- und Anwendungstests für ein besseres Verständnis der Art des Tests durch. Der gemeinsame Einsatz dieser Analysen als Teil eines automatisierten Entwicklungstestprozesses verschafft einen wichtigen Einblick in die Sicherheit und Zuverlässigkeit der Anwendung.

Risiken einer nicht-durchgeführten statischen Analyse

Anbieter zum Thema

zu Matchmaker+
Parasoft - Fehlerfreier Code, sichere Anwendung
Ungleichgewicht zwischen Sicherheitsrisiko und Sicherheitsausgaben.
© Parasoft

Der Umfang einer Software wird immer komplexer. So kann ein durchschnittliches Auto heute über 1.000 Code-ausführende MCUs und bis zu 100 Millionen Codezeilen enthalten. Eine so große elektronische Oberfläche, insbesondere bei sicherheitskritischen Anwendungen wie in der Automobilindustrie, in medizinischen Geräten oder in der Luftfahrt, erfordert einen rigorosen technischen Ansatz für die Erhaltung eines fehlerfreien Codes.

Organisationen wie OWASP, CERT und MITRE haben sich der Erforschung und Veröffentlichung von Best Practices für die Programmierung verschrieben. Sie unterstützen so Softwareingenieure bei der erfolgreichen Durchführung ihrer Software-Projekte. Darüber hinaus gibt es branchenspezifische Standardisierungsorganisationen, die Best Practices veröffentlichen, welche von vielen Regulierungsbehörden verlangt werden. Beispielsweise von MISRA, die sich auf Software-Systeme für die Automobilindustrie spezialisiert hat. Die Best Practices können in Tools für die statische Analyse als Regeln kodifiziert und dann als Teil der Unternehmensrichtlinien eingebaut werden, welche die Entwickler befolgen müssen.

Der Einsatz eines statischen Analysetools, das diese Programmierstandards implementieren und gleichzeitig in den Entwicklungsprozess integriert werden kann, ist wichtig. Wer seine Arbeit nicht mit mindestens einem statischen Analysewerkzeug überprüft, erhöht das wirtschaftliche Risiko bei der Freigabe oder Bereitstellung der Anwendungen erheblich. Fehler können zu einem angreifbaren Code führen, über den böswillige Hacker beispielsweise das System zum Absturz bringen oder sensible Daten offenlegen können. Bei sicherheitskritischer Software sind die Folgen von Software-Schwachstellen unter Umständen noch weitaus gravierender.


  1. Fehlerfreier Code, sichere Anwendung
  2. Vorteile der automatisierten statischen Analyse

Das könnte Sie auch interessieren

Verwandte Artikel

Parasoft, Parasoft Corp.

Safety & Security