Der Software Development Lifecycle (SDLC) ist ein systematischer Prozess zur Softwareentwicklung, der die Qualität und Korrektheit des Codes sicherstellt. Ziel ist die Erstellung hochwertiger Software innerhalb der vorgegebenen Zeit und des vorgegebenen Budgets gemäß den Kundenerwartungen. Jede Phase des SDLC hat ihren eigenen Prozess und ihre eigenen Ergebnisse, die in die nächste Phase einfließen. Gängige SDLC-Modelle sind beispielsweise Wasserfall-, Spiral-, iterative und agile SDLC-Modelle.
Es gibt nur wenige SDLC-Modelle, die sich explizit und detailliert mit Softwaresicherheit befassen. Dennoch ist es notwendig, sichere Softwareentwicklungspraktiken in jedes SDLC-Modell zu integrieren. Es gibt verschiedene Gründe, warum Unternehmen die Implementierung sicherer Softwareentwicklungspraktiken planen sollten, darunter:
- Um die Anzahl der Schwachstellen in veröffentlichter Software zu reduzieren
- Um die potenziellen Auswirkungen der Ausnutzung unentdeckter Schwachstellen zu minimieren
- Die Ursachen von Schwachstellen angehen, um Wiederholungen zu verhindern
Zu den Sicherheitslücken zählen nicht nur Fehler, die durch Programmierfehler verursacht werden, sondern auch Schwächen, die durch falsche Sicherheitskonfigurationseinstellungen, falsche Vertrauensannahmen und veraltete Risikoanalysen verursacht werden.
Was ist SSDF?
Nationales Institut für Standards und Technologie (NIST) hat ein Secure Software Development Framework (SSDF) entwickelt, um die Widerstandsfähigkeit von Software gegen Sicherheitslücken zu stärken. Es definiert keine neuen Terminologien, sondern konsolidiert langjährige Best-Practice-Empfehlungen für sichere Softwareentwicklung. Der Schwerpunkt des SSDF liegt auf der Identifizierung bewährter Verfahren und nicht auf den Tools, Techniken und Mechanismen zu deren Umsetzung.
Laut NIST lassen sich die Praktiken der SSDF in vier Hauptkategorien einteilen:
- Bereiten Sie die Organisation vor (PO)
Unternehmen sollten sicherstellen, dass ihre Mitarbeiter, Prozesse und Technologien auf sichere Softwareentwicklung auf Unternehmensebene vorbereitet sind. Viele Unternehmen finden auch PO-Praktiken, die sie auf Teilbereiche ihrer Softwareentwicklung anwenden können, beispielsweise auf einzelne Entwicklungsgruppen oder Projekte.
- Schützen Sie die Software (PS)
Organisationen sollten alle Softwarekomponenten vor Manipulation und unbefugtem Zugriff schützen.
- Erstellen Sie gut gesicherte Software (PW)
Organisationen sollten gut gesicherte Software mit minimalen Sicherheitslücken in ihren Versionen produzieren.
- Auf Schwachstellen reagieren (RV)
Organisationen sollten verbleibende Schwachstellen in ihren Softwareversionen identifizieren und entsprechend reagieren, um diese Schwachstellen zu beheben und das Auftreten ähnlicher Schwachstellen in der Zukunft zu verhindern.
Jede Praxisdefinition umfasst die folgenden Elemente:
- Praxis
Der Name der Praxis und eine eindeutige Kennung, gefolgt von einer kurzen Erklärung, um welche Praxis es sich handelt und warum sie von Nutzen ist.
- Aufgaben
Eine oder mehrere Aktionen, die zur Durchführung einer Übung erforderlich sein können.
- Beispiele für theoretische Implementierungen
Ein oder mehrere fiktive Beispiele für Arten von Werkzeugen, Prozessen oder anderen Methoden, die zur Umsetzung einer Aufgabe eingesetzt werden können. Beispiele oder Kombinationen von Beispielen sind nicht erforderlich, und die genannten Beispiele sind nicht die einzigen möglichen Optionen. Einige Beispiele sind möglicherweise auf bestimmte Organisationen und Situationen nicht anwendbar.
- Referenzen
Verweise auf ein oder mehrere etablierte Dokumente zu sicheren Entwicklungspraktiken und deren Zuordnung zu einer bestimmten Aufgabe. Nicht alle Verweise gelten für alle Instanzen der Softwareentwicklung.
NIST empfiehlt, bei der Entscheidung, welche Verfahren umgesetzt werden sollen, das Risiko gegen die Kosten, die Durchführbarkeit und die Anwendbarkeit abzuwägen.
Das SSDF ist keine Checkliste, sondern dient Ihnen als Leitfaden für die Planung und Umsetzung eines risikobasierten Ansatzes zur sicheren Softwareentwicklung.
Vorteile von SSDF:
- Es kann Organisationen in jedem Sektor oder jeder Gemeinschaft unterstützen, unabhängig von ihrer Größe.
- Es kann auf Software angewendet werden, die zur Unterstützung der Informationstechnologie (IT), industrieller Steuerungssysteme (ICS), cyber-physischer Systeme (CPS) oder des Internets der Dinge (IoT) entwickelt wurde.
- Es kann in jeden vorhandenen Softwareentwicklungs-Workflow und jede automatisierte Toolchain integriert werden. Es sollte jedoch keine negativen Auswirkungen auf Organisationen haben, die bereits über starke, sichere Softwareentwicklungspraktiken verfügen.
- Dadurch sind die Praktiken allgemein anwendbar und nicht auf bestimmte Technologien, Plattformen, Programmiersprachen, SDLC-Modelle, Entwicklungsumgebungen, Betriebsumgebungen, Tools usw. beschränkt.
Fazit
Mit der SSDF-Architektur des NIST wird die sichere Softwareentwicklung schnell zu einer verbindlichen Priorität im großen Maßstab. Unternehmen, die SSDF einführen, sind dadurch vor SDLC-Schwachstellen geschützt und können ihre Software-Lieferketten schützen.
Secure Software Development Framework (SSDF) Version 1.1: Empfehlungen zur Minderung des Risikos von Software-Sicherheitslücken
