Zum Hauptinhalt springen

Entwickler-Sicherheitsschulung: Lehrplan und Ressourcen

Entwickler schreiben den Code, den Angreifer ausnutzen. Jede SQL-Injection, jede XSS-Schwachstelle, jeder Authentifizierungs-Bypass existiert, weil ein Entwickler den Code auf diese Weise geschrieben hat. Das ist keine Schuldzuweisung — das ist die Realität. Und die Lösung ist nicht, dass Sicherheitsteams jede Zeile Code überprüfen. Es sind Entwickler, die Sicherheit verstehen und sie von Anfang an einbauen.

Sicherheitsbewusste Entwickler vermeiden nicht nur Schwachstellen. Sie denken wie Angreifer. Sie hinterfragen Annahmen. Sie fragen „was könnte schiefgehen?" bevor sie liefern. Sie bauen Defense in Depth, keine Sicherheit als nachträglichen Gedanken.

Dieser Artikel bietet einen umfassenden Sicherheitsschulungs-Lehrplan für Entwickler: welche Themen abzudecken sind, Lernressourcen für jedes davon und strukturierte Lernpfade vom Junior bis zum Senior Level.

Dreiteilige Serie

Dies ist Teil 1 der Entwickler-Sicherheitsschulungs-Serie:

  1. Lehrplan und Ressourcen (dieser Artikel) — was zu lehren ist
  2. Assessment und Kompetenz-Mapping — wie man Kenntnisse bewertet
  3. Implementierungsleitfaden — wie man das Programm einführt

Warum Entwickler-Sicherheitsschulung wichtig ist

Die Wirtschaftlichkeit ist klar: Das Beheben einer Schwachstelle in der Entwicklung kostet 6-mal weniger als das Beheben in der Produktion. Das Finden während des Designs kostet 15-mal weniger als nach dem Release. Entwickler-Sicherheitswissen ist die kosteneffektivste Sicherheitsinvestition, die Sie tätigen können.

Die meisten Schwachstellen sind vermeidbar. Die OWASP Top 10 hat sich in 20 Jahren kaum verändert. SQL-Injection, XSS, Broken Access Control — wir wissen, dass diese Schwachstellen existieren. Wir wissen, wie man sie verhindert. Dennoch tauchen sie immer wieder in neuem Code auf, weil Entwicklern nicht beigebracht wird, sie zu vermeiden.

Sicherheitsteams können nicht skalieren. Selbst wenn Sie Sicherheitsspezialisten haben, können sie nicht jeden Commit überprüfen. Das Verhältnis von Entwicklern zu Sicherheitsingenieuren liegt typischerweise bei 100:1 oder schlechter. Entwickler müssen die erste Verteidigungslinie sein.

Shift-Left erfordert Entwicklerwissen. DevSecOps bedeutet die Integration von Sicherheit in die Entwicklung. Aber Entwickler können SAST-Befunde nicht beheben, die sie nicht verstehen. Sie können keine Features threat-modeln, die sie bauen, ohne Sicherheitswissen.

Es ist ein Karriere-Differenziator. Entwickler mit Sicherheitskenntnissen sind sehr gefragt. Sicherheitswissen erhöht das Verdienstpotenzial und öffnet Wege zu spezialisierten Rollen (Application Security, Security Engineering).

Sicherheitskompetenz-Framework

Bevor Sie Entwickler schulen, definieren Sie, was „Sicherheitskompetenz" für Ihre Organisation bedeutet. Hier ist ein Framework:

Kompetenzstufen

StufeNameBeschreibungErwartet von
L1BewusstVersteht grundlegende Sicherheitskonzepte, erkennt häufige SchwachstellenAllen Entwicklern
L2PraktikerSchreibt konsequent sicheren Code, kann den Code anderer auf Sicherheit reviewenSenior-Entwicklern
L3ExperteEntwirft sichere Systeme, betreut andere, leitet SicherheitsinitiativenTech Leads, Architekten
L4ChampionFördert Sicherheitskultur, repräsentiert das Team in SicherheitsdiskussionenSecurity Champions

Kompetenzbereiche

BereichL1: BewusstL2: PraktikerL3: Experte
Sicheres CodingKennt OWASP Top 10Verhindert Schwachstellen im eigenen CodeReviewt Code anderer, erstellt Muster
Authentifizierung & AutorisierungVersteht KonzepteImplementiert korrektEntwirft Auth-Systeme
DatenschutzKennt KlassifizierungBehandelt Daten sicherEntwirft Datenschutzstrategien
Threat ModelingVersteht ZweckNimmt an Sitzungen teilLeitet Threat Modeling
SicherheitstestsFührt bereitgestellte Tools ausSchreibt SicherheitstestsErstellt Teststrategien
VorfallreaktionMeldet ProblemeUntersucht und behebtLeitet Vorfallreaktion
AbhängigkeitenAktualisiert auf AnweisungÜberwacht und verwaltetErstellt Abhängigkeitsrichtlinien

Rollenbasierte Anforderungen

RolleMindeststufeFokusbereiche
Junior-EntwicklerL1Sichere Coding-Grundlagen, OWASP Top 10
Mid-Level-EntwicklerL1–L2Sicheres Coding, grundlegende Sicherheitstests
Senior-EntwicklerL2Alle Bereiche, Code-Review, Mentoring
Tech LeadL2–L3Architektur, Threat Modeling, Team-Praktiken
QA-IngenieurL1–L2Sicherheitstests, Schwachstellenverifizierung
DevOps-IngenieurL2Infrastruktursicherheit, CI/CD-Sicherheit
Security ChampionL3–L4Alle Bereiche, kulturelle Führung

Kernlehrplan für Entwickler

1: Sicherheitsgrundlagen

Dauer: 2–4 Stunden
Zielgruppe: Alle Entwickler (L1)

Themen:

  • CIA-Triade (Vertraulichkeit, Integrität, Verfügbarkeit)
  • Defense in Depth
  • Least-Privilege-Prinzip
  • Konzept der Angriffsfläche
  • Sicherheit vs. Komfort-Kompromisse
  • Bedrohungslandschaft für Webanwendungen

Lernziele:

  • Erklären, warum Sicherheit für Entwickler wichtig ist
  • Häufige Angriffsvektoren identifizieren
  • Grundlegende Sicherheitsterminologie verstehen
  • Erkennen, wann man Sicherheitshilfe anfordern sollte

Ressourcen:

RessourceTypKostenLink
OWASP Web Security Testing GuideLeitfadenKostenlosowasp.org/www-project-web-security-testing-guide
PortSwigger Web Security AcademyInteraktiver KursKostenlosportswigger.net/web-security
Hack The Box AcademyPraktische LabsKostenloser Tarifacademy.hackthebox.com
TryHackMeEinsteiger-freundliche LabsKostenloser Tariftryhackme.com

2: OWASP Top 10 im Detail

Dauer: 4–8 Stunden
Zielgruppe: Alle Entwickler (L1–L2)

Die OWASP Top 10 repräsentiert die kritischsten Sicherheitsrisiken für Webanwendungen. Jeder Entwickler sollte diese Schwachstellen genau kennen.

OWASP Top 10 (2021):

#SchwachstelleWas es istPrävention
A01Broken Access ControlNutzer können auf nicht autorisierte Ressourcen zugreifenAutorisierung bei jeder Anfrage prüfen
A02Cryptographic FailuresSensible Daten durch schwache Kryptografie offengelegtStarke Verschlüsselung, ordentliches Schlüsselmanagement
A03InjectionNicht vertrauenswürdige Daten als Code ausgeführtParametrisierte Queries, Eingabevalidierung
A04Insecure DesignFehler in Architektur/DesignThreat Modeling, sichere Design-Muster
A05Security MisconfigurationStandard-Konfigurationen, unnötige FeaturesHardening, minimale Berechtigungen
A06Vulnerable ComponentsKomponenten mit bekannten Schwachstellen verwendenSCA-Scanning, Updates
A07Auth FailuresGebrochene AuthentifizierungsmechanismenMFA, sicheres Session-Management
A08Software & Data Integrity FailuresNicht vertrauenswürdigen Quellen vertrauenSignaturen verifizieren, Integritätsprüfungen
A09Security Logging FailuresUnzureichende Protokollierung zur ErkennungUmfassende Sicherheitsprotokollierung
A10SSRFServer macht Anfragen an vom Angreifer kontrollierte ZieleURLs validieren und bereinigen

Praktische Übungen:

PlattformBeschreibungLink
OWASP WebGoatAbsichtlich unsichere App zum Lernengithub.com/WebGoat/WebGoat
OWASP Juice ShopModerne verwundbare Appowasp.org/www-project-juice-shop
DVWADamn Vulnerable Web Applicationgithub.com/digininja/DVWA
HackTheBoxVerwundbare Maschinenhackthebox.com
PentesterLabGeführte Übungenpentesterlab.com

3: Sicheres Coding nach Programmiersprache

Dauer: 4–6 Stunden pro Sprache
Zielgruppe: Entwickler (L1–L2)

Sicherheitspraktiken unterscheiden sich je nach Sprache und Framework. Bieten Sie sprachspezifische Schulungen für Ihren Stack an.

JavaScript/TypeScript

Schlüsselbereiche:

  • XSS-Prävention (Output-Encoding, CSP)
  • Prototype Pollution
  • npm-Abhängigkeitssicherheit
  • Sichere Authentifizierung mit JWTs
  • Server-seitige Anfrage-Validierung
  • Sicheres JSON-Parsing

Ressourcen:

RessourceTypLink
OWASP Node.js Security Cheat SheetLeitfadencheatsheetseries.owasp.org
Node.js Security Best PracticesLeitfadennodejs.org/en/docs/guides/security
Snyk JavaScript SecurityBlog/Lernensnyk.io/learn/javascript-security
Secure Coding in Node.jsKurspluralsight.com

Beispiel: XSS-Prävention

// BAD: Direct HTML insertion
element.innerHTML = userInput; // XSS vulnerability

// GOOD: Text content (auto-escapes)
element.textContent = userInput;

// GOOD: DOMPurify for rich content
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);

// GOOD: Template literals with encoding
const safe = encodeHTML(userInput);
element.innerHTML = `<div>${safe}</div>`;

Python

Schlüsselbereiche:

  • SQL-Injection mit ORMs
  • Command-Injection (subprocess)
  • Pickle-Deserialisierung
  • SSTI (Server-Side Template Injection)
  • Path Traversal
  • Sichere Passwort-Hashing

Ressourcen:

RessourceTypLink
OWASP Python SecurityLeitfadencheatsheetseries.owasp.org
BanditSAST-Toolbandit.readthedocs.io
Real Python SecurityTutorialsrealpython.com/tutorials/security
Python Security Best PracticesKurspluralsight.com

Beispiel: SQL-Injection-Prävention

# BAD: String formatting (SQL injection)
query = f"SELECT * FROM users WHERE id = {user_id}"
cursor.execute(query)

# GOOD: Parameterized queries
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

# GOOD: ORM usage (SQLAlchemy)
user = session.query(User).filter(User.id == user_id).first()

# GOOD: Django ORM
user = User.objects.get(id=user_id)

Java

Schlüsselbereiche:

  • SQL-Injection (JDBC, JPA)
  • XML External Entity (XXE)
  • Deserialisierungs-Schwachstellen
  • Spring-Security-Konfiguration
  • Sichere Protokollierung
  • Kryptografie mit JCA

Ressourcen:

RessourceTypLink
OWASP Java SecurityLeitfadencheatsheetseries.owasp.org
Spring Security ReferenceDokumentationdocs.spring.io/spring-security
Find Security BugsSAST-Toolfind-sec-bugs.github.io
Secure Coding Guidelines for JavaOracle-Leitfadenoracle.com

Go

Schlüsselbereiche:

  • Eingabevalidierung
  • SQL-Injection mit database/sql
  • Path Traversal
  • Race Conditions
  • Sichere HTTP-Client-Konfiguration
  • Kryptografie mit crypto-Paket

Ressourcen:

RessourceTypLink
OWASP Go SecurityLeitfadencheatsheetseries.owasp.org
Secure GoBuchgithub.com/OWASP/Go-SCP
gosecSAST-Toolgithub.com/securego/gosec

PHP

Schlüsselbereiche:

  • SQL-Injection (PDO, mysqli)
  • XSS-Prävention
  • Datei-Upload-Schwachstellen
  • Session-Sicherheit
  • include/require-Schwachstellen
  • Passwort-Hashing mit password_hash()

Ressourcen:

RessourceTypLink
OWASP PHP SecurityLeitfadencheatsheetseries.owasp.org
PHP: The Right Way - SecurityLeitfadenphptherightway.com/#security
PsalmStatischer Analysatorpsalm.dev

C# / .NET

Schlüsselbereiche:

  • SQL-Injection mit Entity Framework
  • XSS in Razor-Views
  • Antiforgery-Tokens (CSRF)
  • Sichere Deserialisierung
  • Kryptografie mit .NET-APIs
  • Authentifizierung mit ASP.NET Identity

Ressourcen:

RessourceTypLink
OWASP .NET SecurityLeitfadencheatsheetseries.owasp.org
ASP.NET Core SecurityDokumentationdocs.microsoft.com/en-us/aspnet/core/security
Security Code ScanSAST-Toolsecurity-code-scan.github.io

4: Authentifizierung und Autorisierung

Dauer: 4–6 Stunden
Zielgruppe: Entwickler (L2)

Themen:

  • Authentifizierung vs. Autorisierung
  • Session-Management
  • JWT-Best-Practices und -Fallstricke
  • OAuth 2.0 und OpenID Connect
  • Passwort-Speicherung (bcrypt, Argon2)
  • MFA-Implementierung
  • API-Authentifizierungsmuster
  • RBAC und ABAC

Häufige Fehler, die gelehrt werden sollten:

// BAD: JWT in localStorage (XSS can steal it)
localStorage.setItem('token', jwt);

// BETTER: HttpOnly cookie (not accessible via JavaScript)
// Set via response header:
// Set-Cookie: token=jwt; HttpOnly; Secure; SameSite=Strict

// BAD: Checking JWT signature but not expiration
const decoded = jwt.verify(token, secret);
// Token could be expired!

// GOOD: Verify all claims
const decoded = jwt.verify(token, secret, {
algorithms: ['HS256'],
maxAge: '1h',
issuer: 'your-app'
});

Ressourcen:

RessourceTypLink
OWASP Authentication Cheat SheetLeitfadencheatsheetseries.owasp.org
OAuth 2.0 SimplifiedBuchoauth.com
Auth0 BlogArtikelauth0.com/blog
JWT.ioLernenjwt.io/introduction

5: Sicherheitstests für Entwickler

Dauer: 4–6 Stunden
Zielgruppe: Entwickler und QA (L2)

Entwickler sollten Sicherheitstests schreiben, nicht nur auf Sicherheitsteams vertrauen.

Arten von Sicherheitstests:

TypWas er testetWann einsetzenTools
Unit-Tests für SicherheitIndividuelle SicherheitsfunktionenBei jedem CommitJest, pytest, JUnit
Integrations-SicherheitstestsAuth-Flows, ZugriffskontrolleBei jedem PRSupertest, requests
SASTQuellcode-MusterCI/CDSemgrep, CodeQL, Bandit
DASTLaufende AnwendungStagingOWASP ZAP, Nuclei
Abhängigkeits-ScanningBekannte CVEs in BibliothekenBei jedem BuildSnyk, Dependabot
Fuzz-TestingRandfälle, AbstürzeRegelmäßigAFL, libFuzzer

Sicherheitstests schreiben:

// Authentication tests
describe('Authentication', () => {
test('should reject invalid credentials', async () => {
const res = await request(app)
.post('/api/login')
.send({ username: 'user', password: 'wrong' });
expect(res.status).toBe(401);
});

test('should not leak user existence via timing', async () => {
const start1 = Date.now();
await request(app).post('/api/login').send({ username: 'exists', password: 'wrong' });
const time1 = Date.now() - start1;

const start2 = Date.now();
await request(app).post('/api/login').send({ username: 'nonexistent', password: 'wrong' });
const time2 = Date.now() - start2;

// Response times should be similar
expect(Math.abs(time1 - time2)).toBeLessThan(50);
});
});

// Authorization tests
describe('Authorization', () => {
test('should deny access to other users resources', async () => {
const user1Token = await login('user1', 'password1');
const res = await request(app)
.get('/api/users/user2/data')
.set('Authorization', `Bearer ${user1Token}`);
expect(res.status).toBe(403);
});
});

// Input validation tests
describe('Input Validation', () => {
test('should reject SQL injection attempts', async () => {
const res = await request(app)
.get('/api/users')
.query({ id: "1' OR '1'='1" });
expect(res.status).toBe(400);
});

test('should reject XSS in user input', async () => {
const res = await request(app)
.post('/api/comments')
.send({ text: '<script>alert("xss")</script>' });
// Either reject or sanitize
expect(res.body.text).not.toContain('<script>');
});
});

Ressourcen:

RessourceTypLink
OWASP Testing GuideUmfassender Leitfadenowasp.org/www-project-web-security-testing-guide
BDD SecurityFrameworkgithub.com/iriusrisk/bdd-security
OWASP ZAPDAST-Toolzaproxy.org
NucleiTemplate-basierter Scannernuclei.projectdiscovery.io

6: Threat Modeling

Dauer: 2–4 Stunden
Zielgruppe: Senior-Entwickler, Tech Leads (L2–L3)

Threat Modeling identifiziert Sicherheitsprobleme während des Designs, bevor Code geschrieben wird.

STRIDE-Modell:

BedrohungBeschreibungBeispielMitigation
SpoofingAls jemand anderes ausgebenGestohlene AnmeldedatenStarke Authentifizierung, MFA
TamperingDaten modifizierenPreise im Warenkorb ändernIntegritätsprüfungen, Signaturen
RepudiationAktionen verleugnen„Ich habe diesen Kauf nicht getätigt"Audit-Protokollierung
Information DisclosureDatenoffenlegungDatenbank-DumpVerschlüsselung, Zugriffskontrolle
Denial of ServiceSystem unverfügbar machenDDoS-AngriffRate Limiting, Skalierung
Elevation of PrivilegeUnautorisierten Zugang erlangenAdmin-Zugang ohne Admin zu seinLeast Privilege, RBAC

Einfacher Threat-Modeling-Prozess:

  1. Was bauen wir? Ein Datenflussdiagramm zeichnen. Komponenten, Datenspeicher und Vertrauensgrenzen identifizieren.
  2. Was kann schiefgehen? STRIDE auf jede Komponente anwenden. Angriffsszenarien brainstormen.
  3. Was werden wir dagegen tun? Bedrohungen priorisieren (Wahrscheinlichkeit × Auswirkung). Mitigationen definieren. Sicherheitsanforderungen erstellen.
  4. Haben wir gute Arbeit geleistet? Modellvollständigkeit überprüfen. Verifizieren, dass Mitigationen implementiert sind. Das Modell aktualisieren, wenn sich das Design ändert.

Ressourcen:

RessourceTypLink
OWASP Threat ModelingLeitfadenowasp.org/www-community/Threat_Modeling
Microsoft Threat Modeling ToolToolmicrosoft.com/en-us/securityengineering/sdl/threatmodeling
Threat Modeling: Designing for SecurityBuchAdam Shostack
OWASP Threat DragonOpen-Source-Toolowasp.org/www-project-threat-dragon

Sicherheitsschulung für QA-Ingenieure

QA-Ingenieure sind Kraft-Multiplikatoren für Sicherheit. Sie denken bereits über Randfälle und das Kaputtmachen von Dingen nach — Sicherheitstests sind eine natürliche Erweiterung.

Sicherheitstest-Lehrplan für QA

ModulThemenDauer
Grundlagen der SicherheitstestsSchwachstellentypen, OWASP Top 10, Test-Mindset4 Stunden
Manuelle SicherheitstestsBurp-Suite-Grundlagen, Anfragen abfangen, Auth testen8 Stunden
Automatisierte SicherheitstestsOWASP ZAP, Nuclei, CI-Integration4 Stunden
API-SicherheitstestsAPI-Schwachstellen, Postman-Sicherheitstests, Fuzzing4 Stunden
Schwachstellen meldenGute Bug-Reports schreiben, Schweregradeinschätzung2 Stunden

Tools für QA-Sicherheitstests

ToolZweckLernkurveLink
Burp Suite CommunityWeb-Proxy, manuelle TestsMittelportswigger.net/burp
OWASP ZAPWeb-Scanner, kostenlose Burp-AlternativeMittelzaproxy.org
PostmanAPI-Tests mit SicherheitstestsGeringpostman.com
NucleiTemplate-basiertes ScanningGeringnuclei.projectdiscovery.io
Browser-DevToolsAnfragen-Inspektion, Cookie-AnalyseGeringEingebaut

QA-Sicherheitstest-Checkliste

## QA Security Testing Checklist

### Authentication
- [ ] Test with invalid credentials
- [ ] Test account lockout after failed attempts
- [ ] Test password reset flow for account enumeration
- [ ] Test session timeout
- [ ] Test concurrent session handling
- [ ] Test remember me functionality

### Authorization
- [ ] Test accessing other users' data (IDOR)
- [ ] Test role-based access (can user access admin?)
- [ ] Test function-level access control
- [ ] Test after logout (can cached pages be accessed?)

### Input validation
- [ ] Test with SQL injection payloads
- [ ] Test with XSS payloads
- [ ] Test with special characters
- [ ] Test with very long inputs
- [ ] Test with empty/null inputs
- [ ] Test with unexpected data types

### Business logic
- [ ] Test race conditions (submit twice quickly)
- [ ] Test workflow bypass (skip steps)
- [ ] Test negative values (negative quantity, negative price)
- [ ] Test integer overflow

### Files
- [ ] Test uploading executable files
- [ ] Test uploading oversized files
- [ ] Test path traversal in filenames
- [ ] Test accessing files without authorization

### API specific
- [ ] Test with missing authentication
- [ ] Test with tampered tokens
- [ ] Test rate limiting
- [ ] Test for mass assignment
- [ ] Test for excessive data exposure

Burp-Suite-Grundlagen für QA

Setup: Proxy konfigurieren (127.0.0.1:8080), Burp-CA-Zertifikat im Browser installieren, Anwendung durchsuchen — Burp erfasst den gesamten Traffic.

Wichtige Tabs:

  • Proxy → HTTP history — alle Anfragen sehen
  • Repeater — einzelne Anfragen ändern und erneut senden
  • Intruder — automatisiertes Payload-Testen
  • Scanner — automatisiertes Schwachstellen-Scanning (nur Pro)

Häufige Tests: user_id in URL ändern (IDOR) · JSON-Body ändern (Autorisierung) · Auth-Header entfernen (Auth-Anforderungen) · Payloads injizieren (Eingabevalidierung)

Umfassende Lernpfade

Junior-Entwickler-Pfad (0–2 Jahre)

Monate 1–3: Grundlagen

  • Kurs zu Sicherheitsgrundlagen
  • OWASP-Top-10-Schulung
  • Sprachspezifische sichere Coding-Grundlagen
  • Assessment: Sicherheitsquiz (80 % bestehen)

Monate 4–6: Praktische Fähigkeiten

  • PortSwigger Web Security Academy (Grundlagen) abschließen
  • Auf WebGoat üben
  • Erste Sicherheits-Unit-Tests schreiben
  • Assessment: 3 Schwachstellen in Test-App finden

Monate 7–12: Integration

  • Sicheres Coding im täglichen Arbeitsablauf anwenden
  • An Sicherheits-Code-Reviews teilnehmen
  • An CTF-Event teilnehmen
  • Assessment: Sicherer Code-Review-Übung

Ziel am Jahresende: L1-Kompetenz in allen Bereichen

Mid-Level-Entwickler-Pfad (2–5 Jahre)

Quartal 1:

  • Fortgeschrittene OWASP-Schulung
  • Authentifizierung und Autorisierung im Detail
  • Assessment: Mittleres Sicherheitsquiz

Quartal 2:

  • Sicherheitstests mit Burp Suite
  • API-Sicherheit
  • Assessment: Schwachstellen mit Burp finden

Quartal 3:

  • Einführung in Threat Modeling
  • An Threat-Modeling-Sitzung teilnehmen
  • Assessment: Threat Model für ein kleines Feature leiten

Quartal 4:

  • Junior-Entwickler betreuen
  • Zur Sicherheitsdokumentation beitragen
  • Assessment: Code-Review mit Sicherheitsfokus

Ziel am Jahresende: L2-Kompetenz, bereit für Security-Champion-Rolle

Senior-Entwickler-/Tech-Lead-Pfad

Fokusbereiche:

  • Architektur-Sicherheit
  • Threat-Modeling-Sitzungen leiten
  • Sicherheitsanforderungen für neue Projekte
  • Andere betreuen
  • Sicherheitsvorfallreaktion

Aktivitäten:

  • Threat-Modeling-Kurs abschließen
  • 3+ Threat-Modeling-Sitzungen leiten
  • Sicherheitsarchitektur für neue Projekte reviewen
  • Internen Tech-Talk zu Sicherheitsthema präsentieren
  • An Vorfallreaktions-Übung teilnehmen

Ziel: L3-Kompetenz, Security Champion oder Zusammenarbeit mit Sicherheitsteam

Selbstcheck-Fragen

  1. Was sind die vier Stufen im Sicherheitskompetenz-Framework?
  2. Welche OWASP-Top-10-Schwachstelle beinhaltet die Ausführung nicht vertrauenswürdiger Daten als Code?
  3. Warum ist eine parametrisierte Query sicherer als String-Interpolation für SQL?
  4. Was ist der Unterschied zwischen SAST und DAST?
  5. Wofür steht STRIDE?
  6. Warum sollten QA-Ingenieure Sicherheitstests lernen?

Kurse und Schulungen

RessourceTypKostenLink
PortSwigger Web Security AcademyInteraktivKostenlosportswigger.net/web-security
OWASP WebGoatPraktischKostenlosowasp.org/www-project-webgoat
Hack The Box AcademyLabsKostenloser Tarifacademy.hackthebox.com
TryHackMeEinsteiger-LabsKostenloser Tariftryhackme.com
PentesterLabÜbungen20 $/Monatpentesterlab.com
SANS Secure CodingZertifizierungKostenpflichtigsans.org

Cheat-Sheets und Leitfäden

SAST-Tools nach Sprache

SpracheToolLink
Multi-SpracheSemgrepsemgrep.dev
Multi-SpracheCodeQLcodeql.github.com
PythonBanditbandit.readthedocs.io
JavaScriptESLint-Sicherheits-Pluginsgithub.com/eslint-community/eslint-plugin-security
JavaFind Security Bugsfind-sec-bugs.github.io
Gogosecgithub.com/securego/gosec
C#Security Code Scansecurity-code-scan.github.io

Verwundbare Anwendungen zum Üben

CTF-Plattformen

  • CTFd — Eigenen CTF hosten
  • PicoCTF — Einsteiger-freundlich
  • CTFtime — CTF-Event-Kalender

Fazit

Ein Lehrplan, der nicht zu dem passt, was Ihre Entwickler tatsächlich bauen, ist verschwendete Mühe. Beginnen Sie mit dem, was Sie kennen — Ihren Stack, Ihre Schwachstellen, Ihre Vorfälle — und bauen Sie von dort aus auf.

Das Ziel ist nicht, jeden Entwickler zu einem Sicherheitsexperten zu machen. Es geht darum, sie kompetent genug zu machen, dass sie nicht zweimal dieselben Kategorien von Bugs einführen.

Was kommt als nächstes

Weiter: Assessment und Kompetenz-Mapping — wie man bewertet, wo Ihre Entwickler stehen, bevor Sie mit der Schulung beginnen.