SAST und DAST

SAST (Static Application Security Testing) und DAST (Dynamic Application Security Testing) stellen zwei grundlegende und komplementäre Methoden im Bereich der Anwendungssicherheit dar, jede mit unterschiedlichen, aber gleichermaßen wichtigen Ansätzen zur Identifizierung von Schwachstellen. SAST arbeitet durch die statische Analyse von Quellcode, Bytecode oder Binärdateien, ohne die Anwendung auszuführen, und untersucht den Code auf Muster, die auf potenzielle Schwachstellen hinweisen, wie etwa SQL Injection, XSS, Buffer Overflows und Fehler in der Geschäftslogik. Dieser "White-Box"-Ansatz ermöglicht es, Probleme früh im Entwicklungszyklus zu erkennen (Shift-Left-Security), und liefert den Entwicklern präzises Feedback zur exakten Position des verwundbaren Codes. Auf der anderen Seite simuliert DAST reale Angriffe gegen die laufende Anwendung und testet sie als "Black-Box", wie es ein externer Angreifer tun würde, ohne Zugriff auf den Quellcode. Diese Technik deckt Schwachstellen auf, die sich erst zur Laufzeit zeigen, wie Konfigurationsfehler, Authentifizierungs- und Autorisierungsprobleme sowie Schwachstellen, die aus der Interaktion zwischen verschiedenen Komponenten entstehen. Wenn sie gemeinsam in einer integrierten DevSecOps-Strategie eingesetzt werden, decken SAST und DAST die blinden Flecken des jeweils anderen ab und schaffen eine Defense in Depth, die sowohl während der Entwicklung eingeführte Schwachstellen erkennt als auch jene, die während der Ausführung der Anwendung in realen Umgebungen auftreten.

SAST: Statische Analyse

SAST untersucht Quellcode, Bytecode oder Binärdateien, ohne die Anwendung auszuführen, und identifiziert Schwachstellen während der Entwicklung.

Vorteile von SAST

  • Early detection: Findet Bugs vor dem Deployment
  • Code coverage: Analysiert 100 % des Codes, einschließlich nicht ausgeführter Paths
  • Root cause: Zeigt die exakte Zeile des verwundbaren Codes
  • No runtime needed: Erfordert keine laufende Anwendung
  • CI/CD integration: Automatisierung in der Build-Pipeline

Einschränkungen von SAST

  • Hohe False Positives - erfordert Tuning
  • Erkennt keine Konfigurationsschwachstellen
  • Testet die Geschäftslogik nicht zur Laufzeit
  • Language-specific - jede Sprache benötigt einen eigenen Scanner

SAST-Tools

  • SonarQube: Open-Source, unterstützt mehr als 25 Sprachen
  • Checkmarx: Enterprise-grade, marktführendes SAST
  • Fortify: Micro Focus, tiefgehende Analyse
  • Semgrep: Open-Source, anpassbare Regeln
  • Bandit (Python): Spezifisch für Python
  • Brakeman (Ruby): Rails Security Scanner

DAST: Dynamische Analyse

DAST testet die laufende Anwendung und simuliert reale Angriffe durch Black-Box-Testing, ohne Zugriff auf den Quellcode.

Vorteile von DAST

  • Runtime testing: Testet die Anwendung wie ein echter Angreifer
  • Configuration issues: Erkennt Konfigurationsfehler
  • Low false positives: Bestätigte, ausnutzbare Schwachstellen
  • Language-agnostic: Funktioniert für jeden Stack
  • Production-like: Testet in einer produktionsähnlichen Umgebung

Einschränkungen von DAST

  • Late detection - Schwachstellen werden gefunden, nachdem der Code fertig ist
  • Begrenzte Code coverage - testet nur zugängliche Flows
  • Keine Code-Details - zeigt die verwundbare Zeile nicht an
  • Erfordert eine deployte und laufende Anwendung

DAST-Tools

  • OWASP ZAP: Open-Source, Proxy Interceptor
  • Burp Suite: Industry Standard, Professional Scanner
  • Acunetix: Automated Web Vulnerability Scanner
  • Netsparker: Proof-based Scanning
  • AppScan: Enterprise-Lösung von IBM

SAST + DAST: Kombinierte Strategie

Die gemeinsame Nutzung von SAST und DAST deckt die blinden Flecken jedes Ansatzes ab und schafft ein robustes AppSec-Programm.

      # CI/CD-Pipeline mit SAST + DAST
      stages:
      - build
      - sast
      - test
      - dast
      - deploy
      sast_scan:
      stage: sast
      script:
      - semgrep --config=auto --json -o sast-results.json
      - sonar-scanner
      artifacts:
      reports:
      sast: sast-results.json
      dast_scan:
      stage: dast
      script:
      - docker run -t owasp/zap2docker-stable zap-baseline.py
      -t https://staging.app.com -r dast-report.html
      artifacts:
      reports:
      dast: dast-report.html
      

IAST: Interactive Application Security Testing

IAST kombiniert SAST und DAST, indem es die Anwendung instrumentiert, um sie zur Laufzeit zu überwachen, und erzielt so die Code coverage von SAST mit der Runtime Accuracy von DAST.

  • Contrast Security: Marktführer bei IAST, eingebettete Agents
  • Seeker (Synopsys): Runtime-Analyse mit Code Insight
  • Hdiv Security: Runtime Application Self-Protection

DevSecOps-Integration

  • SAST in Pre-Commit-Hooks und Pull Requests
  • DAST in Staging-Umgebungen vor der Produktion
  • Quality Gates: Builds mit kritischen Schwachstellen blockieren
  • Developer Feedback Loops: Integration in IDEs (SonarLint)
  • Vulnerability Management: Findings auf einer einzigen Plattform zentralisieren

Empfehlungen

Implementieren Sie SAST früh im SDLC (Shift-Left) und DAST in Staging-Umgebungen. Stimmen Sie die Tools ab, um False Positives zu reduzieren - konzentrieren Sie sich zuerst auf kritische Schwachstellen. Erwägen Sie IAST für kritische Anwendungen. Automatisieren Sie alles in der CI/CD-Pipeline und schaffen Sie schnelle Feedback Loops für Entwickler.