Definition „Secure Software Development Life Cycle“ Wie funktioniert sichere Software-Entwicklung?
Sicherheit spielt bei Software eine wichtige Rolle und sollte daher schon von Beginn des Projekts an bedacht werden. Die nötigen Schritte können gut in die Phasen des Software Development Life Cycle integriert werden und so die Entwicklung begleiten.
Anbieter zum Thema

In der Vergangenheit wurde praktisch jede Software über lange Zeiträume entwickelt. Neue Versionen wurden vielleicht ein- oder zweimal pro Jahr veröffentlicht, vielleicht sogar nur alle paar Jahre. Entsprechend viel Zeit konnte für Tests und Sicherheitskonzepte aufgewendet werden.
Heutzutage muss es in vielen Fällen schneller gehen: Änderungen sollen den Kunden teils sogar alle paar Wochen erreichen. In der Praxis liegt der Schwerpunkt dann oft darauf, greifbare Inhalte zu liefern. Man konzentriert sich auf Funktionalität und Design, weil der Kunde diese Aspekte sehen und bewerten kann.
Raffinierte Sicherheitsmechanismen und gründliche Testszenarien hingegen erzeugen auf den ersten Blick wenig sichtbare Resultate. Stehen diese Punkte zuletzt im Entwicklungsprozess, werden sie manchmal zu stark vernachlässigt. Besonders, wenn die Release-Zyklen kurz sein sollen, fallen Aufgaben ohne greifbare Ergebnisse zuerst weg.
Es ergibt also Sinn, das Thema Sicherheit schon von Anfang an fest mit einzubeziehen und so die Aufgaben über den gesamten Zyklus zu streuen. In jeder Phase kann dadurch optimal auf die Aspekte eingegangen werden, um die es gerade geht, und kein Bereich kommt zu kurz.
Sicherheit in kleinen Schritten
Sicherheit ist wichtiger denn je in der Software-Entwicklung. Es werden laufend neue Technologien verfügbar, die ihrerseits den Weg für immer komplexere Bedrohungsszenarien ebnen. Zudem wachsen die Ansprüche an die Sicherheit, zum Beispiel durch gesetzliche Vorgaben oder die fortschreitende Digitalisierung des täglichen Lebens.
Für Software-Entwickler bedeutet das, dass Sicherheit von Beginn an ganzheitlich in jedes Projekt integriert werden sollte, um möglichst viele Szenarien abzudecken. Das kann geplant werden: Im Secure Software Development Life Cycle können in jeder Phase bestimmte Schritte stattfinden, die speziell auf die Sicherheit des Projekts abzielen.
Planung und Analyse
Das Projekt steht noch ganz am Anfang. Es wird gerade geplant, was die Software später einmal können soll und wie diese Ziele erreicht werden könnten. Jetzt ist der richtige Zeitpunkt, um Sicherheitsrichtlinien festzulegen und über mögliche Schwachstellen nachzudenken. Was sollen die Benutzer definitiv nicht können? Welche Absicht könnte ein Angreifer verfolgen und wie könnte er sein Ziel erreichen?
Im agilen Umfeld wird häufig mit User Stories gearbeitet, um die geplanten Funktionen abzubilden. Hier bietet sich die Möglichkeit, User Stories aus Sicht eines Angreifers mit in die Planung einzubinden – Evil User Stories. Sie versuchen, böswillige Absichten zu ergründen, damit später vorausschauende Gegenmaßnahmen integriert werden können.
Design
An dieser Stelle wird konkret geplant, mit welchen Mitteln die Anforderungen umgesetzt werden können. Hier geht es zum Beispiel um Layout, Architektur, Technologien und Hardware für das Projekt. Wie könnte diese oder jene Technologie angreifbar sein? Welche Sicherheitslücken sind bekannt? Welche Maßnahmen können gegen die gefundenen Risiken ergriffen werden? Welche Risiken entstehen durch die geplante Architektur und wie kann man sie vermeiden? Wie kann die Oberfläche zur Sicherheit des Systems beitragen? Wie lässt sich das System gegen Angriffe härten?
Entwicklung
Nun beginnt die technische Umsetzung der Pläne. Die Entwickler, Hardwareexperten und Oberflächendesigner implementieren nun die festgelegten Sicherheitsmaßnahmen parallel zu den regulären Anforderungen.
Schon während der Entwicklung kann durch standardisierte Maßnahmen und Werkzeuge geprüft werden, ob bestimmte Vorgaben aus dem Sicherheitskonzept eingehalten wurden. Das können automatisierte Tests, Code Reviews oder speziell die Sicherheit betreffende Tools sein (z. B. Tools, die den Code nach Funktionen durchsuchen, die laut Vorgabe als unsicher eingestuft wurden). Je nach Vorgehensweise können auch jetzt schon Tester mitwirken und somit frühzeitig auf Probleme hinweisen.
Testen
Das System wurde nach den Vorgaben entwickelt und kann nun ausführlich getestet werden. Tester prüfen, ob die festgelegten Sicherheitsrichtlinien und Maßnahmen eingehalten wurden und ob das System angreifbar ist. Wenn sie Mängel oder Sicherheitslücken finden, dokumentieren sie den Vorfall und geben ihn an die Entwicklung weiter. Bei kritischen Systemen ist es ratsam, die Integrität der Software durch externe Penetrationstests prüfen zu lassen – eventuell auch hin und wieder nach der Auslieferung.
Auslieferung und Wartung
Bevor die Software dem Kunden bereitgestellt wird, sollte eine abschließende Review aller Sicherheitsaktivitäten aus den vorhergehenden Phasen erfolgen. Falls an einer Stelle etwas vergessen wurde, kommt der Fehler nun ans Licht und kann korrigiert werden.
Nach der Auslieferung geht die Software schließlich in die Wartungsphase über. Wenn Fehler oder Schwachstellen im System festgestellt werden, müssen diese nun behoben werden. Es ist vorteilhaft, wenn bereits feste Ansprechpartner und Vorgehensmodelle für solche Probleme existieren, damit sicherheitskritische Systeme zeitig verbessert werden können.
(ID:45267491)