Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Schulungsübersicht
Tag 1
IT-Sicherheit und sichere Programmierung
- Natur der Sicherheit
- Begriffe im Zusammenhang mit IT-Sicherheit
- Definition von Risiko
- Verschiedene Aspekte der IT-Sicherheit
- Anforderungen in verschiedenen Anwendungsbereichen
- IT-Sicherheit vs. sichere Programmierung
-
Von Schwachstellen zu Botnets und Cyberkriminalität
- Natur von Sicherheitsmängeln
- Gründe für die Schwierigkeit
- Von einer infizierten Maschine bis hin zu gezielten Angriffen
-
Klassifizierung von Sicherheitsmängeln
- Landwehrs Taxonomie
- Die sieben tödlichen Sünden (The Seven Pernicious Kingdoms)
- OWASP Top Ten 2013
- OWASP Top Ten-Vergleich 2003 – 2013
Einführung in das 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-Apps
-
Ursprung des Microsoft SDL...
- Sicherheitszeitstrahl bei Microsoft...
- Welche Apps müssen das SDL einhalten?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Vor-SDL-Anforderungen: Sicherheitsschulung
- 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
- Nach-SDL-Anforderung: Reaktion
- SDL-Prozessleitfaden für LOB-Apps
- SDL-Leitfaden für Agile Methodologien
- Sichere Softwareentwicklung erfordert Prozessverbesserung
Prinzipien des sicheren Designs
-
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 und der Belange der Anwendung
-
Tiefschutzprinzip (Defense in depth)
- SDL-Kernprinzip: Tiefschutz (Defense in Depth)
- Tiefschutz (Defense in depth) – Beispiel
-
Least-Privilege-Prinzip
- Least Privilege – Beispiel
-
Sichere Standardwerte
- Sichere Standardwerte – Beispiele
Prinzipien der sicheren Implementierung
- Agenda
- Microsoft Security Development Lifecycle (SDL)
-
Grundlagen zu Buffer-Overflows
- Intel 80x86-Prozessoren – Hauptregister
- Das Speicheradresslayout
- Der Funktionsaufrufmechanismus in C/C++ auf x86
- Lokale Variablen und der Stack-Rahmen
-
Stack-Overflow
- Buffer-Overflow auf dem Stack
- Übungen – Einführung
- Übung BOFIntro
- Übung BOFIntro – Bestimmung des Stack-Layouts
- Übung BOFIntro – ein einfacher Exploit
-
Eingabevalidierung
- Konzepte der Eingabevalidierung
-
Ganzzahlprobleme
- Darstellung negativer Ganzzahlen
- Ganzzahlüberlauf (Integer Overflow)
- Arithmetischer Überlauf – Rate die Ausgabe!
- Ü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
- Erkennung 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 – Ganzzahlüberlauf in .NET
- Eine echte Schwachstelle für Ganzzahlüberlauf
- Ausnutzen der Schwachstelle für Ganzzahlüberlauf
-
Path-Traversal-Schwachstelle
- Abwehr von Path Traversal
Tag 2
Prinzipien der sicheren Implementierung
-
Injektion
- Typische SQL-Injection-Angriffsmethoden
- Blind und zeitbasiert SQL Injection
- SQL-Injection-Schutzmethoden
- Command Injection
-
Fehlende Authentifizierung – Passwortverwaltung
- Übung – Schwäche gehashter Passwörter
- Passwortverwaltung und -speicherung
- Spezialisierte Hash-Algorithmen für die Passwortspeicherung
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS-Injection
- Ausnutzung: Injektion über andere HTML-Tags
- XSS-Prävention
-
Fehlende funktionsspezifische Zugriffskontrolle
- Filterung von Datei-Uploads
-
Praktische Kryptographie
- Vertraulichkeit mit symmetrischer Kryptographie
- Symmetrische Verschlüsselungsalgorithmen
- Blockchiffren – Betriebsmodi
- Hash oder Message Digest
- Hash-Algorithmen
- Message Authentication Code (MAC)
- Integrität und Authentizität mit einem symmetrischen Schlüssel
- Vertraulichkeit mit Public-Key-Verschlüsselung
- Faustregel – Besitz des privaten Schlüssels
- Typische Fehler in der Passwortverwaltung
- Übung – Hardkodierte Passwörter
- Schlussfolgerung
Prinzipien der sicheren Verifikation
- Funktionstest vs. Sicherheitstest
- Sicherheitslücken
- Priorisierung
- Sicherheitstest im SDLC
- Schritte der Testplanung (Risikomanalyse)
-
Umfang und Informationsbeschaffung
- Stakeholder
- Assets (Wertschöpfungsmittel)
- Die Angriffsfläche
- Sicherheitsziele für Tests
-
Threat Modeling
- Threat Modeling
- Angreiferprofile
- Threat Modeling basierend auf Attack Trees
- Threat Modeling basierend auf Misuse-/Abuse-Fällen
- Misuse-/Abuse-Fälle – ein einfaches Web-Shop-Beispiel
- STRIDE-nach-Element-Ansatz zum Threat Modeling – MS SDL
- Identifizierung von Sicherheitszielen
- Diagramme – Beispiele für DFD-Elemente
- Datenflussdiagramm – Beispiel
- Threat Enumeration – MS SDLs STRIDE und DFD-Elemente
- Risikoanalyse – 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 Laufzeitverifikation
- Manuelle vs. automatisierte Sicherheitstests
- Penetrationstests
- Belastungstests
-
Fuzzing
- Automatisierte Sicherheitstests – Fuzzing
- Herausforderungen des Fuzzings
-
Web-Schwachstellenscanner
- Übung – Verwendung eines Schwachstellenscanners
-
Überprüfung und Härtung der Umgebung
- Common Vulnerability Scoring System – CVSS
- Schwachstellenscanner
- Öffentliche Datenbanken
-
Fallstudie – Bypass der Forms-Authentifizierung
- NULL-Byte-Terminierungsschwachstelle
- Die Bypass-Schwachstelle der Forms-Authentifizierung im Code
- Ausnutzung des Bypass der Forms-Authentifizierung
Wissensquellen
- Quellen für sichere Programmierung – eine Starter-Sammlung
- Schwachstellendatenbanken
- .NET-Richtlinien für sichere Programmierung auf MSDN
- .NET-Schnellreferenzen für sichere Programmierung
- Empfohlene Bücher – .NET und ASP.NET
14 Stunden
Erfahrungsberichte (3)
Die Leidenschaft mit der der Trainer sein Wissen verbreitet.
Christoph Weiland - Regionalverband Saarbrucken
Kurs - .NET, C# and ASP.NET Security Development
Erfahrungstechnik, es ist das Wissen und die wertvollen Kenntnisse des Lehrers.
Carey Fan - Logitech
Kurs - C/C++ Secure Coding
Maschinelle Übersetzung
Das Wissen des Trainers war sehr hoch – er wusste, worüber er sprach, und konnte unsere Fragen beantworten.
Adam - Fireup.PRO
Kurs - Advanced Java Security
Maschinelle Übersetzung