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 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 /ul>
-
Klassifizierung von Sicherheitsmängeln
- Landwehrs Taxonomie
- Die Sieben verderblichen Bereiche /li>
- OWASP Top Ten 2013 /li>
- 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 /li>
- Heutzutage werden vor allem Anwendungen ins Visier genommen
- Die meisten Schwachstellen finden sich in kleinen, von unabhängigen Entwicklern erstellten Programmen /li>
-
Ursprung des Microsoft SDL...
- Die Sicherheitsgeschichte bei Microsoft...
- Welche Anwendungen müssen sich am SDL orientieren? /li>
-
Der Microsoft Secure Development Lifecycle (SDL)
- Grundlagen des Microsoft Secure Development Lifecycle
- Voraussetzung vor dem SDL: Sicherheitsschulungen /li>
- Phase 1: Anforderungsanalyse /li>
- Phase 2: Design /li>
- Phase 3: Implementierung /li>
- Phase 4: Prüfung /li>
- Phase 5: Veröffentlichung – Notfallplanung /li>
- Phase 5: Veröffentlichung – finale Sicherheitsprüfung /li>
- Phase 5: Veröffentlichung – Archivierung /li>
- Nach-SDL-Anforderung: Reaktion bei Vorfällen /li>
- Richtlinien zur SDL-Implementierung für geschäftskritische Anwendungen /li>
- SDL-Leitlinien speziell für agile Entwicklungsmethoden /li>
- Sicheres Programmieren erfordert kontinuierliche Prozessverbesserung /li>
Prinzipien des sicheren Designs
-
Angriffsfläche
- Minimierung der Angriffsfläche /li>
- Ein konkretes Beispiel zur Angriffsfläche /li>
- Analyse von Angriffsflächen /li>
- Weitere Praxisbeispiele zur Reduzierung der Angriffsfläche /li>
-
Datenschutz
- Grundlagen zum Schutz personenbezogener Daten /li>
- Verständnis von Anwendungsverhalten und damit verbundenen Risiken /li>
-
Verteidigung in der Tiefe
- Grundprinzip des SDL: Verteidigung in der Tiefe /li>
- Ein konkretes Beispiel zu Verteidigung in der Tiefe /li>
-
Prinzip der geringsten Berechtigungen
- Praktisches Beispiel zum geringsten Privilegienprinzip /li>
-
Sichere Standardeinstellungen
- Beispiele für sichere Standardkonfigurationen /li>
Prinzipien einer sicheren Implementierung
- Verlauf des Abschnitts /li>
- Grundlagen des Microsoft Secure Development Lifecycle (SDL) /li>
-
Einführung in Pufferüberläufe
- Hauptregister der Intel-80x86-Prozessoren /li>
- Aufbau von Speicheradressen /li>
- Aufrufmechanismus für Funktionen in C/C++ auf x86-Plattformen /li>
- Lokale Variablen und der Stack-Frame /li>
-
Pufferüberläufe im Stack
- Ursachen von Pufferüberläufen auf dem Stack /li>
- Einführung in praktische Übungen /li>
- Übung BOFIntro /li>
- Analyse des Stack-Aufbaus bei der Übung BOFIntro /li>
- Erstellung einer einfachen Exploit-Software in der Übung BOFIntro /li>
-
Validierung von Eingabedaten
- Grundprinzipien der Eingabeprüfung /li>
-
Probleme bei ganzzahligen Werten
- Repräsentation negativer Zahlen /li>
- Ganzzahl-Überläufe /li>
- Berechnungen mit möglichen Überläufen – Erraten des Ergebnisses! /li>
- Übung IntOverflow /li>
- Wie groß ist Math.Abs(int.MinValue)? /li>
-
Abhilfen gegen Ganzzahl-Probleme
- Typische Lösungsansätze zur Vermeidung von Überläufen /li>
- Additionsüberlauf vermeiden /li>
- Multiplikationsüberlauf verhindern /li>
- Erkennung von Überläufen mittels des Schlüsselworts „checked“ in C# /li>
- Übung: Einsatz des Schlüsselworts „checked“ in C# /li>
- Ausnahmen bei Überläufen in C# /li>
-
Fallstudie: Ganzzahl-Überlauf im .NET-Framework
- Ein reales Beispiel für einen ganzzahligen Überlauf /li>
- Wie ein solcher Fehler ausgenutzt werden kann /li>
-
Sicherheit gegen Pfaddurchläufe (Path Traversal)
- Gegenmaßnahmen bei solchen Schwachstellen /li>
Tag 2
Prinzipien einer sicheren Implementierung
-
SQL-Injection-Techniken
- Häufig angewandte Methoden zur SQL-Injection /li>
- Blind SQL Injection und Zeitbasiertes Ausnutzen /li>
- Vorbeugende Maßnahmen gegen SQL-Injektionen /li>
- Angriffe mittels Kommandozeile /li>
-
Schwächen bei Authentifizierung – Passwortmanagement
- Übung: Fehlerquellen bei der Speicherung gehashter Passwörter /li>
- Strategien zur Verwaltung und Sicherheit von Passwörtern /li>
- Gezielte Hash-Algorithmen für die Speicherung von Passwörtern /li>
-
Cross-Site Scripting (XSS)
- Grundlagen zu Cross-Site Scripting /li>
- CSS-Injection /li>
- Ausnutzung durch weitere HTML-Elemente /li>
- Vorbeugungsmaßnahmen gegen XSS /li>
-
Fehlende Zugriffskontrolle für Funktionen
- Filterung beim Hochladen von Dateien /li>
-
Grundlagen der Kryptographie
- Geheimhaltung durch symmetrische Verschlüsselung sicherstellen /li>
- Gängige Algorithmen der symmetrischen Verschlüsselung /li>
- Blockchiffren und Betriebsmodi /li>
- Hash-Funktionen bzw. Prüfsummen /li>
- Bekannte Hash-Algorithmen /li>
- Message Authentication Code (MAC) /li>
- Integrität und Authentizität mittels symmetrischer Schlüssel sicherstellen /li>
- Vertraulichkeit durch asymmetrische Verschlüsselung gewährleisten /li>
- Grundsatz: Einzigartigkeit privater Schlüssel /li>
- Typische Fehlerquellen im Passwortmanagement /li>
- Übung: Umgang mit fest verdrahteten Passwörtern /li>
- Fazit zum Thema Kryptographie /li>
Prinzipien der sicheren Verifikation
- Unterschiede zwischen Funktions- und Sicherheitstests /li>
- Typische Sicherheitsschwachstellen /li>
- Bewertung der Bedeutung von Schwachstellen /li>
- Rolle der Sicherheitstests im SDLC /li>
- Schritte zur Testplanung (Risikoanalyse) /li>
-
Definition des Prüfumfangs und Datensammlung
- Betroffene Parteien /li>
- Relevante Assets /li>
- Identifikation der Angriffsfläche /li>
- Sicherheitsziele für die Testdurchführung /li>
-
Bedrohungsmodellierung
- Grundlagen der Bedrohungsmodellierung /li>
- Profile potenzieller Angreifer /li>
- Modellierung auf Basis von Angriffsbäumen /li>
- Bedrohungsmodellierung mittels Missbrauchs- und Abusefällen /li>
- Ein einfaches Beispiel: Eine Web-Shop-Anwendung /li>
- Vorgehensweise nach STRIDE gemäß MS SDL /li>
- Festlegung von Sicherheitszielen /li>
- Darstellung von Datenflussdiagrammen – Beispiele /li>
- Erstellung eines konkreten Datenflussdiagramms /li>
- Bedrohungen gemäß STRIDE und Diagrammelemente identifizieren /li>
- Risikoanalyse: Einordnung von Schwachstellen /li>
- DREAD – ein Modell zur Bewertung der Schweregraden von Bedrohungen /li>
-
Verfahren und Werkzeuge des Sicherheitstestens
- Allgemeine Teststrategien /li>
- Spezifische Techniken zu den einzelnen Phasen des SDLC /li>
-
Code-Review
- Sicherheitsbezogener Review von Quellcode /li>
- Taint-Analyse /li>
- Heuristische Ansätze /li>
-
Statische Codeanalyse
- Grundlagen der statischen Analyse /li>
- Übung: Anwendung von Werkzeugen zur statischen Analyse /li>
-
Überprüfung der Implementierung während der Laufzeit
- Manuelles Testen zur Laufzeitsicherheit /li>
- Vergleich zwischen manuellen und automatisierten Sicherheitstests /li>
- Penetrationstests /li>
- Stress-Tests /li>
-
Fuzzing
- Automatisiertes Testen mittels Fuzzing /li>
- Besonderheiten und Herausforderungen bei der Fuzzing-Anwendung /li>
-
Web-Schwachstellenscanner
- Übung: Arbeiten mit Scanner-Tools für Schwachstellen /li>
-
Prüfung und Absicherung der Umgebung
- Common Vulnerability Scoring System – CVSS /li>
- Typische Schwachstellenscanner /li>
- Öffentliche Datenbanken zu Sicherheitslücken /li>
-
Fallstudie: Umgehung der Formular-Authentifizierung
- Die Sicherheitslücke durch „NULL-Byte-Terminierung“ /li>
- Konkrete Kodierungsprobleme, die zur Umgehung der Authentifizierung führen /li>
- Wie diese Schwachstelle ausgenutzt werden kann /li>
Quellen zur Vertiefung
- Ausgangspunkte zum Thema sicheres Programmieren – ein Startpaket /li>
- Datenbanken zu bekannten Schwachstellen /li>
- Leitlinien für sicheres Programmieren im .NET-Framework auf MSDN /li>
- Hilfekarten für .NET-Programmierer zum Thema Sicherheit /li>
- Empfehlenswerte Bücher – speziell zu .NET und ASP.NET /li>
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