Eine der grundlegenden Erkenntnisse das Qualitätsmanagements besteht darin, dass es besser ist Qualität gleich mit einzubauen als sie nachträglich „reinzuprüfen“. Also qualitätssichernde Vorgehensweisen und Praktiken zum verbindlichen Bestandteil des Produktionsprozesses werden zu lassen.
Die zunehmende Bedeutung von Vorgehensmodellen, Reifegradmodellen und Standards in der Softwareentwicklung macht deutlich, dass die Industrialisierung der Softwareentwicklung auch zur Übernahme qualitätssichernder Konzepte und Methoden führt.
Das Thema „Security by Design“ wurde in den letzten Jahren maßgeblich von Microsoft durch die Entwicklung des Security Development Lifecycle (SDL) vorangetrieben und von zahlreichen anderen Softwareherstellern in der ein oder anderen Form übernommen.
Gängige Instrumente der Software-Qualitätssicherung wie das Testen entsprechender Features, Code-Review oder auch Penetration Tests fertiger Produkte mit sicherheitsrelevanten Eigenschaften erwiesen sich zunehmend als unzureichend, da sie nur punktuell prüfen, anstatt den ganzen Prozess der Entwicklung qualitätssichernd zu begleiten.
Abhilfe schaffen da lebenszyklusorientierte Ansätze wie der SDL bzw. das „Security by Design“-Prinzip, durch die Sicherheit bereits als explizite Anforderung definiert und im weiteren Entwicklungsprozess implementiert und verifiziert wird.
Security by Design bzw. SDL ist dabei keine Technik, sondern eine Sicherheitsmaßnahme, die den Entwicklungsprozess kontinuierlich begleitet. Die Maßnahmen sollen eine integrierte und nachhaltige Sicherheit der entwickelten Softwareprodukte zur Folge haben.
Generell umfasst SDL Sicherheitsmaßnahmen, die den Softwareentwicklungsprozess ergänzen und gewährleisten, dass Sicherheit im notwendigen Umfang berücksichtigt und integriert wird, unabhängig davon, mit welchen Vorgehensweisen und Werkzeugen gearbeitet wird. Die Sicherheitsmaßnahmen lassen sich immer parallel zu den Entwicklungsschritten ausführen.
Ein voll implementierter „Security by Design“-Entwicklungsprozess ist allerdings – ähnlich wie ein umfangreiches Testmanagement – recht aufwändig. Wie man den umfangreichen Microsoft-Ansatz auch auf kleinere Entwicklungsteams und Unternehmen herunterbrechen kann, schildert ein Fachartikel auf Heise Developer.
Im Wesentlichen wird dazu der SDL-Prozess auf seine fünf essenziellen Schritte Managementunterstützung sicherstellen, Awareness und Schulung, Risikoanalysen, sichere Programmierung anwenden, Test und Review reduziert.
Sichere Programmierung anwenden meint damit Schritte, die in eigentlich jeder Programmiersprache nachvollzogen werden können und durch die sich Software-Schwachstellen wie SQL-Injection, Cross-Site Scripting oder Fehler in der Zugriffskontrolle merklich reduzieren lassen:
- Prüfung von Ein- und Ausgaben vor ihrer Weiterverarbeitung.
- Authentisierung und Zugriffskontrollen.
- Korrektes Handhaben und Schutz von sensitiven Informationen und Daten.
- Befolgen des “Least Privilege”-Prinzips, das die geringstmöglichen Privilegien zur Umsetzung einer Handlung vergibt oder benötigt.
- Verhindern von Informationspreisgaben.
Ähnliche, aber generellere Ansätze der Qualitätssteigerung während der Entwicklung verfolgt auch das Clean Code Development (CCD).
Hinzu kommt „nachfolgende Qualitätssicherung“ durch Sicherheitstests der fertigen Anwendung. Dadurch wird weiterhin geprüft, ob die Vorgaben zur sicheren Programmierung eingehalten wurden, um zu gewährleisten, dass keine Fehler, speziell keine sicherheitsrelevanten, implementiert wurden. Beispielsweise durch Prüfung des Quellcodes (Code-Review). Es lassen sich nicht nur Konventionen und Qualität prüfen, sondern Entwickler können konkret nach Sicherheitslücken suchen, sie dokumentieren und beheben.
Um einen SDL und damit „Security by Design“ einzuführen oder weiter auszubauen, lassen sich spezielle sicherheitsbezogene Vorgehensmodelle einsetzen. So weist Niklaus Schild in dem bereits erwähnten Heise-Artikel auf die Ansätze des Building Security In Maturity Model (BSIMM, Reifegradmodell für zwölf Praktiken, wie sie sich in der sicheren Softwareentwicklung anwenden lassen) sowie des Software Assurance Maturity Model (SAMM, Reifegrade und zusätzliche Beschreibungen und Empfehlungen für eine Umsetzung und Weiterentwicklung) hin.
[...] stellt Prüftools für Security-Tester bereit Microsoft ist bereits seit längerem bestrebt, sich bzgl. Sicherheit und Softwarequalität seiner Produkte als führend zu positionieren. Daher hat die Firma u.a. das Vorgehensmodell des „Security Development Lifecycle (SDL)“ [...]
[...] „Made in Germany“ am Markt etablieren will, Ansätze wie „Clean Code Development“ und „Security by Design“ sowie die zunehmende Integration von Testing-Tools in Entwicklungsumgebungen wie Microsofts [...]
[...] Entwicklungsprozess, wie es z.B. Initiativen wie das Clean Code Development (CCD) oder Microsofts Security Development Lifecycle (SDL) [...]