Start / Cheat Sheets

Cheat Sheet

Security by Design — Cheat Sheet

Stand: · Security by Design in der Softwareentwicklung

Security by DesignThreat ModelingSTRIDESDLC

Der Spickzettel zum Seminar Security by Design in der Softwareentwicklung — für den Entwurfstermin, das Review oder das Threat-Modeling-Meeting, in dem man kurz nachsieht, wie STRIDE noch mal ging. Zum Lernen der Methode taugt er nicht; dafür ist das Seminar da. Jeder Abschnitt verweist auf das Modul, aus dem er stammt.

Die drei Ebenen

Security by Design ist weder Secure Coding noch Security-Testing. Die Ebenen beantworten verschiedene Fragen zu verschiedenen Zeitpunkten.

EbeneFrageZeitpunkt
Security by DesignIst es sicher gebaut?Entwurf
Secure CodingIst es sicher umgesetzt?Implementierung
Security-TestsIst es sicher geblieben?Test & Betrieb

Keine Ebene ersetzt eine andere — sie greifen ineinander.

Kosten einer Lücke nach Phase

Gefunden in PhaseRelativer Korrekturaufwand
Anforderung / Entwurfniedrig — Entscheidung ändern
Implementierungmittel — Code anpassen
Test / Abnahmehoch — Rückbau nötig
Produktion / Vorfallsehr hoch — plus Schaden

Modul: Security by Design verstehen

Schutzziele und Angreifer

CIA — Schutzbedarf je Asset

Schutzbedarf wird je Asset getrennt nach C, I und A eingeschätzt, nicht pauschal.

SchutzzielBedeutungBeispiel-Verlust
VertraulichkeitNur Befugte sehen DatenKundendaten geleakt
IntegritätDaten sind unverfälschtRechnung manipuliert
VerfügbarkeitSystem ist erreichbarShop fällt aus

Typische Angreifer

Die Angreiferstärke bestimmt die nötige Tiefe der Verteidigung.

TypMotivTypische Fähigkeit
GelegenheitstäterNeugier, ZufallBekannte Exploits
Organisiert / KriminellGeldGezielte Kampagnen
InnentäterRache, VorteilLegitime Zugänge

Use Case gegen Abuse Case

Jeder Abuse Case erzeugt eine konkrete Gegenmaßnahme.

Use CaseAbuse Case
Nutzer meldet sich anAngreifer probiert Passwörter durch
Nutzer lädt Datei hochAngreifer lädt Schadcode hoch
Nutzer setzt Passwort zurückAngreifer übernimmt fremdes Konto

Modul: Sicherheitsverantwortung im Entwicklungsprozess

Threat Modeling

STRIDE-Kategorien

Je Element und Datenfluss alle sechs Kategorien durchgehen.

KategorieBedrohungSchutzziel
SpoofingIdentität fälschenAuthentizität
TamperingDaten verändernIntegrität
RepudiationAktion leugnenNachweisbarkeit
Information DisclosureDaten abgreifenVertraulichkeit
Denial of ServiceDienst lahmlegenVerfügbarkeit
Elevation of PrivilegeRechte ausweitenAutorisierung

Elemente der Angriffsfläche

Was nicht existiert, kann nicht angegriffen werden.

ElementFrage zur Reduktion
Öffentliche EndpunkteWird jeder wirklich gebraucht?
Eingabefelder / UploadsAlles serverseitig validiert?
Offene Ports / DiensteNach außen wirklich nötig?
AbhängigkeitenAktuell und minimal gehalten?

Risiko einordnen

Kritische Risiken zuerst; bewusst akzeptierte Restrisiken dokumentieren.

Auswirkung ╲ Wahrscheinlichkeitgeringhoch
geringniedrigmittel
hochmittelkritisch

Modul: Threat Modeling als praktische Methode

Die sieben Prinzipien

Kein Prinzip steht für sich — sie verstärken einander.

PrinzipKerngedanke
Least PrivilegeNur so viele Rechte wie nötig
Defense in DepthMehrere Schutzschichten staffeln
Secure DefaultsSicher im Auslieferungszustand
Fail SecureIm Fehlerfall verweigern
Separation of DutiesKritisches auf mehrere verteilen
Angriffsfläche minimierenWeniger Angriffspunkte bieten
Sichere VertrauensgrenzenVertrauen bewusst und explizit

Modul: Prinzipien sicherer Softwarearchitektur

Security-Aktivitäten je SDLC-Phase

Kein Übergang ohne bewusste Sicherheitsaktivität.

PhaseSecurity-Aktivität
AnforderungSchutzbedarf, Security Requirements
EntwurfThreat Modeling, Prinzipien anwenden
ImplementierungSecure Coding, Code Reviews
TestSAST/DAST, Pentest
ReleaseHärtung, Secrets, SBOM
BetriebMonitoring, Patchen, Incident Response

Modul: Security im Software Development Lifecycle

Bedrohung und Gegenmaßnahme nach Anwendungstyp

KontextBedrohungGegenmaßnahme
DesktopManipulierte Update-DateienSignierte Updates prüfen
DesktopLokale Daten im KlartextVerschlüsselt speichern
DesktopLibrary-/DLL-HijackingFeste Pfade, Signaturen prüfen
DesktopSecrets im Client eingebettetKeine Geheimnisse im Client
Web / APIInjection (SQL, Command)Parametrisieren, validieren
Web / APIBroken Auth / SessionStarke Auth, sichere Tokens
Web / APIFehlende ZugriffskontrolleServerseitig autorisieren
Web / APIÜbermäßige DatenpreisgabeAntworten gezielt minimieren
BackendUngeprüfte Service-AufrufemTLS, Service-Identität
BackendSecrets in Config oder CodeSecret-Management, Rotation
BackendKompromittierte Dritt-APIEmpfangene Daten misstrauen
BackendFehlende RatenbegrenzungRate Limiting, Timeouts

Drei Faustregeln dazu: Vertrauenswürdige Entscheidungen gehören auf den Server. Nie dem Client vertrauen — jede Prüfung serverseitig wiederholen. Und: „Internes Netz” ist keine Vertrauensgrenze.

Modul: Transfer in typische Anwendungsszenarien

Zum Seminar Security by Design in der Softwareentwicklung