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 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
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