Kontakt aufnehmen

Schulungsübersicht

Tag 1

IT-Sicherheit und sichere Programmierung

  • Natur der Sicherheit
  • Begriffe im Zusammenhang mit IT-Sicherheit
  • Definition von Risiko
  • Verschiedene Aspekte der IT-Sicherheit
  • Anforderungen in verschiedenen Anwendungsbereichen
  • IT-Sicherheit vs. sichere Programmierung
  • Von Schwachstellen zu Botnets und Cyberkriminalität
    • Natur von Sicherheitsmängeln
    • Gründe für die Schwierigkeit
    • Von einer infizierten Maschine bis hin zu gezielten Angriffen
  • Klassifizierung von Sicherheitsmängeln
    • Landwehrs Taxonomie
    • Die sieben tödlichen Sünden (The Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • OWASP Top Ten-Vergleich 2003 – 2013

Einführung in das Microsoft® Security Development Lifecycle (SDL)

  • Agenda
  • Anwendungen unter Angriff...
    • Evolution der Cyberkriminalität
    • Angriffe konzentrieren sich auf Anwendungen
    • Die meisten Schwachstellen befinden sich in kleineren ISV-Apps
  • Ursprung des Microsoft SDL...
    • Sicherheitszeitstrahl bei Microsoft...
    • Welche Apps müssen das SDL einhalten?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Vor-SDL-Anforderungen: Sicherheitsschulung
    • Phase 1: Anforderungen
    • Phase 2: Design
    • Phase 3: Implementierung
    • Phase 4: Verifikation
    • Phase 5: Release – Reaktionsplan
    • Phase 5: Release – Finaler Sicherheitscheck
    • Phase 5: Release – Archivierung
    • Nach-SDL-Anforderung: Reaktion
    • SDL-Prozessleitfaden für LOB-Apps
    • SDL-Leitfaden für Agile Methodologien
    • Sichere Softwareentwicklung erfordert Prozessverbesserung

Prinzipien des sicheren Designs

  • Angriffsfläche
    • Reduzierung der Angriffsfläche
    • Angriffsfläche – ein Beispiel
    • Analyse der Angriffsfläche
    • Reduzierung der Angriffsfläche – Beispiele
  • Datenschutz
    • Datenschutz
    • Verständnis des Verhaltens und der Belange der Anwendung
  • Tiefschutzprinzip (Defense in depth)
    • SDL-Kernprinzip: Tiefschutz (Defense in Depth)
    • Tiefschutz (Defense in depth) – Beispiel
  • Least-Privilege-Prinzip
    • Least Privilege – Beispiel
  • Sichere Standardwerte
    • Sichere Standardwerte – Beispiele

Prinzipien der sicheren Implementierung

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Grundlagen zu Buffer-Overflows
    • Intel 80x86-Prozessoren – Hauptregister
    • Das Speicheradresslayout
    • Der Funktionsaufrufmechanismus in C/C++ auf x86
    • Lokale Variablen und der Stack-Rahmen
    • Stack-Overflow
      • Buffer-Overflow auf dem Stack
      • Übungen – Einführung
      • Übung BOFIntro
      • Übung BOFIntro – Bestimmung des Stack-Layouts
      • Übung BOFIntro – ein einfacher Exploit
  • Eingabevalidierung
    • Konzepte der Eingabevalidierung
    • Ganzzahlprobleme
      • Darstellung negativer Ganzzahlen
      • Ganzzahlüberlauf (Integer Overflow)
      • Arithmetischer Überlauf – Rate die Ausgabe!
      • Übung IntOverflow
      • Was ist der Wert von Math.Abs(int.MinValue)?
    • Abwehr von Ganzzahlproblemen
      • Abwehr von Ganzzahlproblemen
      • Vermeidung arithmetischer Überläufe – Addition
      • Vermeidung arithmetischer Überläufe – Multiplikation
      • Erkennung von Überläufen mit dem `checked`-Schlüsselwort in C#
      • Übung – Verwendung des `checked`-Schlüsselworts in C#
      • Ausnahmen, die durch Überläufe in C# ausgelöst werden
    • Fallstudie – Ganzzahlüberlauf in .NET
      • Eine echte Schwachstelle für Ganzzahlüberlauf
      • Ausnutzen der Schwachstelle für Ganzzahlüberlauf
    • Path-Traversal-Schwachstelle
      • Abwehr von Path Traversal

Tag 2

Prinzipien der sicheren Implementierung

  • Injektion
    • Typische SQL-Injection-Angriffsmethoden
    • Blind und zeitbasiert SQL Injection
    • SQL-Injection-Schutzmethoden
    • Command Injection
  • Fehlende Authentifizierung – Passwortverwaltung
    • Übung – Schwäche gehashter Passwörter
    • Passwortverwaltung und -speicherung
    • Spezialisierte Hash-Algorithmen für die Passwortspeicherung
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS-Injection
    • Ausnutzung: Injektion über andere HTML-Tags
    • XSS-Prävention
  • Fehlende funktionsspezifische Zugriffskontrolle
    • Filterung von Datei-Uploads
  • Praktische Kryptographie
    • Vertraulichkeit mit symmetrischer Kryptographie
    • Symmetrische Verschlüsselungsalgorithmen
    • Blockchiffren – Betriebsmodi
    • Hash oder Message Digest
    • Hash-Algorithmen
    • Message Authentication Code (MAC)
    • Integrität und Authentizität mit einem symmetrischen Schlüssel
    • Vertraulichkeit mit Public-Key-Verschlüsselung
    • Faustregel – Besitz des privaten Schlüssels
    • Typische Fehler in der Passwortverwaltung
    • Übung – Hardkodierte Passwörter
    • Schlussfolgerung

Prinzipien der sicheren Verifikation

  • Funktionstest vs. Sicherheitstest
  • Sicherheitslücken
  • Priorisierung
  • Sicherheitstest im SDLC
  • Schritte der Testplanung (Risikomanalyse)
  • Umfang und Informationsbeschaffung
    • Stakeholder
    • Assets (Wertschöpfungsmittel)
    • Die Angriffsfläche
    • Sicherheitsziele für Tests
  • Threat Modeling
    • Threat Modeling
    • Angreiferprofile
    • Threat Modeling basierend auf Attack Trees
    • Threat Modeling basierend auf Misuse-/Abuse-Fällen
    • Misuse-/Abuse-Fälle – ein einfaches Web-Shop-Beispiel
    • STRIDE-nach-Element-Ansatz zum Threat Modeling – MS SDL
    • Identifizierung von Sicherheitszielen
    • Diagramme – Beispiele für DFD-Elemente
    • Datenflussdiagramm – Beispiel
    • Threat Enumeration – MS SDLs STRIDE und DFD-Elemente
    • Risikoanalyse – Klassifizierung von Bedrohungen
    • Das DREAD-Bedrohungs-/Risikobewertungsmodell
  • Sicherheitstesttechniken und -werkzeuge
    • Allgemeine Testansätze
    • Techniken für verschiedene Schritte des SDLC
  • Code-Review
    • Code-Review für Software-Sicherheit
    • Taint-Analyse
    • Heuristiken
  • Statische Codeanalyse
    • Statische Codeanalyse
    • Übung – Verwendung von Werkzeugen zur statischen Codeanalyse
  • Testen der Implementierung
    • Manuelle Laufzeitverifikation
    • Manuelle vs. automatisierte Sicherheitstests
    • Penetrationstests
    • Belastungstests
  • Fuzzing
    • Automatisierte Sicherheitstests – Fuzzing
    • Herausforderungen des Fuzzings
  • Web-Schwachstellenscanner
    • Übung – Verwendung eines Schwachstellenscanners
  • Überprüfung und Härtung der Umgebung
    • Common Vulnerability Scoring System – CVSS
    • Schwachstellenscanner
    • Öffentliche Datenbanken
  • Fallstudie – Bypass der Forms-Authentifizierung
    • NULL-Byte-Terminierungsschwachstelle
    • Die Bypass-Schwachstelle der Forms-Authentifizierung im Code
    • Ausnutzung des Bypass der Forms-Authentifizierung

Wissensquellen

  • Quellen für sichere Programmierung – eine Starter-Sammlung
  • Schwachstellendatenbanken
  • .NET-Richtlinien für sichere Programmierung auf MSDN
  • .NET-Schnellreferenzen für sichere Programmierung
  • Empfohlene Bücher – .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (3)

Kommende Kurse

Verwandte Kategorien