Kontakt aufnehmen

Schulungsübersicht

Tag 1

IT-Sicherheit und sicheres Coding

  • Natur der Sicherheit
  • Begriffe im Bereich der IT-Sicherheit
  • Definition von Risiko
  • Verschiedene Aspekte der IT-Sicherheit
  • Anforderungen verschiedener Anwendungsbereiche
  • IT-Sicherheit vs. sicheres Coding
  • Von Sicherheitslücken zu Botnets und Cyberkriminalität
    • Natur von Sicherheitsmängeln
    • Gründe für die Komplexität
    • Vom infizierten Computer zu gezielten Angriffen
  • Klassifizierung von Sicherheitsmängeln
    • Taxonomie von Landwehr
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • Vergleich OWASP Top Ten 2003 – 2013

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

  • Agenda
  • Angreifene Anwendungen...
    • Entwicklung der Cyberkriminalität
    • Angriffe konzentrieren sich auf Anwendungen
    • Die meisten Schwachstellen befinden sich in kleineren ISV-Anwendungen
  • Ursprünge des Microsoft SDL...
    • Zeitachse der Sicherheit bei Microsoft...
    • Welche Anwendungen müssen das SDL befolgen?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Voraussetzungen vor dem SDL: Sicherheitstraining
    • 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
    • Anforderung nach dem SDL: Reaktion
    • SDL-Prozessanweisungen für LOB-Apps
    • SDL-Anleitungen für agile Methoden
    • Sichere Softwareentwicklung erfordert Prozessverbesserung

Prinzipien des sicheren Designs

  • Angriffsfläche
    • Reduktion der Angriffsfläche
    • Angriffsfläche – ein Beispiel
    • Analyse der Angriffsfläche
    • Reduktion der Angriffsfläche – Beispiele
  • Datenschutz
    • Datenschutz
    • Verständnis von Anwendungshandlungen und Bedenken
  • Defense in Depth
    • SDL-Grundprinzip: Defense in Depth
    • Defense in Depth – Beispiel
  • Prinzip der geringsten Berechtigung
    • Geringste Berechtigung – Beispiel
  • Sichere Standardwerte
    • Sichere Standardwerte – Beispiele

Prinzipien der sicheren Implementierung

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Grundlagen des Buffer Overflow
    • Intel 80x86-Prozessoren – Hauptregister
    • Aufbau des Speichers
    • Funktionsaufrufmechanismus in C/C++ auf x86
    • Lokale Variablen und der Stack-Frame
    • Stack Overflow
      • Buffer Overflow im Stack
      • Übungen – Einführung
      • Übung BOFIntro
      • Übung BOFIntro – Bestimmung des Stack-Aufbaus
      • Übung BOFIntro – ein einfacher Exploit
  • Eingabevalidierung
    • Konzepte der Eingabevalidierung
    • Ganzzahl-Probleme
      • Darstellung negativer Ganzzahlen
      • Ganzzahl-Overflow
      • Arithmetischer Overflow – rate die Ausgabe!
      • Übung IntOverflow
      • Was ist der Wert von Math.Abs(int.MinValue)?
    • Minderung von Ganzzahl-Problemen
      • Minderung von Ganzzahl-Problemen
      • Vermeidung arithmetischer Overflows – Addition
      • Vermeidung arithmetischer Overflows – Multiplikation
      • Erkennung von Overflows mit dem checked-Keyword in C#
      • Übung – Verwendung des checked-Keywords in C#
      • Ausnahmen, die durch Overflows in C# ausgelöst werden
    • Fallstudie – Ganzzahl-Overflow in .NET
      • Eine reale Ganzzahl-Overflow-Schwachstelle
      • Ausnutzung der Ganzzahl-Overflow-Schwachstelle
    • Path Traversal-Schwachstelle
      • Minderung von Path Traversal

Tag 2

Prinzipien der sicheren Implementierung

  • Injektion
    • Typische SQL-Injection-Angriffsmethoden
    • Blind SQL Injection und zeitbasierte SQL Injection
    • Schutzmethoden gegen SQL Injection
    • Command Injection
  • Defekte Authentifizierung – Passwortmanagement
    • Übung – Schwäche gehashter Passwörter
    • Passwortmanagement und -speicherung
    • Hash-Algorithmus für spezialisierte Zwecke zur Passwort-Speicherung
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS-Injektion
    • Ausnutzung: Injektion über andere HTML-Tags
    • XSS-Prävention
  • Fehlende funktionale Zugriffskontrolle
    • Filterung von Dateiuploads
  • Angewandte Kryptographie
    • Bereitstellung von Vertraulichkeit mittels symmetrischer Kryptographie
    • Symmetrische Verschlüsselungsalgorithmen
    • Blockchiffren – Betriebsmodi
    • Hash oder Message Digest
    • Hash-Algorithmus
    • Message Authentication Code (MAC)
    • Bereitstellung von Integrität und Authentizität mit einem symmetrischen Schlüssel
    • Bereitstellung von Vertraulichkeit mittels Public-Key-Verschlüsselung
    • Daumenregel – Besitz des privaten Schlüssels
    • Typische Fehler im Passwortmanagement
    • Übung – Hardcodierte Passwörter
    • Fazit

Prinzipien der sicheren Verifikation

  • Funktionales Testen vs. Sicherheitstesten
  • Sicherheitslücken
  • Priorisierung
  • Sicherheitstesten im SDLC
  • Schritte zur Testplanung (Risikomanalyse)
  • Scoping und Informationssammlung
    • Stakeholder
    • Assets
    • Die Angriffsfläche
    • Sicherheitsziele für Tests
  • Threat Modeling
    • Threat Modeling
    • Angreiferprofile
    • Threat Modeling basierend auf Attack Trees
    • Threat Modeling basierend auf Misuse/Abuse Cases
    • Misuse/Abuse Cases – ein einfaches Beispiel eines Web-Shops
    • STRIDE-Elementansatz zum Threat Modeling – MS SDL
    • Identifizierung von Sicherheitszielen
    • Diagrammatik – Beispiele für DFD-Elemente
    • Datenflussdiagramm – Beispiel
    • Threat Enumeration – STRIDE und DFD-Elemente des MS SDL
    • Risikoanalyse – Klassifizierung von Bedrohungen
    • Das DREAD-Bedrohungs-/Risikobewertungsmodell
  • Techniken und Werkzeuge für das Sicherheitstesten
    • Allgemeine Testansätze
    • Techniken für verschiedene Schritte des SDLC
  • Code-Review
    • Code-Review für Software-Sicherheit
    • Taint-Analyse
    • Heuristiken
  • Statische Code-Analyse
    • Statische Code-Analyse
    • Übung – Verwendung von statischen Code-Analyse-Werkzeugen
  • Testen der Implementierung
    • Manuelle Laufzeitverifikation
    • Manuelle vs. automatisierte Sicherheitstests n
    • Penetrationstests
    • Belastungstests
  • Fuzzing
    • Automatisiertes Sicherheitstesten – Fuzzing
    • Herausforderungen des Fuzzings
  • Web-Schwachstellen-Scanner
    • Übung – Verwendung eines Schwachstellen-Scanners
  • Prüfung und Härtung der Umgebung
    • Common Vulnerability Scoring System – CVSS
    • Schwachstellen-Scanner
    • Öffentliche Datenbanken
  • Fallstudie – Umgehung der Form-Authentifizierung
    • NULL-Byte-Terminierungs-Schwachstelle
    • Die Schwachstelle der Form-Authentifizierungs-Umgehung im Code
    • Ausnutzung der Form-Authentifizierungs-Umgehung

Wissensquellen

  • Quellen für sicheres Coding – ein Starter-Kit
  • Schwachstellendatenbanken
  • Richtlinien für sicheres .NET-Coding auf MSDN
  • Cheat Sheets für sicheres .NET-Coding n
  • Empfohlene Bücher – .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (3)

Kommende Kurse

Verwandte Kategorien