Security by Design

Erfolgsrezepte für eine sichere Software: Bereits am Anfang daran denken

Erfolgsrezepte für eine sichere Software: Bereits am Anfang daran denken

Sicherheitsaspekte bei der Softwareentwicklung

Von Dmitry Nikolaenya, Leiter der SIEM-Abteilung bei ScienceSoft

Es wird oft erwartet, dass am Ende des Entwicklungsprozesses eine sichere Software produziert werden muss. Ein vernünftiges Argument dazu: den Anbietern der individuellen Softwareentwicklung steht doch eine Vielzahl von Best Practices zur Verfügung, die dabei unterstützen, die Sicherheit als unerlässlichen Bestandteil in den gesamten Entwicklungslebenszyklus zu integrieren. Aber es gibt ein Problem: diese Empfehlungen werden entweder vernachlässigt oder zum falschen Zeitpunkt eingesetzt. Das kann verheerende Auswirkungen auf die Softwarequalität haben und einen wesentlichen finanziellen Schaden sowohl für Unternehmen (wie Ausfall von geschäftskritischen Apps), als auch für Anwender (wie Diebstahl von vertraulichen Daten) verursachen.

Erfahrungsgemäß ist es sinnvoll, in die Security von Anfang an zu investieren und Sicherheitsaspekte in jeder Phase der Softwareentwicklung zu berücksichtigen, um schwerwiegende Sicherheitslücken zu verhindern und zusätzliche Kosten für derer Behebung zu vermeiden.

Sicherheitsmaßnahmen: Beispiele für jede Phase

Seien wir ehrlich: es ist kaum realisierbar, eine hundertprozentige Sicherheit zu erreichen. Das Ziel besteht darin, das maximal höchste Sicherheitsniveau zu gewährleisten. Zu diesem Zweck kommt das Konzept "Security by Design" zur Hilfe. Dieser Begriff bedeutet, dass Sicherheitsaspekte während des gesamten Software-Lebenszyklus – von der Idee bis zur Inbetriebnahme – beachtet werden. Dafür werden notwendige Sicherheitsmaßnahmen ganz am Anfang definiert und in den Entwicklungsprozess integriert.

Planungsphase

Die Planung von Sicherheitsmaßnahmen wird in die gesamte Projektplanung einbezogen. Es geht um die Analyse und den Entwurf von funktionellen und nicht-funktionellen Sicherheitsanforderungen. In dieser Phase werden auch Sicherheitsrisiken bewertet und Anwendungs- und Missbrauchsfälle erstellt, um zu erkennen, welche Bedrohungen potentiell entstehen können und welche sicherheitsrelevanten Aktivitäten durchgeführt werden müssen.

Designphase

Es gibt unterschiedliche etablierte Designprinzipien, die eingesetzt werden, um eine sichere Software zu erstellen, beispielweise Least Privilege (Beschränkung von Berechtigungen); vollständige Zugriffsüberwachung (Zugriff je nach Berechtigung); benutzerfreundliche Sicherheitsmechanismen, sicherer Ausfall (durch Standardeinstellungen die Software in einen sicheren Zustand bringen) und mehr. Diese dürfen auf keinen Fall vernachlässigt werden, weil sie die Grundlage für die sichere Entwicklung bilden.

Entwicklungs- und Testphase

In der Entwicklungsphase werden alle sicherheitsrelevanten getroffenen Entscheidungen umgesetzt. Um die Einhaltung sowie Effektivität aller festgelegten Sicherheitsanforderungen zu gewährleisten, wird es auch kontrolliert und überprüft, ob alle geplanten Maßnahmen ergriffen worden sind und wie wirksam sie sind. Zu solchen Maßnahmen werden beispielweise Sicherheitstests, Code- und Design-Reviews, Pentests, automatisierte Tests, Statistische Code Scanner gezählt. Einige davon werden während des gesamten Entwicklungsprozesses eingesetzt (z. B. Codeanalyse). Andere kommen ins Spiel in der Regel am Ende des Entwicklungsprozesses (z. B. Pentests). Kurz vor der Auslieferung kommt das abschließende Testen. Falls unerfüllte Anforderungen oder Sicherheitslücken gefunden werden, müssen diese dokumentiert und behoben werden. Falls sich Ergebnisse als positiv erweisen, wird es freigegeben, die Software zu veröffentlichen und auszuliefern.

Auslieferung und Wartung

Diese Phasen umfassen mehrere Aktivitäten und Mechanismen, die darauf abgezielt sind, Software sicher auszuliefern, einzurichten und zu betreiben: sicherheitsrelevant mit Problemen umzugehen; Änderungen an der Software zu überwachen und zu verwalten; angemessen und möglichst schnell auf ungeplante Sicherheitsvorfälle zu reagieren; für diese Phasen geplante Sicherheitsmaßnahmen zu ergreifen und mehr.

Fazit

Zweifellos ermöglichen die aufgelisteten Sicherheitsmaßnahmen, das Schutzniveau und die Qualität der Software zu verbessern. Aber es reicht nicht aus, einfach diese einzusetzen. Ein mangelndes Sicherheitsbewusstsein kann wie ein Stolperstein bei der Umsetzung des Sicherheitskonzeptes sein. Um ein angemessenes Bewusstsein bei allen Mitarbeitern zu bilden und die Sicherheitskultur aufzubauen, ist es empfehlenswert, Schulungen zu Sicherheitsthemen durchzuführen und sicherheitsrelevante Prozesse zu etablieren.