Kontakt aufnehmen

Schulungsübersicht

Tag 1

IT-Sicherheit und sichere Codierung

  • Natur der Sicherheit
  • Begriffe im Zusammenhang mit IT-Sicherheit
  • Definition von Risiko
  • Verschiedene Aspekte der IT-Sicherheit
  • Anforderungen verschiedener Anwendungsbereiche
  • IT-Sicherheit vs. sichere Codierung
  • Von Schwachstellen zu Botnets und Cyberkriminalität
    • Natur von Sicherheitslücken
    • Gründe für die Schwierigkeit
    • Von infizierten Computern bis zu gezielten Angriffen
  • Klassifizierung von Sicherheitslücken
    • Landwehrs Taxonomie
    • Die sieben giftigen Königreiche
    • OWASP Top Ten 2013
    • OWASP Top Ten Vergleich 2003 – 2013

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

  • Agenda
  • Angreifene Anwendungen...
    • Entwicklung der Cyberkriminalität
    • Angriffe zielen auf Anwendungen ab
    • Die meisten Schwachstellen befinden sich in kleineren ISV-Anwendungen
  • Ursprünge des Microsoft SDL...
    • Sicherheits-Zeitstrahl bei Microsoft...
    • Welche Anwendungen müssen SDL einhalten?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Vor-SDL-Anforderungen: Sicherheitstraining
    • Phase 1: Anforderungen
    • Phase 2: Design
    • Phase 3: Implementierung
    • Phase 4: Verifikation
    • Phase 5: Veröffentlichung – Reaktionsplan
    • Phase 5: Veröffentlichung – Abschließende Sicherheitsprüfung
    • Phase 5: Veröffentlichung – Archivierung
    • Nach-SDL-Anforderung: Reaktion
    • SDL-Prozessführung für LOB-Anwendungen
    • SDL-Richtlinien für agile Methodologien
    • Sichere Softwareentwicklung erfordert Prozessverbesserung

Grundsätze für sicheres Design

  • 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 von Anwendungen und Bedenken
  • Verteidigung in der Tiefe
    • SDL-Grundprinzip: Verteidigung in der Tiefe
    • Verteidigung in der Tiefe – Beispiel
  • Prinzip der minimalen Berechtigung
    • Minimale Berechtigung – Beispiel
  • Sichere Standardwerte
    • Sichere Standardwerte – Beispiele

Grundsätze für sichere Implementierung

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Grundlagen zu Buffer Overflows
    • Intel 80x86-Prozessoren – Hauptregister
    • Speicheradresslayout
    • Funktionsaufrufmechanismus in C/C++ auf x86
    • Lokale Variablen und Stack-Frame
    • Stack-Overflow
      • Buffer Overflow im Stack
      • Übungen – Einführung
      • Übung BOFIntro
      • Übung BOFIntro – Stack-Layout bestimmen
      • Übung BOFIntro – ein einfacher Exploit
  • Eingabevalidierung
    • Konzepte der Eingabevalidierung
    • Ganzzahlige Probleme
      • Darstellung negativer Ganzzahlen
      • Ganzzahliger Überlauf
      • Arithmetischer Überlauf – Rate das Ergebnis!
      • Übung IntOverflow
      • Was ist der Wert von Math.Abs(int.MinValue)?
    • Minderung von Ganzzahlproblemen
      • Minderung von Ganzzahlproblemen
      • Vermeidung von arithmetischem Überlauf – Addition
      • Vermeidung von arithmetischem Überlauf – Multiplikation
      • Erkennung von Überläufen mit dem checked-Keyword in C#
      • Übung – Verwendung des checked-Keywords in C#
      • Ausnahmen, die durch Überläufe in C# ausgelöst werden
    • Fallstudie – Ganzzahliger Überlauf in .NET
      • Eine reale Schwachstelle durch ganzzahligen Überlauf
      • Ausnutzung der Schwachstelle durch ganzzahligen Überlauf
    • Path-Traversal-Schwachstelle
      • Minderung von Path-Traversal

Tag 2

Grundsätze für sichere Implementierung

  • Injektion
    • Typische SQL-Injection-Angriffsmethoden
    • Blinde und zeitbasierte SQL-Injection
    • SQL-Injection-Schutzmethoden
    • Command Injection
  • Fehlende Authentifizierung – Passwortverwaltung
    • Übung – Schwäche gehashter Passwörter
    • Passwortverwaltung und -speicherung
    • Hash-Algorithmen für den Passwort-Speicher
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS-Injektion
    • Ausnutzung: Injektion über andere HTML-Tags
    • XSS-Prävention
  • Fehlende Zugriffskontrolle auf Funktionsebene
    • Filterung von Dateiuploads
  • Praktische Kryptographie
    • Bereitstellung von Vertraulichkeit durch symmetrische Kryptographie
    • Symmetrische Verschlüsselungsalgorithmen
    • Blockchiffren – Betriebsarten
    • Hash oder Nachrichten-Digest
    • Hash-Algorithmen
    • Message Authentication Code (MAC)
    • Bereitstellung von Integrität und Authentizität mit einem symmetrischen Schlüssel
    • Bereitstellung von Vertraulichkeit durch Public-Key-Verschlüsselung
    • Faustregel – Besitz des privaten Schlüssels
    • Typische Fehler im Passwortmanagement
    • Übung – Hartcodierte Passwörter
    • Fazit

Grundsätze für sichere Verifikation

  • Funktionstests vs. Sicherheitstests
  • Sicherheitslücken
  • Priorisierung
  • Sicherheitstests im SDLC
  • Schritte der Testplanung (Risikomanalyse)
  • Abgrenzung und Informationsbeschaffung
    • Stakeholder
    • Vermögenswerte
    • Die Angriffsfläche
    • Sicherheitsziele für Tests
  • Threat Modeling
    • Threat Modeling
    • Angreiferprofile
    • Threat Modeling auf Basis von Angriffsbäumen
    • Threat Modeling auf Basis von Missbrauchsfällen
    • Missbrauchsfälle – ein einfaches Beispiel für einen Webshop
    • STRIDE-Elementansatz zum Threat Modeling – MS SDL
    • Identifizierung von Sicherheitszielen
    • Diagrammierung – Beispiele für DFD-Elemente
    • Datendflussdiagramm – Beispiel
    • Threat Enumeration – STRIDE und DFD-Elemente von MS SDL
    • Risikomanalyse – 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 Laufzeit-Verifikation
    • Manuelle vs. automatische Sicherheitstests
    • Penetrationstests
    • Belastungstests
  • Fuzzing
    • Automatisierte Sicherheitstests – Fuzzing
    • Herausforderungen beim Fuzzing
  • Web-Schwachstellen-Scanner
    • Übung – Verwendung eines Schwachstellen-Scanners
  • Überprüfung und Härtung der Umgebung
    • Common Vulnerability Scoring System – CVSS
    • Schwachstellen-Scanner
    • Öffentliche Datenbanken
  • Fallstudie – Umgehung der Formular-Authentifizierung
    • NULL-Byte-Terminierungs-Schwachstelle
    • Die Schwachstelle der Umgehung der Formular-Authentifizierung im Code
    • Ausnutzung der Umgehung der Formular-Authentifizierung

Wissensquellen

  • Quellen für sichere Codierung – ein Starter-Kit
  • Schwachstellendatenbanken
  • Richtlinien für sichere .NET-Codierung bei MSDN
  • .NET-sichere Codierung Cheat-Sheets
  • Empfohlene Bücher – .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (3)

Kommende Kurse

Verwandte Kategorien