Schulungsübersicht

Tag 1

IT-Sicherheit und sicheres Codieren

  • Natur der Sicherheit
  • IT-Sicherheitsbegriffe
  • Definition von Risiko
  • Verschiedene Aspekte der IT-Sicherheit
  • Anforderungen verschiedener Anwendungsbereiche
  • IT-Sicherheit vs. sicheres Codieren
  • Von Schwachstellen zu Botnets und Cybercrime
    • Natur von Sicherheitslücken
    • Gründe für die Schwierigkeit
    • Von einem infizierten Computer zu gezielten Angriffen
  • Klassifikation von Sicherheitslücken
    • Landwehr's Taxonomie
    • Die Sieben Schädlichen Königreiche
    • OWASP Top Ten 2013
    • Vergleich der OWASP Top Ten von 2003 bis 2013

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

  • Agenda
  • Anwendungen unter Angriff...
    • Entwicklung von Cybercrime
    • Angriffe konzentrieren sich auf Anwendungen
    • Die meisten Schwachstellen befinden sich in kleineren ISV-Anwendungen
  • Ursprünge des Microsoft SDL...
    • Sicherheitszeitleiste bei Microsoft...
    • Welche Anwendungen müssen dem SDL folgen?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Vorsdl-Anforderungen: Sicherheitsschulung
    • Phase 1: Anforderungen
    • Phase 2: Design
    • Phase 3: Implementierung
    • Phase 4: Verifizierung
    • Phase 5: Freigabe – Reaktionsplan
    • Phase 5: Freigabe – Endgültige Sicherheitsprüfung
    • Phase 5: Freigabe – Archivierung
    • Nach-Sdl-Anforderung: Reaktion
    • SDL-Prozessleitfaden für LOB-Anwendungen
    • SDL-Leitfaden für agile Methoden
    • Sichere Softwareentwicklung erfordert Prozessverbesserung

Sicherheitsdesignprinzipien

  • Angriffsoberfläche
    • Reduzierung der Angriffsoberfläche
    • Angriffsoberfläche – ein Beispiel
    • Analyse der Angriffsoberfläche
    • Reduzierung der Angriffsoberfläche – Beispiele
  • Datenschutz
    • Datenschutz
    • Verständnis von Anwendungszusammenhängen und Bedenken
  • Tiefgangsicherung
    • SDL-Kernprinzip: Tiefgangsicherung
    • Tiefgangsicherung – Beispiel
  • Prinzip des kleinsten Privilegs
    • Kleinstes Privileg – Beispiel
  • Sichere Standardwerte
    • Sichere Standardwerte – Beispiele

Sicherheitsimplementierungsprinzipien

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Grundlagen von Pufferüberläufen
    • Intel 80x86 Prozessoren – Hauptregister
    • Das Speicheradresslayout
    • Der Funktionsaufrufmechanismus in C/C++ auf x86
    • Die lokalen Variablen und der Stapelrahmen
    • Stapelüberlauf
      • Pufferüberlauf auf dem Stapel
      • Übungen – Einführung
      • Übung BOFIntro
      • Übung BOFIntro – Bestimmung des Stapellayouts
      • Übung BOFIntro – einfacher Exploit
  • Eingabevalidierung
    • Konzepte der Eingabevalidierung
    • Ganzzahlprobleme
      • Darstellung von negativen Ganzzahlen
      • Ganzzahloverlauf
      • Arithmetischer Überlauf – erraten Sie das Ergebnis!
      • Ü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
      • Erkennen 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 – Ganzzahloverlauf in .NET
      • Eine realweltliche Ganzzahloverlaufsverletzung
      • Ausnutzen der Ganzzahloverlaufsverletzung
    • Pfadtraversierungsverletzung
      • Abwehr von Pfadtraversierung

Tag 2

Sicherheitsimplementierungsprinzipien

  • Injektion
    • Typische SQL-Injektionsangriffsmethoden
    • Blinde und zeitbasierte SQL-Injektion
    • Schutzmethoden gegen SQL-Injektion
    • Befehlsinjektion
  • Fehlende Authentifizierung – Passwortsicherung
    • Übung – Schwachstellen von gehashten Passwörtern
    • Passwortsicherheit und -speicherung
    • Spezialisierte Hash-Algorithmen für die Passwortspeicherung
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS-Injektion
    • Ausnutzung: Injektion durch andere HTML-Tags
    • XSS-Verhinderung
  • Fehlende funktionale Zugriffssteuerung
    • Filterung von Dateiuploads
  • Praktische Kryptografie
    • Vertraulichkeit durch symmetrische Kryptografie gewährleisten
    • Symmetrische Verschlüsselungsalgorithmen
    • Blockchiffren – Betriebsarten
    • Hash oder Nachrichtenverdichter
    • Hash-Algorithmen
    • Message Authentication Code (MAC)
    • Integrität und Authentizität durch symmetrischen Schlüssel gewährleisten
    • Vertraulichkeit durch asymmetrische Verschlüsselung gewährleisten
    • Faustregel – Besitz des privaten Schlüssels
    • Typische Fehler in der Passwortsicherheit
    • Übung – Hartcodierte Passwörter
    • Zusammenfassung

Sicherheitsverifizierungsprinzipien

  • Funktionales Testing vs. Sicherheitstesting
  • Sicherheitslücken
  • Priorisierung
  • Sicherheitstesting im SDLC
  • Schritte der Testplanung (Risikoanalyse)
  • Umfang und Informationsgewinnung
    • Stakeholder
    • Anlagen
    • Die Angriffsoberfläche
    • Sicherheitsziele für das Testing
  • Bedrohungsmodellierung
    • Bedrohungsmodellierung
    • Angreiferprofile
    • Bedrohungsmodellierung basierend auf Angriffsbaumdiagrammen
    • Bedrohungsmodellierung basierend auf Missbrauchsfällen
    • Missbrauchsfälle – einfaches Beispiel für einen Online-Shop
    • STRIDE-Ansatz zur Bedrohungsmodellierung pro Element – MS SDL
    • Identifizieren von Sicherheitszielen
    • Diagrammierung – Beispiele für DFD-Elemente
    • Datenflussdiagramm – Beispiel
    • Bedrohungsaufzählung – MS SDLs STRIDE und DFD-Elemente
    • Risikoanalyse – Klassifikation von Bedrohungen
    • Das DREAD-Bedrohung/Risikobewertungsmodell
  • Sicherheitstests und -tools
    • Allgemeine Testansätze
    • Techniken für verschiedene Phasen des SDLC
  • Code-Review
    • Code-Review für Software-Sicherheit
    • Taint-Analyse
    • Heuristiken
  • Statische Codeanalyse
    • Statische Codeanalyse
    • Übung – Verwendung von statischen Codeanalysetools
  • Testen der Implementierung
    • Manuelle Laufzeitverifizierung
    • Manuelles vs. automatisches Sicherheitstesting
    • Penetrationstests
    • Stress-Tests
  • Fuzzing
    • Automatisches Sicherheitstesting – Fuzzing
    • Herausforderungen des Fuzzings
  • Web-Schwachstellen-Scanner
    • Übung – Verwendung eines Schwachstellenscanners
  • Überprüfung und Absicherung der Umgebung
    • Common Vulnerability Scoring System – CVSS
    • Schwachstellenscanner
    • Öffentliche Datenbanken
  • Fallstudie – Forms-Authentifizierungsübersprung
    • NULL-Byte-Terminierungsschwachstelle
    • Die Forms-Authentifizierungsübersprung-Schwachstelle im Code
    • Ausnutzen der Forms-Authentifizierungsübersprung

Wissensquellen

  • Sichere Codierung – ein Starter-Kit
  • Schwachstellen-Datenbanken
  • .NET sichere Codierungslinien bei MSDN
  • .NET sichere Codierung-Cheatsheets
  • Empfohlene Bücher – .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis pro Teilnehmer

Erfahrungsberichte (5)

Kommende Kurse

Verwandte Kategorien