Secure Development Training für Entwickler
Online-Training mit eigener LAB-Umgebung für praktische Übungen.
Kunden, die ihre Sicherheit mit Cyber LABs stärken
Lieber geschulte Entwickler als Software mit RCE-Schwachstellen
Kapitelübersicht Modul 1: Secure Development Lifecycle
Intro & Let’s hack
Einführung & Grundlagen: Wie läuft das Secure-Development-Training ab. Warum ist Sicherheit im gesamten Software-Development-Lifecycle so wichtig.
Dazu gleich etwas Hacking zum Warmwerden:
LAB-Übung: zu schlechtem Exception-Handling und Password-Cracking
Die Übung zeigt, welche Auswirkungen selbst unscheinbare Sicherheitslücken haben können.
Grundlagen
Klärung der wichtigsten Secure Development Grundbegriffe:
- Die Schutzziele in der CIA-Triade: Confidentiality (Vertraulichkeit), Integrity (Integrität) und Availability (Verfügbarkeit)
- Die Security-Prinzipien im Secure Development, um diese CIA-Schutzziele zu erreichen: Traue keinem Input, halte Security einfach, minimiere die Angriffsfläche, setze „Defense in Depth“ um, benutze minimale Rechte, sei „Secure by Default“ und löse Security-Probleme immer gründlich
Implementierungsphase
- Authentication: Welche Fehler werden bei der Authentifizierung oft gemacht und mit welchen einfachen Secure-Development-Mitteln können Entwickler hier die Sicherheit deutlich erhöhen
- Authorization (Zugriffskontrolle): Was ist der Unterschied zu Authentifizierung
LAB-Übung: Zugriff auf Daten über Direct-Object-Reference. Wie können Entwickler solche Schwachstellen verhindern und wie sieht eine angemessene Zugriffskontrolle aus - Session-Management: Welche Bedrohungen existieren rund um das Session-Management
LAB-Übung: Übernahme einer Session durch Session-Fixation. Wie kann das Session-Management sicher gestaltet werden - Input-Validation, Output-Sanitization und Injection: Was ist eine Injection und welche Formen gibt es
LAB-Übung: Datenmanipulation und Löschung mittels SQL-Injection. Mit welchen Secure Development Mitteln lassen sich Injections verhindern - Cross-Site-Scripting: Welche Arten von Cross-Site-Scripting gibt es
LAB-Übung: zu persistentem Cross-Site-Scripting. Welche Abwehrmaßnahmen sind wirksam. - Kryptographie & Secrets-Management: Welche Arten von Secrets gibt es und welche Formen nehmen sie an (“at rest”, „in transit“ und „in memory“)
LAB-Übung: Systemzugriff über File-Inclusion. Was ist der Unterschied zwischen Verschlüsselung und Enkodierung
LAB-Übung: Dekodierung eines Passwortes in einer Config-Datei. Tipps zum Umgang mit Secrets. - Remote-Code-Execution:
LAB-Übung: Webshell upload. Warum haben RCE-Schwachstellen derart katastrophale Auswirkungen. Wie kann der “Defence in Depth“-Ansatz im Secure Development Lifecycle solche Auswirkungen verringern - Exceptions & Error-Handling: Wie nutzen Hacker Fehlermeldungen und Fehlerroutinen aus. Wie sollte sichere Fehlerbehandlung aussehen
- Application-Logging: Warum ist eine gute Logging-Strategie elementar und was sollten Entwickler besser nicht loggen
LAB-Übung: Vertrauliche Daten in Logdateien. Tipps, wie man zu gutem Logging kommt - Secure-Networking und Infrastruktur: Hacker greifen Systeme an, nicht Software. Welche Schwachstellen gibt es in Übertragungsprotokollen und warum sind Hardening und Patching nicht nur die Aufgabe von Administratoren, sondern auch von Entwicklern.
Validierungsphase
- Code-Reviews: Welche Security-Best-Practices gibt es und wann sollte ein Source-Code-Review durchgeführt werden
- Automatisierte Codeanalysen: Welchen Nutzen haben automatisierte Codeanalysen und welche Module können analysiert werden
- Schwachstellen-Scans: Was bringen automatisierte Schwachstellen-Scans und wo sind deren Grenzen
- Penetrationstests: Warum sind Penetrationstests manchmal unerlässlich
Betriebsphase
- Code-Changes: Welche Auswirkungen haben Code-Change auf die Security. Welche Maßnahmen sollten ergriffen werden
- Konfiguration: Wie beeinflusst die Konfiguration die Security
- Patch-Management: Wer ist für das Patching von Systemen verantwortlich und bis wohin LAB-Übung: Ausnutzung einer weiteren RCE Schwachstelle durch eine veraltete Bibliothek
- Decommissioning: Welche Schritte sind zu tun, wenn ein System „End of Life“ ist
Kapitelübersicht Modul 2: Cloud Security & DevSecOps
Cloud Security
Cloud Security: Die Betriebsmodelle in der Cloud
Shared Responsibility: Rolle des Admins und des Cloud Providers
Tipps in der Cloud: Saubere Account-Trennung. Absicherung privilegierter Accounts, Jump Server - Konzept. Verschiedene Multi-Faktor-Methoden. Private Netzwerke und IP-Einschränkungen
LAB-Übung: Zugriff auf schlecht konfigurierte Cloud-Datenbank durch OSINT Recherche
3rd Party Libraries
Risiken durch den Einsatz von 3rd Party Libraries.
Praktische Tipps zur Risikoreduktion, zum Beispiel:
- durch Reputation Checks der Entwickler und der Repositories
- Kontinuierlicher Einsatz von Dependency Check-Tools
LAB-Übung: Angriff auf Software über nicht gepatchte 3rd Party Library
Single Sign On
- Nutzen und Vorteile zentraler Identity Provider.
- Erläuterung von SSO mit Oauth, OpenID Connect und SAML.
- Risiken der SSO Nutzung bei schwacher Validierung der Tokens.
LAB-Übung: Aushebeln von Single Sign On durch manipuliertes Oauth Token. - Praktische Tipps zur sicheren Signatur von Tokens
DevSecOps
- Das Konzept hinter DevSecOps: eine Win-Win-Win-Situation.
- Automatisierte Security Checks: Wie man mit Functional Tests, Codescannern und Co. Schwachstellen dauerhaft eliminieren kann.
- Infrastructure as Code: Code ist Code - und damit anfällig für Schwachstellen. Tipps für Secret Handling und Security Checks bei IaC.
Lab Übung: Secrets aus dem State eines IaC Projektes auslesen.
IP und KI
- Strictly Confidential: Warum Source Code sehr sensibel sein kann und wie ein Geschäftsgeheimnis gehütet werden sollte.
- Strikte Trennung: Warum Business Code nicht mit privaten Accounts bearbeitet werden sollte.
- Gesunde Skepsis: Wann ist der Einsatz von KI in der Entwicklung ein gewinn, wann eher ein Risiko.
Kundenfeedback
Die nächsten Schritte: So holen Sie das Beste aus Ihrem Cyber LAB heraus
Unsere Secure Development Schulung für Entwickler schafft die richtige Basis für sichere Anwendungsentwicklung: Product Manager, Application Owner, Software-Architekten und Entwickler verstehen, warum Secure Development elementar wichtig ist und welche Komponenten dafür benötigt werden.
Diese Security-Begeisterung muss dann aber auch richtig kanalisiert werden, damit Secure Development tatsächlich nachhaltig im Entwicklungsalltag ankommt.
Wie das geht? Hier finden Sie unseren bewährten Best-Practice-Ansatz, mit dem Sie Secure Development fest im Entwicklungsalltag verankern.