Schulungsübersicht
Tag 1
- IT-Sicherheit und sichere Codierung
- Art der Sicherheit
- Begriffe rund um die IT-Sicherheit
- Definition von Risiko
- Verschiedene Aspekte der IT-Sicherheit
- Anforderungen unterschiedlicher Anwendungsbereiche
- IT-Sicherheit vs. sichere Codierung
- Von Schwachstellen über Botnets bis hin zu Cyberkriminalität
- Art der Sicherheitslücken
- Gründe für die Schwierigkeit
- Von einem infizierten Computer bis hin zu gezielten Angriffen
- Klassifizierung von Sicherheitslücken
- Taxonomie der Landwehr
- Die sieben verderblichen Königreiche
- OWASP Top Ten 2013
- OWASP Top-Ten-Vergleich 2003 – 2013
- Einführung in den Microsoft® Security Development Lifecycle (SDL)
- Agenda
- Angegriffene Anwendungen...
- Entwicklung der Cyberkriminalität
- Angriffe konzentrieren sich auf Anwendungen
- Die meisten Schwachstellen liegen in kleineren ISV-Apps
- Ursprünge des Microsoft SDL...
- Sicherheitszeitleiste unter Microsoft...
- Welche Apps sind erforderlich, um SDL zu befolgen?
- Microsoft Sicherheitsentwicklungslebenszyklus (SDL)
- Microsoft Sicherheitsentwicklungslebenszyklus (SDL)
- Anforderungen vor SDL: Sicherheitsschulung
- Phase Eins: Anforderungen
- Phase Zwei: Design
- Phase drei: Umsetzung
- Phase vier: Verifizierung
- Phase fünf: Veröffentlichung – Reaktionsplan
- Phase Fünf: Veröffentlichung – Abschließende Sicherheitsüberprüfung
- Phase Fünf: Veröffentlichung – Archiv
- Post-SDL-Anforderung: Antwort
- SDL-Prozessleitfaden für LOB-Apps
- SDL-Leitfaden für Agile-Methoden
- Sichere Softwareentwicklung erfordert Prozessverbesserung
- Sichere Designprinzipien
- Angriffsfläche
- Reduzierung der Angriffsfläche
- Angriffsfläche – ein Beispiel
- Angriffsflächenanalyse
- Reduzierung der Angriffsfläche – Beispiele
- Privatsphäre
- Privatsphäre
- Anwendungsverhalten und Bedenken verstehen
- Verteidigung in der Tiefe
- SDL-Grundprinzip: Defense In Depth
- Tiefenverteidigung – Beispiel
- Prinzip der geringsten Privilegien
- Geringstes Privileg – Beispiel
- Sichere Standardeinstellungen
- Sichere Standardeinstellungen – Beispiele
- Angriffsfläche
- Sichere Umsetzungsprinzipien
- Agenda
- Microsoft Sicherheitsentwicklungslebenszyklus (SDL)
- Grundlagen zum Pufferüberlauf
- Intel 80x86-Prozessoren – Hauptregister
- Das Speicheradressenlayout
- Der Funktionsaufrufmechanismus in C/C++ auf x86
- Die lokalen Variablen und der Stack-Frame
- Paketüberfluss
- Pufferüberlauf auf dem Stapel
- Übungen – Einführung
- Übung BOFIntro
- Übung BOFIntro – Bestimmen Sie das Stapellayout
- Übung BOFIntro – ein einfacher Exploit
- Eingabevalidierung
- Konzepte zur Eingabevalidierung
- Ganzzahlige Probleme
- Darstellung negativer Ganzzahlen
- Ganzzahlüberlauf
- Arithmetischer Überlauf – erraten Sie die Ausgabe!
- Übung IntOverflow
- Was ist der Wert von Math.Abs(int.MinValue)?
- Ganzzahlige Problemminderung
- Ganzzahlige Problemminderung
- Arithmetischen Überlauf vermeiden – Addition
- Arithmetischen Überlauf vermeiden – Multiplikation
- Erkennen eines Überlaufs mit dem geprüften Schlüsselwort in C#
- Übung – Verwendung des geprüften Schlüsselworts in C#
- Ausnahmen, die durch Überläufe in C# ausgelöst werden
- Fallstudie – Ganzzahlüberlauf in .NET
- Eine reale Schwachstelle durch Ganzzahlüberlauf
- Ausnutzung der Schwachstelle durch Ganzzahlüberlauf
- Schwachstelle beim Pfaddurchlauf
- Minderung der Pfaddurchquerung
Tag 2
- Sichere Umsetzungsprinzipien
- Injektion
- Typische SQL Injektionsangriffsmethoden
- Blinde und zeitbasierte SQL Injektion
- SQL Injektionsschutzmethoden
- Befehlsinjektion
- Defekte Authentifizierung – Passwortverwaltung
- Übung – Schwäche von gehashten Passwörtern
- Passwortverwaltung und -speicherung
- Spezielle Hash-Algorithmen zur Passwortspeicherung
- Cross-Site-Scripting (XSS)
- Cross-Site-Scripting (XSS)
- CSS Injektion
- Ausbeutung: Einschleusung durch andere HTML Tags
- XSS-Prävention
- Fehlende Zugriffskontrolle auf Funktionsebene
- Datei-Uploads filtern
- Praktische Kryptographie
- Gewährleistung der Vertraulichkeit durch symmetrische Kryptografie
- Symmetrische Verschlüsselungsalgorithmen
- Blockchiffren – Funktionsweisen
- Hash oder Nachrichtenauszug
- Hash-Algorithmen
- Nachrichtenauthentifizierungscode (MAC)
- Bereitstellung von Integrität und Authentizität mit einem symmetrischen Schlüssel
- Gewährleistung der Vertraulichkeit durch Verschlüsselung mit öffentlichem Schlüssel
- Faustregel – Besitz eines privaten Schlüssels
- Typische Fehler bei der Passwortverwaltung
- Übung – Hartcodierte Passwörter
- Abschluss
- Injektion
- Sichere Verifizierungsprinzipien
- Funktionstests vs. Sicherheitstests
- Sicherheitslücken
- Priorisierung
- Sicherheitstests im SDLC
- Schritte der Testplanung (Risikoanalyse)
- Scoping und Informationsbeschaffung
- Stakeholder
- Vermögenswerte
- Die Angriffsfläche
- Sicherheitsziele zum Testen
- Bedrohungsmodellierung
- Bedrohungsmodellierung
- Angreiferprofile
- Bedrohungsmodellierung basierend auf Angriffsbäumen
- Bedrohungsmodellierung basierend auf Missbrauchsfällen
- Missbrauchsfälle – ein einfaches Webshop-Beispiel
- STRIDE-Ansatz pro Element zur Bedrohungsmodellierung – MS SDL
- Identifizierung von Sicherheitszielen
- Diagrammerstellung – Beispiele für DFD-Elemente
- Datenflussdiagramm – Beispiel
- Bedrohungsaufzählung – STRIDE- und DFD-Elemente von MS SDL
- Risikoanalyse – Klassifizierung von Bedrohungen
- Das DREAD-Bedrohungs-/Risiko-Ranking-Modell
- Techniken und Tools für Sicherheitstests
- Allgemeine Testansätze
- Techniken für verschiedene Schritte des SDLC
- Code-Review
- Codeüberprüfung für Softwaresicherheit
- Taint-Analyse
- Heuristiken
- Statische Codeanalyse
- Statische Codeanalyse
- Statische Codeanalyse
- Übung – Verwendung statischer Code-Analysetools
- Testen der Implementierung
- Manuelle Laufzeitüberprüfung
- Manuelle vs. automatisierte Sicherheitstests
- Penetrationstests
- Stresstests
- Fuzzing
- Automatisierte Sicherheitstests – Fuzzing
- Herausforderungen des Fuzzing
- Web-Schwachstellenscanner
- Übung – Verwendung eines Schwachstellenscanners
- Überprüfung und Abhärtung der Umgebung
- Common Vulnerability Scoring System – CVSS
- Schwachstellenscanner
- Öffentliche Datenbanken
- Fallstudie – Umgehung der Formularauthentifizierung
- Sicherheitslücke bei NULL-Byte-Beendigung
- Die Sicherheitslücke „Forms Authentication Bypass“ im Code
- Ausnutzung der Umgehung der Formularauthentifizierung
- Wissensquellen
- Sichere Codierungsquellen – ein Starter-Kit
- Schwachstellendatenbanken
- .NET-Richtlinien für sichere Codierung bei MSDN
- Spickzettel für sichere .NET-Codierung
- Empfohlene Bücher – .NET und ASP.NET
Erfahrungsberichte (5)
Mehrere Beispiele für jedes Modul und großes Wissen des Trainers.
Sebastian - BRD
Kurs - Secure Developer Java (Inc OWASP)
Maschinelle Übersetzung
Modul3 Angriffe auf Anwendungen und Exploits, XSS, SQL Injektion Modul4 Angriffe auf Server und Exploits, DOS, BOF
Tshifhiwa - Vodacom
Kurs - How to Write Secure Code
Maschinelle Übersetzung
Allgemeine Kursinformationen
Paulo Gouveia - EID
Kurs - C/C++ Secure Coding
Maschinelle Übersetzung
The trainer's subject knowledge was excellent, and the way the sessions were set out so that the audience could follow along with the demonstrations really helped to cement that knowledge, compared to just sitting and listening.
Jack Allan - RSM UK Management Ltd.
Kurs - Secure Developer .NET (Inc OWASP)
Nothing it was perfect.