Kontakt aufnehmen

Schulungsübersicht

Tag 1

IT-Sicherheit und sicheres Programmieren

  • Was unter Sicherheit zu verstehen ist
  • Begriffe aus der IT-Sicherheit
  • Definition von Risiken
  • Die verschiedenen Aspekte der IT-Sicherheit
  • Anforderungen je nach Anwendungsbereich
  • Unterschiede zwischen allgemeiner IT-Sicherheit und sicherem Programmieren
  • Von Schwachstellen zu Botnetzen und Cyberkriminalität
    • Arten von Sicherheitsmängeln
    • Gründe für die Entstehung solcher Mängel
    • Von einem infizierten Computer zu gezielten Angriffen
    • Klassifizierung von Sicherheitsmängeln
      • Landwehrs Taxonomie
      • Die Sieben verderblichen Bereiche
      • OWASP Top Ten 2013
      • Vergleich der OWASP Top Ten von 2003 und 2013

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

    • Verlauf des Kurses
    • Anwendungen unter Angriff...
      • Entwicklung der Cyberkriminalität
      • Heutzutage werden vor allem Anwendungen ins Visier genommen
      • Die meisten Schwachstellen finden sich in kleinen, von unabhängigen Entwicklern erstellten Programmen
    • Ursprung des Microsoft SDL...
      • Die Sicherheitsgeschichte bei Microsoft...
      • Welche Anwendungen müssen sich am SDL orientieren?
    • Der Microsoft Secure Development Lifecycle (SDL)
      • Grundlagen des Microsoft Secure Development Lifecycle
      • Voraussetzung vor dem SDL: Sicherheitsschulungen
      • Phase 1: Anforderungsanalyse
      • Phase 2: Design
      • Phase 3: Implementierung
      • Phase 4: Prüfung
      • Phase 5: Veröffentlichung – Notfallplanung
      • Phase 5: Veröffentlichung – finale Sicherheitsprüfung
      • Phase 5: Veröffentlichung – Archivierung
      • Nach-SDL-Anforderung: Reaktion bei Vorfällen
      • Richtlinien zur SDL-Implementierung für geschäftskritische Anwendungen
      • SDL-Leitlinien speziell für agile Entwicklungsmethoden
      • Sicheres Programmieren erfordert kontinuierliche Prozessverbesserung

    Prinzipien des sicheren Designs

    • Angriffsfläche
      • Minimierung der Angriffsfläche
      • Ein konkretes Beispiel zur Angriffsfläche
      • Analyse von Angriffsflächen
      • Weitere Praxisbeispiele zur Reduzierung der Angriffsfläche
    • Datenschutz
      • Grundlagen zum Schutz personenbezogener Daten
      • Verständnis von Anwendungsverhalten und damit verbundenen Risiken
    • Verteidigung in der Tiefe
      • Grundprinzip des SDL: Verteidigung in der Tiefe
      • Ein konkretes Beispiel zu Verteidigung in der Tiefe
    • Prinzip der geringsten Berechtigungen
      • Praktisches Beispiel zum geringsten Privilegienprinzip
    • Sichere Standardeinstellungen
      • Beispiele für sichere Standardkonfigurationen

    Prinzipien einer sicheren Implementierung

    • Verlauf des Abschnitts
    • Grundlagen des Microsoft Secure Development Lifecycle (SDL)
    • Einführung in Pufferüberläufe
      • Hauptregister der Intel-80x86-Prozessoren
      • Aufbau von Speicheradressen
      • Aufrufmechanismus für Funktionen in C/C++ auf x86-Plattformen
      • Lokale Variablen und der Stack-Frame
      • Pufferüberläufe im Stack
        • Ursachen von Pufferüberläufen auf dem Stack
        • Einführung in praktische Übungen
        • Übung BOFIntro
        • Analyse des Stack-Aufbaus bei der Übung BOFIntro
        • Erstellung einer einfachen Exploit-Software in der Übung BOFIntro
    • Validierung von Eingabedaten
      • Grundprinzipien der Eingabeprüfung
      • Probleme bei ganzzahligen Werten
        • Repräsentation negativer Zahlen
        • Ganzzahl-Überläufe
        • Berechnungen mit möglichen Überläufen – Erraten des Ergebnisses!
        • Übung IntOverflow
        • Wie groß ist Math.Abs(int.MinValue)?
      • Abhilfen gegen Ganzzahl-Probleme
        • Typische Lösungsansätze zur Vermeidung von Überläufen
        • Additionsüberlauf vermeiden
        • Multiplikationsüberlauf verhindern
        • Erkennung von Überläufen mittels des Schlüsselworts „checked“ in C#
        • Übung: Einsatz des Schlüsselworts „checked“ in C#
        • Ausnahmen bei Überläufen in C#
      • Fallstudie: Ganzzahl-Überlauf im .NET-Framework
        • Ein reales Beispiel für einen ganzzahligen Überlauf
        • Wie ein solcher Fehler ausgenutzt werden kann
      • Sicherheit gegen Pfaddurchläufe (Path Traversal)
        • Gegenmaßnahmen bei solchen Schwachstellen

    Tag 2

    Prinzipien einer sicheren Implementierung

    • SQL-Injection-Techniken
      • Häufig angewandte Methoden zur SQL-Injection
      • Blind SQL Injection und Zeitbasiertes Ausnutzen
      • Vorbeugende Maßnahmen gegen SQL-Injektionen
      • Angriffe mittels Kommandozeile
    • Schwächen bei Authentifizierung – Passwortmanagement
      • Übung: Fehlerquellen bei der Speicherung gehashter Passwörter
      • Strategien zur Verwaltung und Sicherheit von Passwörtern
      • Gezielte Hash-Algorithmen für die Speicherung von Passwörtern
    • Cross-Site Scripting (XSS)
      • Grundlagen zu Cross-Site Scripting
      • CSS-Injection
      • Ausnutzung durch weitere HTML-Elemente
      • Vorbeugungsmaßnahmen gegen XSS
    • Fehlende Zugriffskontrolle für Funktionen
      • Filterung beim Hochladen von Dateien
    • Grundlagen der Kryptographie
      • Geheimhaltung durch symmetrische Verschlüsselung sicherstellen
      • Gängige Algorithmen der symmetrischen Verschlüsselung
      • Blockchiffren und Betriebsmodi
      • Hash-Funktionen bzw. Prüfsummen
      • Bekannte Hash-Algorithmen
      • Message Authentication Code (MAC)
      • Integrität und Authentizität mittels symmetrischer Schlüssel sicherstellen
      • Vertraulichkeit durch asymmetrische Verschlüsselung gewährleisten
      • Grundsatz: Einzigartigkeit privater Schlüssel
      • Typische Fehlerquellen im Passwortmanagement
      • Übung: Umgang mit fest verdrahteten Passwörtern
      • Fazit zum Thema Kryptographie

    Prinzipien der sicheren Verifikation

    • Unterschiede zwischen Funktions- und Sicherheitstests
    • Typische Sicherheitsschwachstellen
    • Bewertung der Bedeutung von Schwachstellen
    • Rolle der Sicherheitstests im SDLC
    • Schritte zur Testplanung (Risikoanalyse)
    • Definition des Prüfumfangs und Datensammlung
      • Betroffene Parteien
      • Relevante Assets
      • Identifikation der Angriffsfläche
      • Sicherheitsziele für die Testdurchführung
    • Bedrohungsmodellierung
      • Grundlagen der Bedrohungsmodellierung
      • Profile potenzieller Angreifer
      • Modellierung auf Basis von Angriffsbäumen
      • Bedrohungsmodellierung mittels Missbrauchs- und Abusefällen
      • Ein einfaches Beispiel: Eine Web-Shop-Anwendung
      • Vorgehensweise nach STRIDE gemäß MS SDL
      • Festlegung von Sicherheitszielen
      • Darstellung von Datenflussdiagrammen – Beispiele
      • Erstellung eines konkreten Datenflussdiagramms
      • Bedrohungen gemäß STRIDE und Diagrammelemente identifizieren
      • Risikoanalyse: Einordnung von Schwachstellen
      • DREAD – ein Modell zur Bewertung der Schweregraden von Bedrohungen
    • Verfahren und Werkzeuge des Sicherheitstestens
      • Allgemeine Teststrategien
      • Spezifische Techniken zu den einzelnen Phasen des SDLC
    • Code-Review
      • Sicherheitsbezogener Review von Quellcode
      • Taint-Analyse
      • Heuristische Ansätze
    • Statische Codeanalyse
      • Grundlagen der statischen Analyse
      • Übung: Anwendung von Werkzeugen zur statischen Analyse
    • Überprüfung der Implementierung während der Laufzeit
      • Manuelles Testen zur Laufzeitsicherheit
      • Vergleich zwischen manuellen und automatisierten Sicherheitstests
      • Penetrationstests
      • Stress-Tests
    • Fuzzing
      • Automatisiertes Testen mittels Fuzzing
      • Besonderheiten und Herausforderungen bei der Fuzzing-Anwendung
    • Web-Schwachstellenscanner
      • Übung: Arbeiten mit Scanner-Tools für Schwachstellen
    • Prüfung und Absicherung der Umgebung
      • Common Vulnerability Scoring System – CVSS
      • Typische Schwachstellenscanner
      • Öffentliche Datenbanken zu Sicherheitslücken
    • Fallstudie: Umgehung der Formular-Authentifizierung
      • Die Sicherheitslücke durch „NULL-Byte-Terminierung“
      • Konkrete Kodierungsprobleme, die zur Umgehung der Authentifizierung führen
      • Wie diese Schwachstelle ausgenutzt werden kann

    Quellen zur Vertiefung

    • Ausgangspunkte zum Thema sicheres Programmieren – ein Startpaket
    • Datenbanken zu bekannten Schwachstellen
    • Leitlinien für sicheres Programmieren im .NET-Framework auf MSDN
    • Hilfekarten für .NET-Programmierer zum Thema Sicherheit
    • Empfehlenswerte Bücher – speziell zu .NET und ASP.NET
 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (3)

Kommende Kurse

Verwandte Kategorien