Threat Modeling Schulung

Sicherheitslücken in Software werden nicht nur in der Implementierungsphase, sondern bereits in der Designphase (meist versehentlich) „eingebaut“. Die der Designphase entstammenden Sicherheitslücken basieren auf fehlerhaften Konzepten und sind daher meist gravierender als Implementierungsfehler. Rechtzeitig – d.h. noch in der Designphase – können sie allerdings weit preisgünstiger behoben werden als nach dem Release! Um trotz hoher Komplexität einer Architektur alle Bedrohungen (Threats) im Blick zu haben und entsprechende Sicherheitsmaßnahmen zu verwalten und zu strukturieren, kann mit Hilfe der Methode Threat Modeling eine vollständige und strukturierte Bedrohungsmodellierung durchgeführt werden, um Sicherheitslücken systematisch während der Entwurfsphase zu identifizieren und auch zu beheben.

Security Testing Process

Identifiziert werden Sicherheitslücken und insbesondere die bislang nicht-erkannten, kritischen Zero-Day-Vulnerabilities nach dem Security Testing Process mit den drei Methoden: ‚Security by Design: Threat Modeling’, Quellcode-Analyse: ‚Static Source Code Analysis‘ und ‘Binärcode-Prüfung: Dynamic Analysis: Fuzzing’. Zugrunde liegt die ISO 27034 sowie der Security Development Lifecycle (SDL).

Methode Threat Modeling

Die Software-Architektur wird zunächst in einem Datenfluss-Diagramm (DFD) abstrahiert modelliert. Dabei werden einzelne Prozesse mit ihren Datenflüssen, Datenspeichern und externen Entitäten ermittelt. Um die Komplexität eines DFD möglichst gering zu halten, kann die Software-Architektur hierarchisch modelliert werden. Damit kann die Architektur bis auf kleinste Prozess-Schritte, wie Lesen aus der Datenbank, heruntergebrochen werden. Eine Zerlegung eines Prozesses in weitere Subprozesse sollte immer dann vorgenommen werden, wenn dadurch weitere sicherheitsrelevante Prozesse erkennbar werden.
Auf jedes Element des DFD wirken unterschiedliche Bedrohungen (Threats), die nach dem STRIDE-System kategorisiert werden. Jeder identifizierte Threat zielt auf eine oder mehrere bestimmte schützenswerte Ressourcen (Assets – z.B. Logins, Passwörter, Log-Files). Die Herausforderung besteht darin, alle Threats zu identifizieren und für diese Threats Sicherheitsmaßnahmen zu erarbeiten und zu dokumentieren.

Zielgruppe

  • Leiter Softwareentwicklung
  • Software Architekten/Designer
  • Software Entwickler
  • Software Tester

Lernziele

Verständnis des vollständigen Threat Modeling Prozesses – von der toolgestützten Modellierung einer Architektur bis zur Identifizierung und Bewertung von Threats und Sicherheitslücken inklusive der Behebung identifizierter Sicherheitslücken. Die Methoden werden anhand praxisnaher Beispiele eingeübt. Anhand eines Design-Beispiels werden die Sicherheitslücken identifiziert.

Inhalt

Einführung in den Security Testing Process

  • Security by Design: Threat Modeling
  • Static Source Code Analysis
  • Penetration Testing
  • Dynamic Analysis: Fuzzing

Zielsysteme

  • IT-Infrastruktur, Perimeter, Netzwerke
  • Firewall/Router
  • Webanwendungen
  • Mobile Apps
  • Individual Software/Hardware

Integration in den Software Development Lifecycle (SDL)

  • Waterfall Model
  • Agile Development

Präsentation: SDL Threat Modeling Tool
Beispiel: Threat Modeling Smart Meter Gateway

  • SMGW Architecture
  • Attack Surface Determination
  • Attack Path Visualization using Data Flow Diagrams (DFD)
  • Mitigation Examples
  • Threat Identification
  • Classification
  • Risk Assessment
  • Mitigation

Übung: Complete Threat Modeling
Beispiel: Web Application

  • Web Application Overview
  • Decompose Application
    • – Create Context-Diagram (Level 0 DFD)
    • – Create more detailed DFDs (at least up to Level 2)
  • Identify Threats
    • – STRIDE-Classification
    • – DREAD-Rating
    • – Mitigation Checking
  • Identify Vulnerabilities
  • Mitigating Vulnerabilities, Security Measures

Abschlussempfehlungen, Diskussion