Die Sicherheit von Anwendungen ist heute ein kritischer Faktor für jedes Unternehmen. Zwei bewährte Ansätze zur automatisierten Erkennung von Sicherheitslücken sind:
Beide Verfahren ergänzen sich und decken unterschiedliche Schwachstellentypen ab.
SAST-Tools analysieren den Quellcode, Bytecode oder kompilierte Anwendungen, ohne diese auszuführen. Sie suchen nach bekannten Sicherheitsmustern und Schwachstellen.
Vorteile: - Frühe Erkennung in der Entwicklungsphase - Vollständige Code-Abdeckung möglich - Zeigt exakte Code-Stellen der Schwachstellen - Integration in CI/CD-Pipelines
Nachteile: - Hohe False-Positive-Rate - Kann keine Laufzeit-Schwachstellen erkennen - Schwierigkeiten bei dynamischem Code
// SQL-Injection-Schwachstelle
String query = "SELECT * FROM users WHERE id = " + userId;
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);
// Hardcoded Credentials
String password = "admin123";
String apiKey = "sk-1234567890abcdef";
// Path Traversal
File file = new File("/uploads/" + filename);# GitLab CI Beispiel
sast_scan:
stage: security
script:
- sonarqube-scanner
- checkmarx-scan --project myapp
artifacts:
reports:
sast: sast-report.jsonDAST-Tools testen laufende Anwendungen von außen, ähnlich wie ein Angreifer vorgehen würde. Sie senden verschiedene Payloads und analysieren die Antworten.
Vorteile: - Testet die reale Anwendung inklusive Konfiguration - Niedrige False-Positive-Rate - Erkennt Laufzeit-Schwachstellen - Sprachunabhängig
Nachteile: - Benötigt lauffähige Anwendung - Unvollständige Code-Abdeckung - Kann interne Logik nicht analysieren - Zeitaufwändiger als SAST
#!/bin/bash
# OWASP ZAP Baseline Scan
docker run -v $(pwd):/zap/wrk/:rw \
owasp/zap2docker-stable zap-baseline.py \
-t https://myapp.example.com \
-r zap-report.html
# Nuclei Vulnerability Scanner
nuclei -target https://myapp.example.com \
-templates nuclei-templates/ \
-output nuclei-results.txtOpen Source: - SonarQube Community: Grundlegende SAST-Funktionalität - Semgrep: Regelbasierte Code-Analyse - SpotBugs: Java-spezifische Analyse - Bandit: Python Security Linter
Commercial: - Checkmarx: Enterprise SAST-Lösung - Veracode: Cloud-basierte Sicherheitsanalyse - Fortify: Umfassende Static Analysis - Steampunk Spotter: Spezialisiert auf Ansible-Playbooks und Infrastructure-as-Code
Open Source: - OWASP ZAP: Umfassender Web Application Scanner - Nuclei: Schneller Vulnerability Scanner - Nikto: Web Server Scanner - SQLMap: SQL-Injection-Testing
Commercial: - Burp Suite Professional: Manuelle und automatisierte Tests - Rapid7 AppSpider: Enterprise DAST-Lösung - Qualys WAS: Cloud-basiertes Web Application Scanning
Die Kosten für professionelle Security-Testing-Tools bewegen sich im KMU-Bereich üblicherweise bei:
Kleines Entwicklungsteam (5 Entwickler):
- SAST-Tool: 5 × 50€ = 250€/Monat
- DAST-Tool: 200€/Monat (Team-Lizenz)
- Gesamt: 450€/Monat = 5.400€/Jahr
Mittleres Team (15 Entwickler):
- Enterprise SAST: 800€/Monat
- Enterprise DAST: 400€/Monat
- Gesamt: 1.200€/Monat = 14.400€/Jahr
Hier entsteht ein kritisches Dilemma: Wenn Security-Tools ihren Job gut machen, sind ihre Kosten schwer zu rechtfertigen.
Das Problem: - Erfolgreiche Prävention ist unsichtbar - Keine Sicherheitsvorfälle = “Warum zahlen wir dafür?” - Schadensfälle, die nicht auftreten, werden nicht wahrgenommen - Tools erscheinen als reine Kostenstelle
Ein einziger erfolgreicher Angriff kann Kosten verursachen, die Jahre der Tool-Lizenzierung übersteigen:
Typische Kosten eines Datenlecks (KMU):
- Incident Response: 15.000-50.000€
- Forensische Untersuchung: 10.000-30.000€
- DSGVO-Bußgelder: Bis zu 20 Mio€ oder 4% Jahresumsatz
- Reputationsschäden: Unbezifferbar
- Ausfallzeiten: 1.000-10.000€ pro Stunde
Ein einziger verhindeter Vorfall amortisiert
die Tool-Kosten für mehrere Jahre.
Security KPIs:
SAST-Metriken:
- Gefundene Critical/High Vulnerabilities
- Mean Time to Fix (MTTF)
- False Positive Rate
DAST-Metriken:
- Abgedeckte Anwendungen
- Scan-Frequency
- Trend der gefundenen Issues
Business-Metriken:
- Verhinderte Sicherheitsvorfälle (geschätzt)
- Compliance-Erfüllung
- Versicherungsprämien-Reduzierungstages:
- build
- sast
- test
- dast
- deploy
sast_analysis:
stage: sast
script:
- sonar-scanner
- steampunk-spotter scan playbooks/
rules:
- if: $CI_MERGE_REQUEST_ID
security_gate:
stage: test
script:
- |
if [ "$CRITICAL_ISSUES" -gt 0 ]; then
echo "Critical security issues found. Blocking deployment."
exit 1
fi
dast_scan:
stage: dast
script:
- zap-baseline.py -t $STAGING_URL
environment: staging
only:
- main# Beispiel: Automatische Issue-Erstellung
def create_security_ticket(vulnerability):
ticket = {
'title': f'Security: {vulnerability.type}',
'description': f'''
Vulnerability: {vulnerability.description}
File: {vulnerability.file}:{vulnerability.line}
Severity: {vulnerability.severity}
CWE: {vulnerability.cwe}
Remediation: {vulnerability.fix_guidance}
''',
'priority': map_severity(vulnerability.severity),
'assignee': get_code_owner(vulnerability.file)
}
jira.create_issue(ticket)Ein spezialisiertes Beispiel für Infrastructure-as-Code Security ist Steampunk Spotter, das sich auf Ansible-Playbooks fokussiert:
# Beispiel-Scan-Ergebnisse
findings:
- rule: "ansible.hardcoded-passwords"
file: "playbooks/database.yml"
line: 23
severity: "HIGH"
message: "Hardcoded password detected"
- rule: "ansible.privilege-escalation"
file: "roles/webserver/tasks/main.yml"
line: 15
severity: "MEDIUM"
message: "Unrestricted become usage"# In CI/CD Pipeline
steampunk-spotter scan \
--path playbooks/ \
--format junit \
--output security-report.xml
# Mit Quality Gates
steampunk-spotter scan --fail-on high playbooks/ROI-Formel für Security Tools:
Jährliche Ersparnis =
(Wahrscheinlichkeit eines Angriffs × Durchschnittliche Schadenskosten)
- Tool-Kosten
Beispiel:
- Angriffswahrscheinlichkeit: 25% pro Jahr
- Durchschnittlicher Schaden: 200.000€
- Tool-Kosten: 15.000€/Jahr
ROI = (0,25 × 200.000€) - 15.000€ = 35.000€ jährlich