SAST / DAST / SCA (Application Security Testing)
Drei komplementäre Methoden zur Sicherheitsprüfung von Software: SAST analysiert Quellcode statisch, DAST testet laufende Anwendungen dynamisch, SCA prüft Third-Party-Abhängigkeiten auf bekannte CVEs. Zusammen bilden sie die Grundlage moderner CI/CD-Security-Pipelines.
SAST, DAST und SCA sind die drei Säulen der Application Security Testing (AST). Jede Methode findet andere Schwachstellen - erst zusammen in einer CI/CD-Pipeline entsteht umfassende Anwendungssicherheit.
SAST - Static Application Security Testing
SAST analysiert Quellcode, Bytecode oder Binärcode ohne die Anwendung auszuführen.
Wie SAST funktioniert:
Quellcode → Parser → Abstract Syntax Tree (AST)
→ Dataflow-Analyse (wie fließen Daten?)
→ Taint-Analyse (kommt User-Input unvalidiert in gefährliche Funktion?)
→ Pattern-Matching (bekannte unsichere Code-Muster)
Was SAST findet
# SAST findet diesen Code:
def login(username, password):
query = "SELECT * FROM users WHERE username='" + username + "'"
# SAST Alert: "User input directly in SQL query - potential SQL Injection"
# SAST findet auch:
api_key = "sk-proj-abc123def456" # Hardcoded Secret
md5_hash = hashlib.md5(password) # Weak Crypto (MD5)
SAST-Tools
| Tool | Lizenz | Sprachen | Stärke |
|---|---|---|---|
| Semgrep | LGPL + Rules kostenpflichtig | 30+ | Schnell, anpassbar |
| SonarQube | Open Source / Enterprise | 30+ | Code Quality + Security |
| CodeQL | Kostenlos für OSS | 10+ | GitHub-nativ, mächtig |
| Checkmarx | Kommerziell | 30+ | Enterprise-Marktführer |
| Veracode | Kommerziell | 20+ | Cloud-basiert |
| Snyk Code | Freemium | 15+ | Entwickler-freundlich |
SAST in CI/CD
# Semgrep in GitHub Actions
name: SAST
on: [push, pull_request]
jobs:
semgrep:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semgrep/semgrep-action@v1
with:
config: >-
p/python
p/owasp-top-ten
p/secrets
DAST - Dynamic Application Security Testing
DAST testet die laufende Anwendung von außen - ähnlich wie ein Angreifer.
Wie DAST funktioniert:
Laufende Anwendung → HTTP-Requests senden
→ Responses analysieren
→ Angriffs-Payloads testen (XSS, SQLi, SSRF, etc.)
→ Fehlverhalten identifizieren
Vorteil: Findet Laufzeit-Schwachstellen die SAST übersieht
→ Fehlkonfigurationen (Security Headers, TLS)
→ Business Logic Fehler (IDOR, Auth-Bypässe)
→ Deserialisierungsfehler
DAST-Tools
| Tool | Typ | Besonderheit |
|---|---|---|
| OWASP ZAP | Open Source | CI/CD-Integration, Baseline Scan |
| Burp Suite Pro | Kommerziell | Manuelle + Auto Scan, Standard bei Pentest |
| Nuclei | Open Source | Template-basiert, sehr schnell |
| Nikto | Open Source | Schnell, Konfigurationscheck |
| Acunetix | Kommerziell | JavaScript-Rendering, REST-API |
DAST im CI/CD
# OWASP ZAP in GitHub Actions (Baseline Scan)
dast:
runs-on: ubuntu-latest
steps:
- name: ZAP Scan
uses: zaproxy/action-baseline@v0.10.0
with:
target: 'https://staging.meineapp.de'
cmd_options: '-T 120'
SCA - Software Composition Analysis
SCA prüft Third-Party-Bibliotheken und Dependencies auf bekannte CVEs.
Problem:
Moderne Anwendung hat typisch 500-1000 Dependencies
(direkte: 30-50, transitive: 450-950)
SCA scannt:
requirements.txt, package.json, pom.xml, build.gradle
→ Jede Dependency gegen CVE-Datenbanken
→ NVD (NIST), Snyk Vuln DB, GitHub Advisory DB
Bekannte SCA-Funde:
log4j → CVE-2021-44228 (Log4Shell, CVSS 10.0)
spring-framework → CVE-2022-22965 (SpringShell)
requests < 2.31 → SSRF-Risiko
SCA-Tools
| Tool | Lizenz | Integration |
|---|---|---|
| Snyk | Freemium | GitHub, GitLab, npm, pip, maven |
| OWASP Dependency Check | Open Source | Maven, Gradle, CLI |
| pip-audit | Open Source | Python-spezifisch |
| npm audit | Built-in | Node.js-spezifisch |
| Dependabot | GitHub-nativ | Auto-PRs für Updates |
| Socket | Freemium | Supply Chain Security |
SCA-Kommandos (lokal):
pip-audit # Python
npm audit --audit-level=high # Node.js
SAST vs. DAST vs. SCA im Vergleich
| SAST | DAST | SCA | |
|---|---|---|---|
| Wann | Compile-Time | Runtime (Staging) | Build-Time |
| Was | Eigener Code | Laufende App | Dependencies |
| False Positive Rate | Hoch | Niedrig | Sehr niedrig |
| Erkennt Logic-Bugs | Selten | Ja | Nein |
| Shift Left | Stark | Mittel | Mittel |
Empfehlung: Minimale Security-Pipeline
# Pipeline: SAST + SCA + DAST
on: [push, pull_request]
jobs:
sast:
steps:
- name: Semgrep (OWASP Top 10 + Secrets)
sca:
steps:
- name: pip-audit / npm audit
- name: Snyk (für mehr Coverage)
dast:
steps:
- name: ZAP Baseline (auf Staging)
# Policy:
SAST Critical + High: Build fails
SCA Critical: Build fails, High: Warning
DAST High: Alert für Security-Team
Diese minimale Pipeline deckt die häufigsten Schwachstellen ab - ohne großes Budget oder Team.