Kontakt aufnehmen

Schulungsübersicht

Tag 1

IT-Sicherheit und Secure Coding

  • Natur der Sicherheit
  • Begriffe im Zusammenhang mit IT-Sicherheit
  • Definition von Risiko
  • Verschiedene Aspekte der IT-Sicherheit
  • Anforderungen unterschiedlicher Anwendungsbereiche
  • IT-Sicherheit im Vergleich zu Secure Coding
  • Von Schwachstellen zu Botnets und Cyberkriminalität
    • Natur von Sicherheitsfehlern
    • Gründe für die Schwierigkeit, sie zu erkennen
    • Vom infizierten Computer zu gezielten Angriffen
  • Klassifizierung von Sicherheitsfehlern
    • Landwehrs Taxonomie
    • The Seven Pernicious Kingdoms
    • 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...
    • Evolution der Cyberkriminalität
    • Angriffe konzentrieren sich auf Anwendungen
    • Die meisten Schwachstellen befinden sich in kleineren ISV-Anwendungen (Independent Software Vendors)
  • Ursprünge des Microsoft SDL...
    • Sicherheits-Zeitlinie bei Microsoft...
    • Für welche Anwendungen gilt die Einhaltung des SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Voraussetzungen vor SDL: Sicherheitsschulung
    • Phase eins: Anforderungen
    • Phase zwei: Design
    • Phase drei: Implementierung
    • Phase vier: Verifikation
    • Phase fünf: Release – Reaktionsplan
    • Phase fünf: Release – Endgültige Sicherheitsüberprüfung
    • Phase fünf: Release – Archivierung
    • Bedingung nach SDL: Reaktion
    • SDL-Prozessleitfaden für LOB-Anwendungen (Line of Business)
    • SDL-Leitfaden für agile Methoden
    • Sichere Softwareentwicklung erfordert Prozessverbesserung

Grundsätze des sicheren Designs

  • Angriffsfläche
    • Reduzierung der Angriffsfläche
    • Angriffsfläche – ein Beispiel
    • Analyse der Angriffsfläche
    • Beispiele zur Reduzierung der Angriffsfläche
  • Datenschutz
    • Datenschutz (Privacy)
    • Verständnis von Anwendungsverhalten und -bedenken
  • Verteidigung in der Tiefe (Defense in Depth)
    • Kernprinzip des SDL: Defense in Depth
    • Beispiel für Defense in Depth
  • Prinzip des geringsten Privilegs (Least Privilege)
    • Beispiel für Least Privilege
  • Sichere Voreinstellungen (Secure Defaults)
    • Beispiele für sichere Voreinstellungen

Grundsätze der sicheren Implementierung

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Grundlagen von Buffer Overflows
    • Intel 80x86-Prozessoren – Hauptregister
    • Layout der Speicheradressen
    • Der Funktionsaufrufmechanismus in C/C++ auf x86
    • Lokale Variablen und Stack-Frames
    • Stack-Overflow
      • Pufferüberlauf auf dem Stack
      • Einführung in die Übungen
      • Übung BOFIntro
      • Übung BOFIntro – Bestimmung des Stack-Layouts
      • Übung BOFIntro – ein einfacher Exploit
  • Eingabevalidierung
    • Konzepte der Eingabevalidierung
    • Integer-Probleme
      • Darstellung von negativen ganzen Zahlen
      • Integer-Überlauf
      • Arithmetischer Überlauf – Erraten Sie die Ausgabe!
      • Übung IntOverflow
      • Wie ist der Wert von Math.Abs(int.MinValue)?
    • Abwehrmaßnahmen gegen Integer-Probleme
      • Abwehrmaßnahmen gegen Integer-Probleme
      • Vermeidung arithmetischer Überläufe – Addition
      • Vermeidung arithmetischer Überläufe – Multiplikation
      • Erkennung von Überläufen mit dem Schlüsselwort „checked“ in C#
      • Übung – Verwendung des Schlüsselworts „checked“ in C#
      • Ausnahmen, die durch Überläufe in C# ausgelöst werden
    • Fallstudie – Integer-Überlauf in .NET
      • Eine echte Sicherheitslücke durch Integer-Überlauf
      • Ausnutzung der Schwachstelle durch Integer-Überlauf
    • Pfaddurchlauf-Schwachstelle (Path Traversal)
      • Abwehrmaßnahmen gegen Path Traversal

Tag 2

Grundsätze der sicheren Implementierung

  • Injection (Einschleusung)
    • Typische SQL-Injection-Angriffsmethoden
    • Blindes und zeitbasiertes SQL-Injection
    • Schutzmethoden gegen SQL-Injection
    • Command Injection
  • Defekte Authentifizierung – Passwortmanagement
    • Übung – Schwachstellen von gehashten Passwörtern
    • Passwortverwaltung und -speicherung
    • Spezialisierte Hash-Algorithmen für die Passwortspeicherung
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS-Injection
    • Ausnutzung: Injection über andere HTML-Tags
    • Prävention von XSS
  • Fehlende funktionsstufenbezogene Zugriffssteuerung
    • Filtern von Datei-Uploads
  • Praxis der Kryptografie
    • Gewährleistung der Vertraulichkeit mit symmetrischer Kryptografie
    • Symmetrische Verschlüsselungsalgorithmen
    • Blockchiffren – Betriebsarten
    • Hash- oder Nachrichten-Digest
    • Hash-Algorithmen
    • Message Authentication Code (MAC)
    • Gewährleistung von Integrität und Authentizität mit einem symmetrischen Schlüssel
    • Gewährleistung der Vertraulichkeit mit Public-Key-Verschlüsselung
    • Daumenregel – Besitz des privaten Schlüssels
    • Typische Fehler im Passwortmanagement
    • Übung – Hard-codierte Passwörter
    • Fazit

Grundsätze der sicheren Verifikation

  • Funktionstests im Vergleich zu Sicherheitstests
  • Sicherheitslücken (Vulnerabilities)
  • Priorisierung
  • Sicherheitstests im SDLC
  • Schritte der Testplanung (Risikoanalyse)
  • Festlegung des Umfangs und Informationsgewinnung
    • Beteiligte Parteien (Stakeholder)
    • Vermögenswerte (Assets)
    • Die Angriffsfläche
    • Sicherheitsziele für das Testing
  • Threat Modeling (Bedrohungsanalyse)
    • Threat Modeling
    • Angreiferprofile
    • Bedrohungsanalyse basierend auf Attack Trees
    • Bedrohungsanalyse basierend auf Missuse/Abuse Cases
    • Missuse/Abuse Cases – ein einfaches Beispiel eines Web-Shops
    • STRIDE-per-Element-Ansatz für die Bedrohungsanalyse – MS SDL
    • Identifizierung von Sicherheitszielen
    • Diagramme – Beispiele für DFD-Elemente
    • Datenflussdiagramm – Beispiel
    • Auflistung von Bedrohungen – STRIDE und DFD-Elemente von MS SDL
    • Risikoanalyse – Klassifizierung von Bedrohungen
    • Das DREAD-Bedrohungs-/Risiko-Ratingmodell
  • Sicherheitstestmethoden und -tools
    • Allgemeine Testansätze
    • Techniken für verschiedene Phasen des SDLC
  • Code-Review
    • Code-Review für die Software-Sicherheit
    • Taint-Analyse (Nachverfolgung unsicherer Daten)
    • Heuristiken
  • Statische Codeanalyse
    • Statische Codeanalyse
    • Übung – Verwendung von Tools zur statischen Codeanalyse
  • Testen der Implementierung
    • Manuelle Laufzeittests
    • Manuelle vs. automatisierte Sicherheitstests
    • Penetrationstests
    • Lasttests (Stress Tests)
  • Fuzzing
    • Automatisierte Sicherheitstests – Fuzzing
    • Herausforderungen beim Fuzzing
  • Web-Schwachstellenscanner
    • Übung – Verwendung eines Schwachstellen-Scanners
  • Überprüfung und Härtung der Umgebung
    • Common Vulnerability Scoring System – CVSS
    • Schwachstellen-Scanner
    • Öffentliche Datenbanken
  • Fallstudie – Umgehung der Forms-Authentifizierung
    • Schwachstelle durch NULL-Byte-Terminierung
    • Die Schwachstelle zur Umgehung der Forms-Authentifizierung im Code
    • Ausnutzung der Umgehung der Forms-Authentifizierung

Wissensquellen

  • Secure-Coding-Quellen – ein Starter-Kit
  • Schwachstellen-Datenbanken
  • .NET-Richtlinien für sicheren Code auf MSDN
  • .NET-Sicherheits-Cheat-Sheets (Kurzübersichten)
  • Empfohlene Bücher – .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (3)

Kommende Kurse

Verwandte Kategorien