Bedrohungsmodellierung verstehen
Die Bedrohungsmodellierung ist ein Kernelement des Microsoft Security Development Lifecycle (SDL) und eine grundlegende Sicherheitspraxis zum Erstellen sicherer Anwendungen. Es handelt sich um eine Technik, mit der Sie Bedrohungen, Angriffe, Sicherheitsrisiken und Gegenmaßnahmen, die sich auf Ihre Anwendung auswirken könnten, systematisch identifizieren können.
Was ist die Bedrohungsmodellierung?
Zweck: Die Bedrohungsmodellierung bietet einen strukturierten Ansatz, um Sicherheitsrisiken in Ihrer Anwendung zu verstehen. Anstatt zu hoffen, dass Sie über alle möglichen Sicherheitsprobleme nachgedacht haben, führt Sie die Bedrohungsmodellierung durch einen systematischen Prozess zur Identifizierung und Behebung von Bedrohungen.
Nützt: Sie können die Bedrohungsmodellierung verwenden, um:
- Design der Shape-Anwendung: Beeinflussen Sie Architekturentscheidungen auf der Grundlage von Sicherheitsaspekten, anstatt sicherheit als Nachherein hinzuzufügen.
- Sicherheitsziele erfüllen: Stellen Sie sicher, dass Ihre Anwendung die Sicherheitsziele und Complianceanforderungen Ihrer Organisation erfüllt.
- Risiko reduzieren: Reduzieren Sie Sicherheitsrisiken systematisch, indem Sie Bedrohungen während des Entwurfs identifizieren und adressieren, anstatt sie in der Produktion zu entdecken.
- Priorisieren sie die Sicherheit: Konzentrieren Sie sich auf die wichtigsten Bedrohungen, anstatt alles gleichzeitig anzugehen.
- Sicherheitsbedenken kommunizieren: Stellen Sie eine gemeinsame Sprache für Entwickler, Sicherheitsteams und Projektbeteiligte bereit, um die Sicherheit zu besprechen.
Zugänglichkeit: Der Ansatz wurde mit nicht sicherheitsrelevanten Experten entwickelt. Die Bedrohungsmodellierung ist für alle Entwickler zugänglich, nicht nur Sicherheitsspezialisten, durch klare Anleitungen zum Erstellen und Analysieren von Bedrohungsmodellen.
Der prozess der fünfstufigen Bedrohungsmodellierung
Die Bedrohungsmodellierung folgt einem systematischen fünfstufigen Prozess:
1. Definieren von Sicherheitsanforderungen
Festlegen von Sicherheitszielen: Bevor Sie Bedrohungen analysieren, klären Sie, welche Sicherheit für Ihre Anwendung bedeutet:
Vertraulichkeitsanforderungen:
- Welche Daten müssen vertraulich bleiben?
- Wer sollte Zugriff auf vertrauliche Informationen haben?
- Wie lange müssen Daten vertraulich bleiben?
- Welche Folgen haben Vertraulichkeitsverletzungen?
Integritätsanforderungen:
- Welche Daten oder Vorgänge müssen vor unbefugter Änderung geschützt werden?
- Wie erkennen Sie, ob Daten manipuliert wurden?
- Welche Folgen haben Integritätsverletzungen?
Verfügbarkeitsanforderungen:
- Welche Verfügbarkeitsgarantien sind erforderlich?
- Was ist akzeptable Ausfallzeiten für verschiedene Komponenten?
- Welche Geschäftlichen Auswirkungen hat die Unverfügbarkeit?
Complianceanforderungen:
- Welche gesetzlichen Anforderungen gelten (DSGVO, HIPAA, PCI DSS usw.)?
- Welche Branchenstandards müssen erfüllt werden (ISO 27001, SOC 2 usw.)?
- Welche vertraglichen Sicherheitsverpflichtungen bestehen mit Kunden?
Beispielanforderungen: "Kundenzahlungsinformationen müssen vertraulich bleiben. Nur autorisierte Zahlungsverarbeitungssysteme können auf diese Daten zugreifen. Der gesamte Zugriff muss für Überwachungszwecke protokolliert werden. Daten müssen während der Übertragung und im Ruhezustand verschlüsselt werden."
2. Erstellen eines Anwendungsdiagramms
Visualisieren Sie Ihre Architektur: Erstellen Sie ein Diagramm, das die Architektur Ihrer Anwendung darstellt, die Folgendes zeigt:
Systemkomponenten:
- Webserver, Anwendungsserver, Datenbanken, Microservices.
- Externe Dienste und APIs, von derEn Anwendung abhängig ist.
- Authentifizierungs- und Autorisierungssysteme.
- Load Balancer, Caching-Schichten, Nachrichtenwarteschlangen.
Datenflüsse:
- Wie Daten zwischen Komponenten verschoben werden.
- Welche Daten die einzelnen Verbindungen übertragen.
- Richtung des Datenflusses.
- Datentransformationspunkte.
Sicherheitsgrenzen:
- Vertrauensgrenzen, an denen sich die Berechtigungsstufen ändern.
- Netzwerkgrenzen zwischen verschiedenen Sicherheitszonen.
- Prozessgrenzen zwischen verschiedenen Ausführungskontexten.
- Physische Grenzen zwischen verschiedenen Standorten oder Clouds.
Beispielelemente:
- Benutzer, die sich über das Internet verbinden.
- Webanwendungsfirewall am Netzwerkrand.
- Webserver in einer DMZ.
- Anwendungsserver in einem geschützten Netzwerk.
- Datenbankserver in einem stark eingeschränkten Netzwerk.
- Externes Zahlungsgateway für die Verarbeitung von Transaktionen.
3. Identifizieren von Bedrohungen
Systematische Bedrohungserkennung: Verwenden Sie strukturierte Ansätze, um potenzielle Bedrohungen zu identifizieren:
STRIDE-Methodik: STRIDE ist ein Framework für die Bedrohungskategorisierung:
- Spoofing: Bedrohungen durch Identitätsimitation.
- Manipulation: Bedrohungen durch unbefugte Änderung von Daten.
- Abstreitung: Bedrohungen, bei denen Benutzer das Ausführen von Aktionen verweigern.
- Informationsoffenlegung: Bedrohungen durch nicht autorisierten Zugriff auf Informationen.
- Denial of Service: Bedrohungen, die legitime Benutzer am Zugriff auf Systeme hindern.
- Erweiterung von Berechtigungen: Bedrohungen, bei denen Benutzer unerlaubte Berechtigungen erhalten.
Wenden Sie STRIDE auf Datenflüsse an: Untersuchen Sie jeden Datenfluss in Ihrem Diagramm, und überlegen Sie, wie jede STRIDE-Kategorie angewendet werden kann:
- Kann ein Angreifer die Quelle dieser Daten spoofen?
- Können diese Daten während der Übertragung oder Speicherung manipuliert werden?
- Können legitime Aktionen in diesem Datenfluss bestritten werden?
- Könnten vertrauliche Informationen über diesen Fluss offengelegt werden?
- Könnte dieser Ablauf verwendet werden, um einen Denial-of-Service zu verursachen?
- Könnte dieser Fluss ausgenutzt werden, um erhöhte Berechtigungen zu erhalten?
Häufige Bedrohungsbeispiele:
- SQL-Einfügung: Angreifer bearbeitet Datenbankabfragen über nichtanimierte Benutzereingaben (Manipulation, Offenlegung von Informationen, Rechteerweiterung).
- Session-Hijacking: Angreifer stehlen Sitzungstoken, um sich als Benutzer auszugeben (Spoofing, Privilegienerhöhung).
- Man-in-the-Middle: Angreifer fängt die Kommunikation zwischen Komponenten ab (Offenlegung von Informationen, Manipulation).
- DDoS-Angriff: Angreifer überfordert Systeme mit Datenverkehr (Denial of Service).
4. Mindern von Bedrohungen
Entwickeln von Gegenmaßnahmen: Entwickeln Sie für jede identifizierte Bedrohung geeignete Gegenmaßnahmen:
Entschärfungsstrategien:
- Eliminieren: Entfernen Sie die anfällige Komponente oder das Feature vollständig, wenn sie nicht unbedingt erforderlich ist.
- Verhindern: Implementieren Sie Steuerelemente, die die Bedrohung unmöglich machen (z. B. die Eingabeüberprüfung verhindert Einfügungsangriffe).
- Entdecken: Implementieren Sie Überwachung und Warnung, um Bedrohungsausnutzungsversuche zu erkennen.
- Antworten: Entwickeln Sie Verfahren zur Reaktion auf Vorfälle, wenn Bedrohungen ausgenutzt werden.
Beispielminderungen:
- SQL-Einfügungsgefahr: Verwenden Sie parametrisierte Abfragen und Eingabeüberprüfungen, um Einfügungsangriffe zu verhindern.
- Sitzungshijacking-Bedrohung: Setzen Sie eine sichere Sitzungsverwaltung mit HTTPS, sicheren Cookies und kurzen Sitzungstimeouts um.
- Man-in-the-Middle-Bedrohung: Erzwingen von TLS für alle Kommunikationen und Implementieren der Zertifikatheftung.
- DDoS-Bedrohung: Verwenden Sie cloudbasierte DDoS-Schutzdienste und implementieren Sie die Ratenbegrenzung.
Dokumententscheidungen: Aufzeichnen von Entschärfungsentscheidungen, einschließlich:
- Welche Bedrohungen angesprochen werden.
- Welcher Entschärfungsansatz gewählt wurde.
- Warum dieser Ansatz angemessen ist.
- Wer ist für die Umsetzung verantwortlich.
- Alle Restrisiken, die verbleiben.
5. Überprüfen von Entschärfungen
Überprüfen der Effektivität: Überprüfen Sie nach der Implementierung von Entschärfungen, dass sie identifizierte Bedrohungen effektiv behandeln:
Sicherheitstests:
- Penetrationstests zur Überprüfung von Bedrohungen können nicht ausgenutzt werden.
- Sicherheitscodeüberprüfungen, um zu bestätigen, dass Gegenmaßnahmen ordnungsgemäß implementiert werden.
- Automatisierte Sicherheitsüberprüfung zum Erkennen verpasster Sicherheitsrisiken.
- Rote Teamübungen zum Testen von Abwehrmaßnahmen gegen realistische Angriffsszenarien.
Kontinuierliche Überprüfung: Bedrohungen und Abhilfemaßnahmen entwickeln sich weiter:
- Neue Bedrohungen entstehen, wenn sich die Technologie ändert.
- Bestehende Maßnahmen können unwirksam werden.
- Anwendungsänderungen können neue Sicherheitsrisiken verursachen.
Bedrohungsmodellierung im Entwicklungslebenszyklus
Laufender Prozess: Die Bedrohungsmodellierung sollte keine einmalige Aktivität sein. Es sollte Teil Ihres typischen Entwicklungslebenszyklus sein:
Anfänglicher Entwurf: Führen Sie umfassende Bedrohungsmodellierung während des anfänglichen Anwendungsentwurfs durch, um Architekturentscheidungen zu beeinflussen.
Featureentwicklung: Durchführen der Bedrohungsmodellierung beim Hinzufügen erheblicher neuer Features, die Sicherheitsgrenzen ändern oder neue Datenflüsse einführen.
Regelmäßige Updates: Überprüfen und aktualisieren Sie Bedrohungsmodelle in regelmäßigen Abständen auch ohne wesentliche Änderungen, da sich die Bedrohungslandschaft weiterentwickelt.
Reaktion auf Vorfälle: Aktualisieren Sie Bedrohungsmodelle nach Sicherheitsvorfällen, um gelernte Erkenntnisse zu integrieren.
Progressive Risikoreduzierung: Mit diesem iterativen Ansatz können Sie Ihr Bedrohungsmodell verfeinern und das Risiko im Laufe der Zeit schrittweise reduzieren, anstatt alle Risiken gleichzeitig zu behandeln.
Microsoft Threat Modeling Tool
Microsoft bietet ein kostenloses Tool, das die Bedrohungsmodellierung barrierefreier und strukturierter macht:
Zweck: Das Microsoft Threat Modeling Tool vereinfacht die Bedrohungsmodellierung für alle Entwickler durch eine Standardnotation zur Visualisierung von Systemkomponenten, Datenflüssen und Sicherheitsgrenzen.
Automatisierte Bedrohungsidentifikation: Das Tool hilft Bedrohungsmodellierern, Klassen von Bedrohungen zu identifizieren, die sie basierend auf der Struktur ihres Softwaredesigns berücksichtigen sollten. Wenn Sie Ihr Anwendungsdiagramm erstellen, schlägt das Tool automatisch potenzielle Bedrohungen basierend auf den von Ihnen definierten Komponenten und Datenflüssen vor.
Wichtige Funktionen: Mit dem Threat Modeling Tool können Entwickler oder Softwarearchitekten folgende Aktionen ausführen:
Kommunikationssicherheitsdesign:
- Erstellen Sie visuelle Darstellungen der Systemarchitektur.
- Verwenden Sie konsistente Notation, die Sicherheitsteams und Entwickler verstehen.
- Dokumentieren Sie sicherheitsrelevante Architekturentscheidungen.
- Teilen Sie Bedrohungsmodelle mit Projektbeteiligten zur Überprüfung und zum Feedback.
Analysieren von Designs:
- Identifizieren sie potenzielle Sicherheitsprobleme mithilfe bewährter Methoden (STRIDE).
- Bedrohungslisten basierend auf der Anwendungsstruktur automatisch generieren.
- Priorisieren Sie Bedrohungen basierend auf Schweregrad und Wahrscheinlichkeit.
- Vergleichen Sie verschiedene Designalternativen aus Sicherheitsperspektive.
Verwalten von Entschärfungen:
- Schlagen Sie Gegenmaßnahmen für identifizierte Bedrohungen vor.
- Nachverfolgen des Implementierungsstatus der Entschärfung.
- Dokumentieren Sie Sicherheitsentscheidungen und Gründe.
- Generieren Sie Berichte für Sicherheitsüberprüfungen und Compliance.
Erste Schritte:
- Das Tool ist kostenlos und steht zum Download von Microsoft zur Verfügung.
- Es enthält Vorlagen für allgemeine Anwendungstypen.
- Integrierte Anleitungen helfen neuen Benutzern, Konzepte zur Bedrohungsmodellierung zu erlernen.
- Die Integration in Azure DevOps ermöglicht das Verknüpfen von Bedrohungen mit Arbeitsaufgaben.
Weitere Ressourcen
Weitere Informationen zur Bedrohungsmodellierung finden Sie unter: