Werbung

  • Thesenpapier GrammaTech, Februar 2017

Die Rolle der statischen Analyse im Entwicklungszyklus sicherer Software

Die statische Analyse ist ein wichtiger Teil einer modernen Tool Suite für die Softwareentwicklung. Hinreichend früh und korrekt eingesetzt, kann sie sich entscheidend auf die Qualität und Sicherheit (im Sinne von Safety und Security) des Codes auswirken. Am wichtigsten ist sie wohl in einem Softwaredesign, in dem der Security-Aspekt an erster Stelle steht (‚Security-First‘-Design). Auf alle Fälle ist sie für die heutigen, vernetzten und komplexen Einsatzumgebungen von entscheidender Bedeutung.

Das Konzept des ‚Security-First‘-Designs
Das ‚Security-First‘-Design bindet das Thema Security mit höchster Priorität in den Software Development Lifecycle (SDLC) ein. Um dieses Konzept umzusetzen, sollten Entwickler und Projektleiter als Minimum die folgenden Aktivitäten beim Durchlaufen der fünf entscheidenden Phasen dieses Zyklus erwarten, sh. Bild 1.

Definition der Anforderungen: In der Anforderungsphase können Security-spezifische Anforderungen eingebracht werden, gemeinsam mit ‚Missbrauchsfällen‘ (die Angreifer wahrscheinlich nutzen dürften) und einer Risikoanalyse.
Design und Architektur: Bei der Beurteilung in Frage kommender Architekturen müssen zuvor möglicherweise nicht berücksichtigte Security-Aspekte einbezogen werden. In dieser Phase sollte man Prüfpläne erstellen, welche die Security-Analysen auf Basis der erwarteten ‚Missbrauchsfälle‘ beinhalten.
Codeentwicklung: Während der Programmierphase kommt es ganz entscheidend auf die Einhaltung der Security-Richtlinien und Programmierstandards an. Die Anwendung von Automatisierungs-Tools wie der statischen Analyse trägt hier entscheidend zur Sicherstellung bei, dass sich keine Schwachstellen in das Produkt einschleichen.
Integration und Test: Nimmt das System als Ganzes Form an, können mit Tests sowohl der Subsysteme als auch des gesamten Systems Schwachstellen noch vor der Integration und Markteinführung des Produkts aufgedeckt werden.
Einsatz und Wartung: Ist ein Produkt auf den Markt gekommen und hat große Verbreitung erlangt, steigen die Kosten zur Beseitigung von Schwachstellen exponentiell an. Trotz Wartung und Überarbeitung eines Produkts bleibt das Thema Security stets relevant, denn neue Schwachstellen und Bedrohungen müssen auf iterative Weise in das System zurückgeführt werden.

Mehr Sicherheit durch statische Analysetools
Entscheidende Unterstützung in der Codierungs- und Integrationsphase der Entwicklung bieten statische Analysetools wie CodeSonar. Die Sicherstellung der Codequalität während der Entwicklungs- und Wartungsphase reduziert die Kosten und Risiken enorm, die aus Security- und Zuverlässigkeitsproblemen in der Software resultieren. Zu den Vorteilen zählen:
Dauerhafte Qualität und Sicherheit des Quellcodes:
Auffinden und Analyse von Tainted Data (‚verdorbene Daten‘)
Überprüfung der Qualität und Sicherheit von externem Code
Einhaltung von Normen für sicheres Programmieren

Dynamische und statische Analyse im Kontext des SDLC – ein Vergleich
Dynamic Application Security Testing (DAST)
: Dynamische Testwerkzeuge produzieren nur über das Ausführen des Programms aussagefähige Ergebnisse. Beispiele sind Tools für Modultests, Test-Coverage-Tools, Speicher-Analyzer und Penetration-Test-Tools. Testautomatisierungs-Tools sind wichtig, um das mit Tests einhergehende Arbeitsaufkommen der Entwicklungsteams zu verringern und – was noch wichtiger ist – Schwachstellen zu detektieren, die von manuellen Tests übersehen werden könnten.

Static Application Security Testing (SAST): Statische Analysetools untersuchen Quellcode, Bytecode (z. B. kompilierten Java-Code) und ausführbaren Binärcode. Bei der statischen Analyse wird der Code nicht ausgeführt, sondern die Analyse erfolgt, indem Schlussfolgerungen über das potenzielle Verhalten des Codes gezogen werden. Anders als die dynamische Analyse kann die statische Analyse einen Codebestand sehr effizient auswerten. Diese Tools untersuchen auch Codepfade, die mit anderen Methoden ungeprüft bleiben, und können Verarbeitungs- und Datenpfade durch den Code verfolgen. Weil sie sich frühzeitig in die Entwicklungsphase einbinden lassen, ermöglichen sie die Analyse von bestehendem, älterem und von Dritten zugeliefertem Quell- und Binärcode, bevor dieser Eingang in das Produkt findet. Beim Hinzufügen von weiterem Quellcode kann die inkrementelle Analyse zusammen mit dem Konfigurationsmanagement die Qualität und Sicherheit umfassend gewährleisten. Bild 2 zeigt, welche Arten von Test-Tools über die Produktentwicklung hinaus bis in die Wartung hinein zur Anwendung kommen.

Jede Art von Tools trägt zur Produktivität, Sicherheit und Qualität bei, aber keine Tool-Kategorie allein ist eine Wunderwaffe. Darum ist der beste Ansatz eine Kombination aus mehreren Werkzeugen aus allen Kategorien, die auf einem risikobasierten Grundprinzip aufsetzt, um ein hohes Sicherheitsniveau ohne Budgetüberschreitung zu erzielen.

Autor: Bill Graham, GrammaTech, Inc.

© GrammaTech, Inc.

Vorheriger Beitrag Nächster Beitrag