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
Erfahrungsberichte (5)
Mehrere Beispiele für jedes Modul und großartiges Wissen des Trainers.
Sebastian - BRD
Kurs - Secure Developer Java (Inc OWASP)
Maschinelle Übersetzung
Modul 3 Anwendungsangriffe und -ausnutzungen, XSS, SQL-Injektion Modul 4 Serverangriffe und -ausnutzungen, DoS, BOF
Tshifhiwa - Vodacom
Kurs - How to Write Secure Code
Maschinelle Übersetzung
Allgemeine Kursinformationen
Paulo Gouveia - EID
Kurs - C/C++ Secure Coding
Maschinelle Übersetzung
Das Fachwissen des Trainers war ausgezeichnet, und die Art und Weise, wie die Sitzungen strukturiert waren, damit das Publikum den Demonstrationen folgen konnte, half wirklich dabei, dieses Wissen zu vertiefen, im Vergleich dazu, einfach nur zuzuhören.
Jack Allan - RSM UK Management Ltd.
Kurs - Secure Developer .NET (Inc OWASP)
Maschinelle Übersetzung
Es war perfekt.
Zola Madolo - Vodacom
Kurs - Android Security
Maschinelle Übersetzung