Anbieter zum Thema
Secure Design
Das Anwendungsdesign ist bezüglich der Sicherheit die wohl wichtigste Software-Entwicklungsphase: Die in dieser Phase entstandenen Fehler lassen sich nur mit großem Kostenaufwand wieder beheben und oft auch nicht durch zusätzliche Tools ausgleichen.
Ein sicheres Design erfordert die Verwendung etablierter Sicherheitsmechanismen, so genannter „Security Patterns“, wie etwa eine sichere Kommunikation über SSL. Die Auswahl geeigneter Security Patterns ist ebenso wichtig wie eine auf Sicherheit überprüfte Architektur der Software.
Diese Prüfung kann durch ein „Threat Modeling“ erfolgen, das Angriffsszenarien basierend auf Erfahrungswerten sowie verschiedenen methodischen Vorgehensweisen (wie etwa Angriffsbäume, ähnlich zu Fehlerbäumen) durchspielt. Das Ergebnis dieser Phase ist möglicherweise ein Re-Design der Software, ergänzt durch zusätzliche Sicherheitsanforderungen sowie eine Sicherheitsarchitektur für das Produkt.
Secure Coding
Diese Phase wird von den meisten Software-Entwicklern üblicherweise als die eigentliche Kunst der sicheren Programmierung eingestuft; und in der Tat ist die Zielsetzung dort am offensichtlichsten. In dieser Phase geht es darum Coding-Fehler zu vermeiden, die Angreifern dabei helfen, die Software „knacken“ zu können.
Dabei werden die Techniken nach den Angriffsmustern klassifiziert, also etwa SQL-Injection, Cross-Site-Scripting, Cross-Site-Request-Forgery, Insecure Direct Object Reference usw. Gegen diese Angriffe helfen Input- und Output-Validierung, Least Privilege und weitere Mechanismen zur sicheren Programmierung.
Security Testing
Das Testen der Software-Sicherheit ist ebenfalls relativ weit verbreitet und wird auch von vielen Beratungsunternehmen als Dienstleistung angeboten. Es gibt drei große Klassen von Testverfahren, die ersten beiden sind:
Black-Box-Tests, bei denen die Tester keinen Zugriff auf Coding oder Dokumentation haben und White-Box-Tests, bei denen die Tester auf den Quellcode, Designunterlagen etc. zurückgreifen dürfen. Bei diesen beiden Verfahren versuchen die Tester, die Software zu „knacken“, also Angriffe durchzuführen um mögliche Schwachstellen zu identifizieren.
Schließlich gibt es noch klassische Software-Tests, bei denen die Erfüllung der Anforderungen durch die Entwicklung von Test-Cases und deren Überprüfung realisiert wird. Wichtig dabei ist, dass Sicherheit meist sogenannte „Negativ-Tests“ sind, also bestimmte Funktionalitäten ausgeschlossen werden sollen, statt dass (bei „Positiv-Tests“) eine erforderliche Funktionalität auf Korrektheit geprüft wird. Um dies sinnvoll einzusetzen, ist eine gute Vorbereitung in der Phase des Requirement Engineering erforderlich, insbesondere bei den nicht-funktionalen Sicherheitsanforderungen.
Seite 3: Sichere Bereitstellung und nachträgliche Betreuung
(ID:2045772)