Zum Hauptinhalt springen

Sicherheit in der CI/CD-Pipeline

Die CI/CD-Pipeline ist die letzte Verteidigungslinie, bevor Code die Produktion erreicht. Jeder Commit, jeder Pull Request, jedes Deployment läuft durch sie. Das macht sie zum idealen Ort, um Sicherheitsprobleme abzufangen — Schwachstellen im Code, gefährliche Abhängigkeiten, Fehlkonfigurationen, durchgesickerte Geheimnisse.

Das Ziel ist nicht, jeden Build mit Sicherheitswarnungen zu blockieren. Es geht darum, kritische Probleme automatisch zu erkennen, Entwicklern schnelles Feedback zu geben und offensichtliche Fehler aufzuhalten, bevor sie ausgeliefert werden. Eine gut konfigurierte Pipeline findet SQL-Injection vor dem Code-Review, kennzeichnet anfällige Abhängigkeiten vor dem Merge und blockiert bekannte schlechte Muster, bevor sie die Produktion erreichen.

Dieses Kapitel behandelt die fünf Arten von Sicherheits-Scanning, die Sie in CI/CD benötigen: statische Analyse (SAST), Abhängigkeits-Scanning (SCA), Software-Stückliste (SBOM), Infrastructure-as-Code-Scanning (IaC) und dynamisches Testen (DAST). Alles mit kostenlosen Tools, die mit GitHub und GitLab funktionieren.

Warum das für kleine Unternehmen wichtig ist

Sicherheits-Scanning klingt nach Enterprise-Overhead. Ist es nicht. Für kleine Teams ist automatisches Scanning sogar noch wertvoller — Sie haben keine dedizierten Sicherheitsprüfer, also muss die Pipeline diese Arbeit übernehmen.

Sie können nicht alles manuell prüfen. Ein Team von fünf Entwicklern produziert vielleicht Dutzende von Commits pro Tag. Niemand hat Zeit, jede Änderung sicherheitstechnisch zu prüfen. Automatische Scanner fangen die offensichtlichen Probleme ab, damit sich Menschen auf Architektur und Logik konzentrieren können.

Schwachstellen werden in kleinen Teams schneller ausgeliefert. Keine Change Advisory Boards, keine mehrstufigen Genehmigungen, kein Warten. Code gelangt in Stunden vom Laptop in die Produktion. Diese Geschwindigkeit ist ein Vorteil, bedeutet aber auch, dass Schwachstellen schnell mitreisen. Scanning in CI/CD ist Ihr Sicherheitsnetz.

Abhängigkeitsrisiken sind real. Ihre Anwendung besteht vielleicht aus 10.000 selbst geschriebenen Codezeilen und 500.000 Zeilen Open-Source-Abhängigkeiten, die Sie nicht geschrieben haben. Ein anfälliges Paket in diesem Stack kann alles kompromittieren. Snyks Bericht 2024 stellte fest, dass 80 % der Anwendungen mindestens eine bekannte Schwachstelle in ihren Abhängigkeiten enthalten.

Kostenlose Tools sind produktionsreif. Semgrep, Trivy, Dependabot, npm audit — das sind keine Spielzeugprojekte. Sie werden von Tausenden von Unternehmen eingesetzt und finden echte Schwachstellen. Sie brauchen keine 50.000-Dollar-Sicherheitsplattform, um Ihren Code zu scannen.

Wonach Angreifer suchen

Wenn Angreifer eine Anwendung ins Visier nehmen, beginnen sie oft mit den einfachen Zielen:

  1. Bekannte CVEs in Abhängigkeiten — öffentliche Exploits existieren, man muss nur ein Ziel finden, das die anfällige Version nutzt
  2. Exponierte Geheimnisse — API-Schlüssel, Datenbankpasswörter, Cloud-Zugangsdaten im Code oder in CI-Logs
  3. Injection-Schwachstellen — SQL-Injection, Command-Injection, XSS, die automatische Tools zuverlässig erkennen
  4. Fehlkonfigurierte Infrastruktur — offene S3-Buckets, permissive CORS-Einstellungen, fehlende Sicherheitsheader

Automatisches Scanning erkennt die meisten dieser Probleme. Angreifer nutzen automatisierte Tools, um sie zu finden — Sie sollten automatisierte Tools einsetzen, um sie zuerst zu finden.

Arten von Sicherheits-Scanning

Fünf Kategorien decken das meiste ab, was Sie brauchen:

TypWas es tutWann es läuftBeispiele
SAST (Static Application Security Testing)Analysiert Quellcode auf SchwachstellenJeder Commit, PRSemgrep, CodeQL, Bandit
SCA (Software Composition Analysis)Findet anfällige AbhängigkeitenJeder BuildDependabot, Snyk, Trivy
SBOM (Software Bill of Materials)Inventarisiert alle Komponenten, verfolgt LizenzenJedes ReleaseSyft, Grype, Dependency-Track
IaC-ScanningFindet Fehlkonfigurationen in Infrastruktur-CodeJeder CommitCheckov, tfsec, KICS
DAST (Dynamic Application Security Testing)Testet die laufende Anwendung auf SchwachstellenStaging-DeploymentsOWASP ZAP, Nuclei

Jedes erkennt andere Probleme:

  • SAST findet Probleme in Code, den Sie schreiben: SQL-Injection, XSS, unsichere Kryptografie
  • SCA findet Probleme in Code, den Sie importieren: anfällige Bibliotheken, veraltete Pakete
  • SBOM verfolgt, was in Ihrer Software steckt: Komponenteninventar, Lizenz-Compliance, Schwachstellen-Korrelation
  • IaC findet Probleme in der Infrastruktur: offene S3-Buckets, übermäßig permissive IAM-Rollen, unverschlüsselter Speicher
  • DAST findet Probleme im laufenden Betrieb: fehlkonfigurierte Server, exponierte Endpunkte, Authentifizierungsumgehungen

Sie brauchen alle fünf. Sie ergänzen sich, sind keine Alternativen.

SAST: statische Code-Analyse

SAST-Tools lesen Ihren Quellcode und suchen nach Mustern, die auf Schwachstellen hinweisen. Kein Laufzeitbetrieb, kein Deployment — nur Code-Analyse.

Was SAST erkennt

SchwachstelleWie SAST sie findet
SQL-InjectionString-Konkatenation in SQL-Abfragen
XSSUnbereinigter Output in HTML-Templates
Command-InjectionBenutzereingaben in Shell-Befehlen
Pfad-TraversalBenutzereingaben in Dateioperationen
Hartcodierte GeheimnisseMuster, die zu API-Schlüsseln und Passwörtern passen
Unsichere KryptografieVerwendung von MD5, SHA1 für Passwörter, schwache Zufallszahlen

Tool: Semgrep

Semgrep ist das bevorzugte SAST-Tool für kleine Teams. Es ist schnell, hat gute Regeln direkt out-of-the-box und lässt sich in alles integrieren.

Lokale Installation:

# macOS
brew install semgrep

# pip
pip install semgrep

Scan ausführen:

# Scan mit Standard-Regeln
semgrep --config auto .

# Scan mit OWASP Top 10-Regeln
semgrep --config "p/owasp-top-ten" .

# Scan für eine bestimmte Sprache
semgrep --config "p/python" .

GitHub Actions-Integration:

name: Security Scan

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
semgrep:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run Semgrep
uses: semgrep/semgrep-action@v1
with:
config: >-
p/security-audit
p/secrets

GitLab CI-Integration:

semgrep:
stage: test
image: semgrep/semgrep
script:
- semgrep ci --config auto
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

Tool: CodeQL (nur GitHub)

GitHubs CodeQL ist leistungsstark, funktioniert aber nur auf GitHub. Für öffentliche Repositories kostenlos, in GitHub Advanced Security für private Repositories enthalten.

In Repository-Einstellungen aktivieren:

  1. Gehen Sie zu Settings → Security → Code security and analysis
  2. Aktivieren Sie „Code scanning"
  3. Wählen Sie „CodeQL analysis"
  4. Wählen Sie die zu scannenden Sprachen

Oder manuell konfigurieren:

name: CodeQL

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 6 * * 1' # Weekly Monday 6 AM

jobs:
analyze:
runs-on: ubuntu-latest
permissions:
security-events: write

strategy:
matrix:
language: ['javascript', 'python']

steps:
- uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

Sprachspezifische Tools

SpracheToolInstallationAusführung
PythonBanditpip install banditbandit -r src/
JavaScriptESLint + security pluginnpm i eslint-plugin-securityeslint --ext .js src/
Gogosecgo install github.com/securego/gosec/v2/cmd/gosec@latestgosec ./...
RubyBrakemangem install brakemanbrakeman
PHPPsalmcomposer require --dev vimeo/psalm./vendor/bin/psalm

Umgang mit SAST-Befunden

Nicht jeder Befund ist eine echte Schwachstelle. SAST-Tools haben Falsch-Positive. So gehen Sie damit um:

Nach Schweregrad priorisieren:

SchweregradMaßnahmeZeitrahmen
Kritisch/HochMerge blockieren, sofort behebenSelber Tag
MittelVor Release behebenDieser Sprint
NiedrigVerfolgen, bei Gelegenheit behebenBacklog

Falsch-Positive korrekt unterdrücken:

# Semgrep: inline ignore
password = get_from_vault() # nosemgrep: hardcoded-password

# Bandit: inline ignore
subprocess.run(cmd, shell=True) # nosec B602

Oder eine Konfigurationsdatei verwenden:

# .semgrep.yml
rules:
- id: my-custom-rule
# ... rule definition

# Ignore specific paths
exclude:
- "tests/*"
- "vendor/*"
- "*.test.js"

Nicht alles unterdrücken. Wenn Sie mehr als 10 % der Befunde unterdrücken, hat Ihr Code entweder Probleme oder Sie verwenden das falsche Regelset.

SCA: Abhängigkeits-Scanning

Ihre Abhängigkeiten sind eine Angriffsfläche. SCA-Tools scannen Ihre Paketmanifeste (package.json, requirements.txt, go.mod) und markieren Pakete mit bekannten Schwachstellen.

Was SCA erkennt

  • Bekannte CVEs — veröffentlichte Schwachstellen in bestimmten Paketversionen
  • Lizenzprobleme — GPL-Abhängigkeiten in proprietärem Code, Lizenzkonflikte
  • Veraltete Pakete — alte Versionen ohne Sicherheitsfixes
  • Schädliche Pakete — Typosquatting, kompromittierte Maintainer

Tool: Dependabot (GitHub)

Dependabot ist in GitHub integriert. Es scannt Abhängigkeiten, öffnet PRs zum Aktualisieren anfälliger Pakete und hält alles aktuell.

Im Repository aktivieren:

  1. Gehen Sie zu Settings → Security → Code security and analysis
  2. Aktivieren Sie „Dependabot alerts"
  3. Aktivieren Sie „Dependabot security updates"

Oder mit einer Datei konfigurieren:

# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10

- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"

- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"

Updates gruppieren, um PR-Lärm zu reduzieren:

# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
development-dependencies:
dependency-type: "development"
production-dependencies:
dependency-type: "production"
update-types:
- "minor"
- "patch"

Tool: Snyk

Snyk funktioniert mit GitHub, GitLab, Bitbucket und eigenständig. Der kostenlose Tarif umfasst unbegrenzte Tests für Open-Source-Projekte und begrenzte Scans für private Repositories.

CLI installieren:

npm install -g snyk
snyk auth

Lokal scannen:

# Aktuelles Projekt testen
snyk test

# Testen und Behebung anzeigen
snyk test --show-vulnerable-paths=all

# Auf neue Schwachstellen überwachen
snyk monitor

GitHub Actions-Integration:

name: Snyk Security

on:
push:
branches: [main]
pull_request:

jobs:
snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run Snyk
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high

GitLab CI-Integration:

snyk:
stage: test
image: snyk/snyk:node
script:
- snyk auth $SNYK_TOKEN
- snyk test --severity-threshold=high
allow_failure: true # Don't block on medium/low

Tool: Trivy

Trivy scannt alles — Container-Images, Dateisysteme, Git-Repositories, Kubernetes-Manifeste, Terraform. Es ist unglaublich vielseitig.

Installation:

# macOS
brew install trivy

# Linux
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin

Dateisystem scannen (Abhängigkeiten):

trivy fs --severity HIGH,CRITICAL .

Container-Image scannen:

trivy image --severity HIGH,CRITICAL myapp:latest

GitHub Actions für Container-Scanning:

name: Container Security

on:
push:
branches: [main]

jobs:
trivy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build image
run: docker build -t myapp:${{ github.sha }} .

- name: Run Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:${{ github.sha }}
severity: 'CRITICAL,HIGH'
exit-code: '1'

Native Paketmanager-Audits

Die meisten Paketmanager haben eingebautes Schwachstellen-Scanning:

# npm
npm audit
npm audit fix

# yarn
yarn audit

# pip
pip-audit

# composer
composer audit

# bundler
bundle audit

# go
govulncheck ./...

Zur CI-Pipeline hinzufügen:

# GitHub Actions - npm audit
- name: Security audit
run: npm audit --audit-level=high

Umgang mit Abhängigkeits-Schwachstellen

Wenn eine Schwachstelle einen Fix hat:

  1. Auf die gepatchte Version aktualisieren
  2. Tests ausführen
  3. Deployen

Wenn kein Fix verfügbar ist:

  1. Prüfen Sie, ob Sie die anfällige Funktion tatsächlich nutzen
  2. Echtes Risiko bewerten — ist der anfällige Code-Pfad erreichbar?
  3. Alternative Pakete in Betracht ziehen
  4. Falls akzeptables Risiko, dokumentieren und überwachen

Wenn Updates etwas kaputt machen:

  1. Prüfen, ob es ein Breaking Change ist, dem Sie sich anpassen können
  2. Vorübergehend auf die aktuelle Version fixieren
  3. Ein Ticket zur ordnungsgemäßen Behebung erstellen
  4. Eine Frist setzen — nicht auf unbestimmte Zeit liegen lassen

SBOM: Software Bill of Materials

Eine SBOM ist ein vollständiges Inventar aller Komponenten in Ihrer Software — jede Bibliothek, jedes Framework, jede Abhängigkeit, mit Versionen und Herkunft. Stellen Sie sich das als Zutatenliste für Ihre Anwendung vor.

Warum SBOM wichtig ist

Schnelligkeit bei der Vorfallsreaktion. Als Log4Shell im Dezember 2021 auftauchte, wussten Organisationen mit SBOMs innerhalb von Stunden, welche Anwendungen betroffen waren. Diejenigen ohne verbrachten Tage oder Wochen mit manueller Untersuchung. Die U.S. Cybersecurity Executive Order 14028 verlangt jetzt SBOMs für Software, die an die Bundesregierung verkauft wird.

Sichtbarkeit der Lieferkette. Ihre App hängt von Paket A ab, das von B abhängt, das von C abhängt. Eine Schwachstelle in C betrifft Sie, aber Sie wissen vielleicht nicht, dass C ohne eine SBOM existiert. Transitive Abhängigkeiten sind ohne geeignetes Tooling unsichtbar.

Lizenz-Compliance. Das MIT-lizenzierte Paket, das Sie verwenden, könnte von einer GPL-Bibliothek abhängen. Ohne eine SBOM werden Sie es nicht wissen, bis der Rechtsabteilung anklopft. Lizenzanalyse erfordert die Kenntnis jeder Komponente in Ihrem Stack.

Kundenanforderungen. Enterprise-Kunden verlangen zunehmend SBOMs als Teil von Lieferanten-Sicherheitsbewertungen. Gesundheitswesen, Finanzwesen und öffentliche Stellen schreiben sie oft vor.

SBOM-Formate

Zwei Hauptformate dominieren:

FormatBetreiberAm besten fürLink
SPDXLinux FoundationLizenz-Compliance, breite Verbreitungspdx.dev
CycloneDXOWASPSicherheitsfokus, Schwachstellen-Trackingcyclonedx.org

Beide sind maschinenlesbar (JSON, XML) und für die meisten Zwecke austauschbar. CycloneDX hat bessere Schwachstellen-Korrelation; SPDX hat breitere Branchenadoption für Lizenz-Compliance.

SBOMs generieren

Tool: Syft — der Standard für SBOM-Generierung

# Install
brew install syft
# or
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

# Generate SBOM from directory
syft dir:. -o cyclonedx-json > sbom.json

# Generate from container image
syft myapp:latest -o spdx-json > sbom.spdx.json

# Generate from package lock files
syft dir:. -o cyclonedx-json --catalogers javascript

GitHub Actions:

- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
image: myapp:${{ github.sha }}
format: cyclonedx-json
output-file: sbom.json

- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom.json

GitLab CI:

generate_sbom:
stage: build
image: anchore/syft
script:
- syft dir:. -o cyclonedx-json > sbom.json
artifacts:
paths:
- sbom.json

Weitere SBOM-Generatoren:

ToolTypAm besten fürLink
SyftCLIUniverselle GenerierungGitHub
TrivyCLIKombiniertes Scanning + SBOMtrivy.dev
cdxgenCLICycloneDX-nativGitHub
Microsoft SBOM ToolCLI.NET, allgemeinGitHub
SPDX SBOM GeneratorCLISPDX-nativGitHub

SBOMs auf Schwachstellen analysieren

Wenn Sie eine SBOM haben, scannen Sie sie auf bekannte Schwachstellen:

Tool: Grype — Schwachstellen-Scanner, der SBOMs verarbeitet

# Install
brew install grype

# Scan SBOM for vulnerabilities
grype sbom:sbom.json

# Scan with severity filter
grype sbom:sbom.json --only-fixed --fail-on high

GitHub Actions:

- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
image: myapp:latest
output-file: sbom.json

- name: Scan SBOM for vulnerabilities
uses: anchore/scan-action@v3
with:
sbom: sbom.json
fail-build: true
severity-cutoff: high

Weitere Schwachstellen-Scanner für SBOMs:

ToolPreisFunktionenLink
GrypeKostenlosSchnell, SBOM-nativGitHub
TrivyKostenlosUniverseller Scannertrivy.dev
OSV-ScannerKostenlosGoogles OSV-DatenbankGitHub
SnykKostenloser TarifBeste Behebungshinweisesnyk.io
OWASP Dependency-TrackKostenlos (selbst gehostet)Vollständige SBOM-Verwaltungsplattformdependencytrack.org
Anchore EnterpriseKostenpflichtigPolicy-Engine, Complianceanchore.com
Sonatype Nexus LifecycleKostenpflichtigTiefgehende Analyse, Richtliniensonatype.com

SBOMs auf Lizenz-Compliance analysieren

Lizenzprobleme können genauso schädlich sein wie Sicherheitsschwachstellen — rechtliche Risiken, erzwungene Offenlegung von proprietärem Code oder die Unfähigkeit, an bestimmte Kunden zu liefern.

Häufige Lizenzbedenken:

LizenztypBedenkenBeispiellizenzen
CopyleftKann das Offenlegen Ihres Codes erfordernGPL, AGPL, LGPL
Schwaches CopyleftErfordert Namensnennung, einige EinschränkungenMPL, EPL
PermissivIm Allgemeinen sicher für kommerzielle NutzungMIT, Apache 2.0, BSD
UnbekanntKeine Lizenz = alle Rechte vorbehaltenUnlizenzierte Pakete

Tool: OWASP Dependency-Track — vollständige SBOM-Verwaltung

Dependency-Track ist eine kostenlose, selbst gehostete Plattform, die SBOMs aufnimmt und Folgendes bietet:

  • Schwachstellen-Tracking über alle Projekte hinweg
  • Lizenz-Compliance-Analyse
  • Richtliniendurchsetzung
  • Historisches Tracking
# Run with Docker
docker run -d -p 8080:8080 dependencytrack/bundled

Dann SBOMs über API oder UI hochladen.

Kommerzielle Lizenz-Compliance-Tools:

ToolPreisFunktionenLink
OWASP Dependency-TrackKostenlos (selbst gehostet)Vollständige SBOM-Plattformdependencytrack.org
FOSSAKostenloser Tarif, kostenpflichtige PläneTiefe Lizenzanalysefossa.com
SnykKostenloser TarifLizenz-Scanning enthaltensnyk.io
Mend (WhiteSource)KostenpflichtigEnterprise-Compliancemend.io
Black DuckEnterpriseTiefe Lizenz-Intelligenzsynopsys.com
Sonatype NexusKostenpflichtigLizenzrichtliniensonatype.com
SnykKostenloser TarifVereinheitlichte Sicherheit + Lizenzsnyk.io

Schneller Lizenz-Scan mit Trivy:

# Scan for licenses
trivy fs --scanners license .

# Check for specific problematic licenses
trivy fs --scanners license --license-full .

GitHub Actions für Lizenz-Compliance:

- name: License check
uses: fossas/fossa-action@main
with:
api-key: ${{ secrets.FOSSA_API_KEY }}

SBOM im CI/CD-Workflow

SBOM-Generierung und -Analyse in Ihre Pipeline integrieren:

# Complete SBOM workflow
name: SBOM Pipeline

on:
push:
branches: [main]
release:
types: [published]

jobs:
sbom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build image
run: docker build -t myapp:${{ github.sha }} .

# Generate SBOM
- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
image: myapp:${{ github.sha }}
format: cyclonedx-json
output-file: sbom.json

# Scan for vulnerabilities
- name: Vulnerability scan
uses: anchore/scan-action@v3
with:
sbom: sbom.json
fail-build: true
severity-cutoff: high

# Check licenses
- name: License scan
run: |
trivy fs --scanners license --severity HIGH,CRITICAL . \
--exit-code 1

# Store SBOM with release
- name: Upload SBOM to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: sbom.json

Best Practices für SBOMs

  1. Mit jedem Build generieren. SBOMs sollten Artefakte sein, die zusammen mit Ihren Releases versioniert werden.

  2. SBOMs mit Releases speichern. An GitHub-Releases anhängen, in einer Artefakt-Registry speichern oder in Dependency-Track hochladen.

  3. Schwachstellen-Scanning automatisieren. Nicht nur generieren — analysieren. Benachrichtigungen für neue CVEs einrichten, die Ihre Komponenten betreffen.

  4. Lizenzrichtlinien definieren. Entscheiden Sie, welche Lizenzen für Ihren Anwendungsfall akzeptabel sind. Builds blockieren, die problematische Lizenzen einführen.

  5. Mit Kunden teilen. Wenn Kunden SBOMs benötigen, die Lieferung automatisieren. Daraus keinen manuellen Prozess machen.

  6. Kontinuierlich überwachen. Neue Schwachstellen werden täglich entdeckt. Gespeicherte SBOMs gegen aktualisierte Schwachstellen-Datenbanken scannen.

DAST: dynamisches Testen

DAST-Tools testen laufende Anwendungen, indem sie Anfragen senden und Antworten analysieren. Sie finden Probleme, die statische Analyse nicht sehen kann — Laufzeit-Fehlkonfigurationen, Authentifizierungsumgehungen, Probleme mit Antwort-Headern.

Was DAST erkennt

ProblemWie DAST es findet
Fehlende SicherheitsheaderPrüft Antwort-Header
XSSInjiziert Payloads, prüft auf Reflexion
SQL-InjectionInjiziert SQL, prüft auf Fehler/Verhaltensänderungen
AuthentifizierungsumgehungTestet Zugriff ohne gültige Zugangsdaten
CORS-FehlkonfigurationTestet Cross-Origin-Anfragen
SSL/TLS-ProblemeTestet Zertifikat, Protokollversionen

Tool: OWASP ZAP

ZAP (Zed Attack Proxy) ist das Standard-Open-Source-DAST-Tool. Es kann automatische Scans durchführen oder als abfangender Proxy für manuelle Tests verwendet werden.

Docker-basierter CI-Scan:

# GitHub Actions
name: DAST Scan

on:
push:
branches: [main]

jobs:
zap:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Start application
run: |
docker compose up -d
sleep 30 # Wait for app to start

- name: ZAP Baseline Scan
uses: zaproxy/action-[email protected]
with:
target: 'http://localhost:3000'
rules_file_name: '.zap/rules.tsv'
allow_issue_writing: false

GitLab CI-Integration:

dast:
stage: test
image: ghcr.io/zaproxy/zaproxy:stable
script:
- mkdir -p /zap/wrk
- zap-baseline.py -t $STAGING_URL -r report.html -I
artifacts:
paths:
- report.html
only:
- main

Baseline- vs. vollständiger Scan:

Scan-TypDauerAbdeckungAnwendungsfall
Baseline1–5 MinutenPassive Prüfungen, keine AngriffeJedes Deployment
Vollständig30–60+ MinutenAktive Angriffe, gründlichWöchentlich, vor Releases

Tool: Nuclei

Nuclei ist schnell, Template-basiert und ideal für spezifische Schwachstellen-Prüfungen.

Installation:

# macOS/Linux
brew install nuclei

# or
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

Scans ausführen:

# Default templates
nuclei -u https://staging.example.com

# Specific severity
nuclei -u https://staging.example.com -severity high,critical

# Specific templates
nuclei -u https://staging.example.com -t cves/ -t misconfigurations/

CI-Integration:

nuclei:
stage: test
image: projectdiscovery/nuclei
script:
- nuclei -u $STAGING_URL -severity high,critical -o results.txt
artifacts:
paths:
- results.txt

Wann DAST ausführen

DAST braucht eine laufende Anwendung, was die CI/CD-Integration verkompliziert:

Option 1: Staging nach dem Deployment testen

deploy_staging:
stage: deploy
script:
- ./deploy-staging.sh

dast_scan:
stage: test
needs: [deploy_staging]
script:
- zap-baseline.py -t $STAGING_URL

Option 2: Kurzlebige Umgebung hochfahren

dast:
stage: test
services:
- docker:dind
script:
- docker compose up -d
- sleep 30
- nuclei -u http://docker:3000 -severity critical
- docker compose down

Option 3: Geplante Scans (nicht in der PR-Pipeline)

# Run weekly, not on every commit
dast_weekly:
stage: security
script:
- zap-full-scan.py -t $PRODUCTION_URL -r report.html
only:
- schedules

IaC-Scanning: Infrastructure as Code

Wenn Sie Terraform, CloudFormation oder Kubernetes-Manifeste verwenden, brauchen Sie IaC-Scanning. Fehlkonfigurationen in Infrastruktur-Code sind genauso gefährlich wie Anwendungs-Schwachstellen — offene S3-Buckets, übermäßig permissive IAM-Rollen, unverschlüsselte Datenbanken.

Was IaC-Scanning erkennt

ProblemBeispiel
Öffentliche S3-Bucketsacl = "public-read"
Übermäßig permissives IAMAction: "*", Resource: "*"
Unverschlüsselter SpeicherFehlendes encrypted = true
Offene Security-Groups0.0.0.0/0 Ingress
Fehlende ProtokollierungCloudTrail, VPC-Flow-Logs deaktiviert
Hartcodierte GeheimnisseAPI-Schlüssel in Terraform-Variablen

Tool: Checkov

Checkov ist der umfassendste kostenlose IaC-Scanner. Er unterstützt Terraform, CloudFormation, Kubernetes, Helm, ARM und mehr.

Installation:

pip install checkov

Lokal scannen:

# Scan Terraform directory
checkov -d terraform/

# Scan specific file
checkov -f main.tf

# Output as JSON for CI
checkov -d terraform/ -o json

GitHub Actions:

- name: Checkov
uses: bridgecrewio/checkov-action@master
with:
directory: terraform/
soft_fail: false
skip_check: CKV_AWS_18,CKV_AWS_21 # Skip specific checks if needed

GitLab CI:

checkov:
stage: test
image: bridgecrew/checkov
script:
- checkov -d terraform/ --output cli --output junitxml --output-file-path console,results.xml
artifacts:
reports:
junit: results.xml

Tool: tfsec (Terraform-spezifisch)

Wenn Sie nur Terraform verwenden, ist tfsec schneller und Terraform-fokussiert.

Installation:

brew install tfsec

Scannen:

tfsec terraform/
tfsec terraform/ --severity-override=HIGH,CRITICAL

GitHub Actions:

- name: tfsec
uses: aquasecurity/tfsec-[email protected]
with:
working_directory: terraform/

Umgang mit IaC-Befunden

IaC-Befunde erfordern oft Kontext. Ein „öffentlicher S3-Bucket" kann absichtlich sein (Hosting einer statischen Website) oder ein kritisches Problem (Speicherung von Kundendaten).

Beabsichtigte Konfigurationen unterdrücken:

# tfsec:ignore:aws-s3-no-public-access
resource "aws_s3_bucket" "website" {
# This bucket intentionally hosts public website
bucket = "company-website-assets"
}
# Checkov skip
resource "aws_s3_bucket" "website" {
#checkov:skip=CKV_AWS_18:This bucket hosts public website
bucket = "company-website-assets"
}

Alles zusammensetzen

Ein vollständiges Sicherheits-Scanning-Setup für eine typische Webanwendung:

GitHub Actions-Beispiel

name: Security Pipeline

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
# SAST - runs on every commit
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Semgrep
uses: semgrep/semgrep-action@v1
with:
config: p/security-audit p/secrets

# SCA - runs on every commit
sca:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm ci

- name: npm audit
run: npm audit --audit-level=high

- name: Snyk test
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
continue-on-error: true # Alert but don't block

# Container scanning - if building images
container:
runs-on: ubuntu-latest
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v4

- name: Build image
run: docker build -t app:${{ github.sha }} .

- name: Trivy scan
uses: aquasecurity/trivy-action@master
with:
image-ref: app:${{ github.sha }}
severity: 'CRITICAL,HIGH'
exit-code: '1'

# DAST - only on main branch after deploy
dast:
runs-on: ubuntu-latest
needs: [sast, sca]
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4

- name: Deploy to staging
run: ./deploy-staging.sh

- name: ZAP Baseline
uses: zaproxy/action-[email protected]
with:
target: ${{ secrets.STAGING_URL }}

GitLab CI-Beispiel

stages:
- test
- build
- security
- deploy

variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

# SAST
semgrep:
stage: test
image: semgrep/semgrep
script:
- semgrep ci --config auto
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

# SCA - dependencies
dependency_scan:
stage: test
image: node:20
script:
- npm ci
- npm audit --audit-level=high
allow_failure: true

# SCA - Snyk
snyk:
stage: test
image: snyk/snyk:node
script:
- snyk auth $SNYK_TOKEN
- snyk test --severity-threshold=high
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

# Build container
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE

# Container scanning
trivy:
stage: security
image: aquasec/trivy
script:
- trivy image --exit-code 1 --severity HIGH,CRITICAL $DOCKER_IMAGE
needs: [build]

# DAST on staging
dast:
stage: security
image: ghcr.io/zaproxy/zaproxy:stable
script:
- zap-baseline.py -t $STAGING_URL -I
needs: [deploy_staging]
only:
- main

Wenn Scanner Probleme finden: Playbook für Security Champions

Ihre Pipeline hat einen Merge-Request blockiert. Oder schlimmer — sie hat etwas in Code markiert, der bereits in der Produktion ist. Was jetzt?

Dieser Abschnitt bietet einen strukturierten Ansatz für Security Champions, um mit Sicherheitsbefunden umzugehen, von der ersten Triage bis zur Behebung. Der Prozess folgt modernen Schwachstellen-Management-Methoden, einschließlich CVSS, SSVC und VEX.

Schritt 1: Erste Triage (5–10 Minuten)

Bevor Sie tief einsteigen, bewerten Sie schnell, womit Sie es zu tun haben:

Grundlegende Informationen sammeln:

FrageWo zu finden
Welcher Scanner hat es gefunden?Pipeline-Output, Tool-Name
Was ist der Befundtyp?CVE-ID, CWE, Regel-ID
Wo ist es?Datei, Zeilennummer, Abhängigkeit
Welchen Schweregrad meldet das Tool?Kritisch/Hoch/Mittel/Niedrig
Ist dies neuer oder bestehender Code?PR-Diff, git blame

Schnelle Klassifizierung:

Erste Triage-Fragen:

  • Ist dies ein bekanntes Falsch-Positiv? → Ja: dokumentieren und unterdrücken (Schritt 6). Nein: weiter zu Schritt 2.
  • Ist dies gerade in der Produktion? → Ja: paralleler Track — Produktionsexposition bewerten (Schritt 5). Nein: normalen Fluss fortsetzen.
  • Blockiert dies ein kritisches Deployment? → Ja: sofort eskalieren, mehr Augen hinzuziehen. Nein: methodisch fortfahren.

Schritt 2: Befund verifizieren (15–30 Minuten)

Nicht jede Scanner-Warnung ist eine echte Schwachstelle. Verifizieren Sie, bevor Sie mehr Zeit investieren.

Für SAST-Befunde (Code-Schwachstellen):

  1. Den markierten Code lesen. Verstehen Sie, was er tut.
  2. Den Datenfluss prüfen. Erreicht Benutzereingabe tatsächlich diesen Code?
  3. Die Eingabequelle verfolgen. Wird sie vorher validiert/bereinigt?
  4. Auf bestehende Schutzmaßnahmen prüfen. Framework-Sicherheitsfunktionen, WAF-Regeln, Eingabevalidierung.
# Example: Semgrep flags this as SQL injection
query = f"SELECT * FROM users WHERE id = {user_id}"

# Questions to answer:
# 1. Where does user_id come from? (request parameter? internal service?)
# 2. Is it validated before this line? (type check? allowlist?)
# 3. Is there a WAF or parameterization layer above?

Für SCA-Befunde (anfällige Abhängigkeiten):

  1. Prüfen Sie, ob Sie die anfällige Funktion nutzen. Die meisten CVEs betreffen spezifische Features.
  2. Die CVE-Beschreibung lesen. Was ist der Angriffsvektor?
  3. Ihren Code prüfen. Rufen Sie die anfällige API auf?
  4. Transitive Exposition prüfen. Nutzt eine andere Abhängigkeit das anfällige Feature?
# Find where a dependency is used
grep -r "require('vulnerable-package')" src/
grep -r "from vulnerable_package import" src/

# Check if specific vulnerable function is called
grep -r "vulnerableFunction(" src/

Für Container/IaC-Befunde:

  1. Prüfen Sie, ob die Konfiguration beabsichtigt ist. Einige „unsichere" Konfigurationen sind für Ihren Anwendungsfall gültig.
  2. Das tatsächliche Risiko verifizieren. Ist die Ressource exponiert? Gibt es eine kompensierende Kontrolle?
  3. Laufzeit vs. Build prüfen. Einige Befunde sind nur in bestimmten Umgebungen relevant.

Verifizierungsergebnis:

ErgebnisMaßnahme
Bestätigte SchwachstelleWeiter zu Schritt 3
Falsch-PositivDokumentieren und unterdrücken (Schritt 6)
UnsicherZweite Meinung einholen, standardmäßig als real behandeln

Schritt 3: Ausnutzbarkeit bewerten (15–45 Minuten)

Eine bestätigte Schwachstelle ist nicht unbedingt in Ihrem Kontext ausnutzbar. Bewerten Sie das reale Risiko.

Ausnutzbarkeitsfaktoren (basierend auf CVSS v4.0):

FaktorZu beantwortende Fragen
AngriffsvektorNetzwerkzugriff? Nur lokal? Physischer Zugriff erforderlich?
AngriffskomplexitätEinfach auszunutzen? Erfordert spezifische Bedingungen?
Erforderliche BerechtigungenAnonym? Authentifizierter Benutzer? Admin?
BenutzerinteraktionKeine? Opfer muss auf Link klicken?

Kontextspezifische Bewertung:

FaktorZu beantwortende Fragen
ExpositionIst dieser Code/diese Komponente aus dem Internet erreichbar?
DatensensibilitätAuf welche Daten könnte bei Ausnutzung zugegriffen werden?
Bestehende KontrollenWAF, Rate-Limiting, Authentifizierung, Netzwerksegmentierung?
Exploit-VerfügbarkeitÖffentlicher Exploit? Metasploit-Modul? Nur theoretisch?

Schnelle Ausnutzbarkeitsprüfung:

# Check if a public exploit exists
searchsploit CVE-2024-XXXXX

# Check ExploitDB
curl -s "https://www.exploit-db.com/search?cve=2024-XXXXX"

# Check CISA KEV (Known Exploited Vulnerabilities)
curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json | \
jq '.vulnerabilities[] | select(.cveID=="CVE-2024-XXXXX")'

Ausnutzbarkeits-Matrix:

Exploit verfügbarExtern erreichbarSensible Daten gefährdetPriorität
JaJaJaKRITISCH — Sofortmaßnahme
JaJaNeinHOCH — In diesem Sprint beheben
JaNeinJaHOCH — In diesem Sprint beheben
NeinJaJaMITTEL — Bald beheben
NeinNeinNeinNIEDRIG — Verfolgen, bei Gelegenheit beheben

Schritt 4: Geschäftliche Auswirkungen bestimmen (10–20 Minuten)

Technischer Schweregrad ≠ geschäftliche Auswirkungen. Ein kritischer CVE in einem Entwicklungstool ist weniger bedeutsam als ein mittleres Problem in Ihrem Zahlungssystem.

Fragen zur Auswirkungsbewertung:

KategorieFragen
VertraulichkeitWelche Daten könnten durchsickern? PII? Zugangsdaten? Geschäftsgeheimnisse?
IntegritätKönnten Daten verändert werden? Finanzunterlagen? Benutzerberechtigungen?
VerfügbarkeitKönnte das System zum Absturz gebracht werden? Wie lange?
ComplianceVerstößt dies gegen Vorschriften? DSGVO, PCI DSS, HIPAA?
ReputationWürde dies Schlagzeilen machen, wenn es ausgenutzt wird?

Priorität berechnen (SSVC-inspiriert):

Jeden Faktor bewerten und das Ergebnis summieren:

  • Ausnutzung — Aktiv in freier Wildbahn: +2 / PoC existiert: +1 / Keine bekannt: +0
  • Exposition — Internetfähig ohne Authentifizierung: +2 / Authentifiziert: +1 / Nur intern: +0
  • Auswirkung — Vollständige Systemkompromittierung: +2 / Datenzugriff oder -änderung: +1 / Begrenzt: +0

Gesamt: 5–6 → Sofort | 3–4 → Dringend | 1–2 → Geplant

Schritt 5: Produktionsexposition prüfen (paralleler Track)

Wenn der anfällige Code/die anfällige Komponente in der Produktion ist, müssen Sie das sofort wissen.

Zu beantwortende Fragen:

  1. Ist die Schwachstelle in der Produktion?

    • Eingesetzte Versionen prüfen
    • Release-Geschichte prüfen
    • Wann wurde sie eingeführt?
  2. Wurde sie ausgenutzt?

    • Anwendungslogs auf verdächtige Muster prüfen
    • WAF-Logs auf Angriffssignaturen prüfen
    • Zugriffslogs auf Anomalien prüfen
    • SIEM-Warnungen prüfen
  3. Was ist der Einflussbereich?

    • Welche Umgebungen sind betroffen?
    • Welche Kunden/Benutzer?
    • Wie lange war es exponiert?

Checkliste für Produktionsuntersuchungen:

# Check if vulnerable version is deployed
kubectl get deployments -o jsonpath='{.items[*].spec.template.spec.containers[*].image}'

# Search logs for exploit patterns (example for SQL injection)
grep -E "(UNION|SELECT.*FROM|DROP TABLE|--|;)" /var/log/app/*.log

# Check for unusual error rates
grep "500\|502\|503" /var/log/nginx/access.log | wc -l

# Check authentication failures spike
grep "authentication failed" /var/log/app/*.log | \
awk '{print $1}' | sort | uniq -c | sort -rn | head -20

Wenn Ausnutzung vermutet wird:

  1. Sofort eindämmen — Betroffenes Feature deaktivieren, IPs blockieren, Zugangsdaten rotieren
  2. Beweise sichern — Logs nicht löschen, Snapshots erstellen
  3. Incident Response einleiten — Dies ist jetzt ein Sicherheitsvorfall, nicht nur eine Schwachstelle
  4. Stakeholder benachrichtigen — Führungsebene, Rechtsabteilung, Compliance nach Bedarf

Schritt 6: Entscheiden und handeln

Wählen Sie basierend auf Ihrer Bewertung die geeignete Reaktion:

Reaktionsoptionen:

PrioritätReaktionZeitrahmenEntscheidung durch
SofortMerge blockieren, Hotfix für ProduktionStundenSecurity Champion + Lead
DringendIm aktuellen Sprint beheben, Produktions-Patch geplantTageSecurity Champion
GeplantZum Backlog hinzufügen, in normaler Entwicklung behebenWochenSecurity Champion
Risiko akzeptierenEntscheidung dokumentieren, Überwachung implementierenN/ASecurity Champion + Management
Falsch-PositivMit Dokumentation unterdrückenSofortSecurity Champion

Für bestätigte Schwachstellen — Fix-Workflow:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Ticket │────►│ Fix │────►│ Fix │────►│ Deployment │
│ erstellen │ │ umsetzen │ │ verifizieren│ │ + schließen│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
- CVE/CWE-ID - Codeänderung - Scanner - In Prod deployen
- Schweregrad - Abhängigkeits- ausführen - Auf Probleme
- Auswirkungs- update - Manuell überwachen
analyse - Konfig-Fix verifizieren - SBOM aktualisieren
- Betroffene - Regression- - Ticket schließen
Versionen tests

Für Falsch-Positive — Unterdrückungs-Workflow:

# 1. Document WHY it's a false positive
# semgrep: .semgrepignore or inline
def process_data(data):
# nosemgrep: sql-injection
# Reason: 'data' is validated UUID from internal service, not user input
query = f"SELECT * FROM cache WHERE id = '{data}'"

# 2. Add to team knowledge base
# Create entry in security wiki explaining this pattern

# 3. Consider improving the rule
# Report to Semgrep community if rule has high false positive rate

Für akzeptierte Risiken:

## Risk Acceptance Record

**Vulnerability:** CVE-2024-XXXXX in package-name v1.2.3
**Date:** 2024-12-28
**Decided by:** [Name], approved by [Manager]

### Risk assessment
- Severity: HIGH (CVSS 8.1)
- Exploitability in our context: LOW
- Reason: Vulnerable function not used in our codebase

### Mitigating controls
- [ ] WAF rule blocks attack pattern
- [ ] Input validation in place
- [ ] Monitoring for exploitation attempts

### Review schedule
- Next review: 2025-03-28
- Trigger for re-review: New exploit published, or mitigating control removed

### Acceptance signature
Accepted by: _____________ Date: _____________

Schritt 7: Wiederholung verhindern

Nach der Behebung das gleiche Problem daran hindern, erneut aufzutauchen.

Maßnahmen:

  1. Spezifische Scanner-Regeln hinzufügen — Bei benutzerdefiniertem Code-Muster eine Semgrep-Regel hinzufügen
  2. Abhängigkeitsrichtlinie aktualisieren — Anfällige Versionen in der Lockfile blockieren
  3. Zum Sicherheitstraining hinzufügen — Als Fallstudie mit dem Team teilen
  4. Erkennung verbessern — Wenn spät erkannt, Scanning-Abdeckung verbessern

Beispiel: Zukünftige Verwendung des anfälligen Musters verhindern:

# .semgrep.yml - custom rule to prevent pattern
rules:
- id: no-string-format-sql
patterns:
- pattern: f"SELECT ... {$VAR} ..."
message: "Use parameterized queries, not string formatting"
languages: [python]
severity: ERROR

Reaktionszeitrichtlinien

PrioritätErste ReaktionFix implementiertProduktion gepatcht
Sofort (Aktiver Exploit, kritische Daten)1 Stunde4 Stunden8 Stunden
Dringend (Öffentlicher Exploit, externe Exposition)4 Stunden24 Stunden48 Stunden
Geplant (Kein Exploit, begrenzte Exposition)24 Stunden1–2 WochenNächstes Release
Niedrig (Theoretisch, keine Exposition)1 Woche1–2 MonateBei Gelegenheit

Eskalationsmatrix

SituationEskalieren anMethode
Aktive Ausnutzung im GangeCTO, Incident Response, RechtsabteilungTelefonanruf
Kritische Schwachstelle in der ProduktionEngineering Lead, CTOSlack + Anruf
Unsicher über Schweregrad/AusnutzbarkeitSenior Engineer, externer BeraterSlack
Risikoakzeptanz erforderlichEngineering ManagerE-Mail mit Dokumentation
Hersteller-Patch erforderlichHersteller-SicherheitskontaktE-Mail, Support-Ticket

Dokumentationsvorlage

Diese Vorlage für jeden wesentlichen Befund verwenden:

## Security Finding Report

### Summary
- **Finding ID:** [JIRA/ticket number]
- **Scanner:** [Semgrep/Snyk/Trivy/etc]
- **Rule/CVE:** [Rule ID or CVE number]
- **Severity (tool):** [Critical/High/Medium/Low]
- **Severity (assessed):** [After your analysis]
- **Status:** [New/Investigating/Confirmed/Fixed/False Positive/Accepted]

### Technical details
- **Location:** [file:line or package:version]
- **Introduced:** [commit/date/PR]
- **In production:** [Yes/No, since when]

### Analysis
- **Verification result:** [Confirmed/False positive]
- **Exploitability:** [High/Medium/Low/None]
- **Attack vector:** [Description]
- **Existing controls:** [WAF/validation/etc]

### Impact
- **Confidentiality:** [None/Low/High]
- **Integrity:** [None/Low/High]
- **Availability:** [None/Low/High]
- **Business impact:** [Description]

### Resolution
- **Action taken:** [Fix/Accept/Suppress]
- **Fix PR:** [Link]
- **Deployed:** [Date]
- **Verified:** [How]

### Prevention
- **New scanner rule:** [Yes/No, link]
- **Training update:** [Yes/No]
- **Process change:** [Description]

Häufige Fehler

Alles blockieren

# BAD: Every finding blocks the build
- run: npm audit # Fails on ANY vulnerability

Das führt zu ignorierten Pipelines, deaktivierten Prüfungen oder einer „später beheben"-Kultur.

# GOOD: Block on critical, warn on medium
- run: npm audit --audit-level=critical

Nichts blockieren

# BAD: Scan runs but never fails
- run: semgrep --config auto || true

Sicherheitsbefunde häufen sich an, niemand schaut sich Berichte an.

# GOOD: Block on high severity
- run: semgrep --config auto --error --severity=ERROR

DAST auf Produktion ausführen

# BAD: Attacking your own production
- run: zap-full-scan.py -t https://production.example.com

Vollständige DAST-Scans können Dinge kaputt machen. Verwenden Sie Staging.

# GOOD: Attack staging only
- run: zap-full-scan.py -t $STAGING_URL

Tool-Output ignorieren

Scanning einrichten ohne Prozess zur Handhabung der Befunde. Tools finden Probleme → niemand triagiert → Warnungen werden ignoriert → Tools werden deaktiviert.

Lösung: Verantwortung zuweisen. Jemand überprüft Befunde wöchentlich. Kritische Probleme erzeugen Tickets. Mittlere Probleme werden monatlich überprüft.

Zu viele Tools

Fünf verschiedene SAST-Tools, drei SCA-Scanner betreiben und hoffen, dass mehr besser ist. Ergebnis: Rauschen, doppelte Befunde, langsame Pipelines.

Lösung: Mit einem Tool pro Kategorie beginnen. Weitere nur hinzufügen, wenn Sie spezifische Lücken haben.

Nur auf main scannen

# BAD: Issues found after merge
only:
- main

Probleme in PRs finden, nicht nachdem sie gemergt wurden.

# GOOD: Scan on every PR
on:
push:
branches: [main]
pull_request: # This is key

Reale Vorfälle

Codecov Supply-Chain-Angriff (2021). Angreifer kompromittierten Codecovs Bash-Uploader-Skript, das in Tausenden von CI/CD-Pipelines verwendet wurde. Über zwei Monate lang exfiltierte das modifizierte Skript Umgebungsvariablen — einschließlich CI-Geheimnisse, API-Token und Zugangsdaten — aus jeder Pipeline, die es nutzte. Unternehmen wie Twilio, HashiCorp und Confluent waren betroffen.

ua-parser-js-Hijack (2021). Ein beliebtes npm-Paket (8 Millionen wöchentliche Downloads) wurde entführt, als ein Angreifer das npm-Konto des Maintainers kompromittierte. Schädliche Versionen schürften Kryptowährungen und stahlen Passwörter. Projekte mit SCA-Scanning erkannten das Problem innerhalb von Stunden; diejenigen ohne lieferten kompromittierte Builds aus.

Log4Shell (2021). CVE-2021-44228 in Log4j betraf praktisch jede Java-Anwendung. Organisationen mit SCA-Scanning kannten ihre Exposition innerhalb von Stunden. Diejenigen ohne verbrachten Tage damit herauszufinden, welche Anwendungen Log4j verwendeten und in welchen Versionen. Der Unterschied zwischen „wir sind gepatcht" und „wir untersuchen noch" war automatisches Abhängigkeits-Scanning.

Diese Vorfälle teilen ein Muster: Organisationen mit automatischem Scanning erkannten Probleme schneller und reagierten besser. Diejenigen ohne mussten improvisieren.

Workshop: Ihre Pipeline absichern

Reservieren Sie 2–3 Stunden für diese Übung.

Teil 1: SAST-Scanning hinzufügen (30 Minuten)

Für GitHub:

  1. .github/workflows/security.yml erstellen:
name: Security Scan

on:
push:
branches: [main]
pull_request:

jobs:
semgrep:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semgrep/semgrep-action@v1
with:
config: p/security-audit p/secrets
  1. Committen und pushen
  2. Einen Test-PR erstellen und prüfen, ob der Scan läuft
  3. Alle Befunde überprüfen

Für GitLab:

  1. Zu .gitlab-ci.yml hinzufügen:
semgrep:
stage: test
image: semgrep/semgrep
script:
- semgrep ci --config auto
  1. Committen und pushen
  2. Prüfen, ob der Scan in der Pipeline läuft
  3. Befunde im Pipeline-Output überprüfen

Lieferergebnis: Funktionierender SAST-Scan in CI

Teil 2: Dependabot oder Snyk konfigurieren (30 Minuten)

Option A — Dependabot (GitHub):

  1. .github/dependabot.yml erstellen:
version: 2
updates:
- package-ecosystem: "npm" # or pip, bundler, etc.
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
  1. Zu Settings → Security → Dependabot-Warnungen und Sicherheitsupdates aktivieren
  2. Vorhandene Warnungen im Security-Tab überprüfen

Option B — Snyk:

  1. Bei snyk.io anmelden (kostenloser Tarif)
  2. CLI installieren: npm install -g snyk
  3. Authentifizieren: snyk auth
  4. Ersten Scan ausführen: snyk test
  5. Zu CI hinzufügen (siehe obige Beispiele)

Lieferergebnis: Abhängigkeits-Scanning aktiviert mit überprüften ersten Befunden

Teil 3: Container-Scanning hinzufügen (30 Minuten)

Wenn Sie Docker verwenden:

  1. Trivy zu Ihrem Workflow hinzufügen:
container-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: docker build -t myapp:test .
- uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:test
severity: 'CRITICAL,HIGH'
  1. Ihr Image lokal bauen und scannen:
docker build -t myapp:test .
trivy image myapp:test
  1. Befunde überprüfen und kritische Probleme beheben

Lieferergebnis: Container-Scanning in CI mit dokumentierten Basis-Image-Schwachstellen

Teil 4: DAST-Baseline einrichten (30 Minuten)

  1. Ihre App in einer Staging-Umgebung deployen (oder lokal ausführen)

  2. ZAP-Baseline-Scan ausführen:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t http://your-staging-url
  1. Den Output überprüfen — prüfen auf:

    • Fehlende Sicherheitsheader
    • Cookie-Sicherheitsprobleme
    • Informationsoffenlegung
  2. Baseline-Scan zur CI-Pipeline hinzufügen (nur Staging)

Lieferergebnis: DAST-Baseline-Scan für Staging konfiguriert

Teil 5: IaC-Scanning hinzufügen (20 Minuten)

Wenn Sie Terraform, CloudFormation oder Kubernetes verwenden:

  1. Checkov installieren:
pip install checkov
  1. Ihren Infrastruktur-Code scannen:
checkov -d terraform/  # or cloudformation/, k8s/
  1. Zu CI hinzufügen:
# GitHub Actions
- name: Checkov
uses: bridgecrewio/checkov-action@master
with:
directory: terraform/
soft_fail: false
  1. Befunde überprüfen und kritische Fehlkonfigurationen beheben

Lieferergebnis: IaC-Scanning in CI mit dokumentierten wesentlichen Problemen

Teil 6: SBOM-Generierung einrichten (20 Minuten)

  1. Syft installieren:
brew install syft
# or
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
  1. SBOM für Ihr Projekt generieren:
syft dir:. -o cyclonedx-json > sbom.json
  1. SBOM auf Schwachstellen scannen:
brew install grype
grype sbom:sbom.json
  1. Zu CI hinzufügen:
# GitHub Actions
- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
path: .
format: cyclonedx-json
output-file: sbom.json

- name: Scan SBOM
uses: anchore/scan-action@v3
with:
sbom: sbom.json
fail-build: true
severity-cutoff: high
  1. Lizenzinformationen in der SBOM überprüfen

Lieferergebnis: SBOM-Generierung und -Scanning in CI

Teil 7: Triage-Prozess erstellen (30 Minuten)

Ein einfaches Dokument erstellen:

# Security Findings Triage Process

## Severity levels
- **Critical/High**: Block merge, fix immediately
- **Medium**: Fix in current sprint
- **Low**: Add to backlog, fix when convenient

## Who triages
- [Name] reviews findings weekly
- Critical findings notify #security-alerts channel

## False positives
- Document in `.semgrep.yml` or tool config
- Require approval from [Name] to suppress

## Metrics tracked
- Open findings by severity
- Time from finding to fix
- Findings per deployment

Lieferergebnis: Dokumentierter Triage-Prozess

Ergebnisse dieses Kapitels

Am Ende dieses Kapitels sollten Sie haben:

  1. SAST-Scanner konfiguriert — Semgrep oder CodeQL läuft bei jedem PR
  2. Dependabot/Snyk aktiviert — Abhängigkeits-Scanning mit konfigurierten Warnungen
  3. Container-Scanning — Trivy scannt Docker-Images (falls zutreffend)
  4. IaC-Scanning — Checkov oder tfsec scannt Infrastruktur-Code (falls zutreffend)
  5. SBOM-Generierung — Syft generiert SBOMs mit jedem Build
  6. DAST-Baseline — ZAP oder Nuclei läuft bei Staging-Deployments
  7. Sicherheits-Workflow-Datei — Vollständige CI/CD-Sicherheits-Pipeline-Konfiguration
  8. Befunds-Reaktions-Playbook — Schrittweiser Prozess für den Umgang mit Scanner-Befunden
  9. Eskalationsmatrix — Wen man für verschiedene Schweregrade kontaktiert
  10. Triage-Prozess-Dokument — Wie Befunde priorisiert und zugewiesen werden

Gespräch mit der Führungsebene

Wenn jemand fragt, warum Sie Sicherheits-Scanning zur CI/CD hinzufügen:

„Ich füge unserer Deployment-Pipeline automatische Sicherheitsprüfungen hinzu. Diese Tools scannen unseren Code auf Schwachstellen, prüfen unsere Abhängigkeiten auf bekannte Sicherheitsprobleme und testen die laufende Anwendung auf häufige Angriffsvektoren. Das fängt Probleme ab, bevor sie die Produktion erreichen — SQL-Injection, anfällige Bibliotheken, fehlkonfigurierte Server. Die Tools sind kostenlos und fügen unserer Pipeline vielleicht 2–3 Minuten hinzu. Die Alternative ist, diese Probleme nach einem Sicherheitsvorfall zu finden, was sowohl finanziell als auch reputationsmäßig deutlich teurer ist."

Kurze Version: „Ich füge automatische Sicherheitsprüfungen hinzu, damit wir Schwachstellen vor Angreifern finden."

Selbstprüfung

Statische Analyse (SAST)

  • Semgrep oder CodeQL läuft bei jedem PR
  • Hochschwere Befunde blockieren den Merge
  • Falsch-Positiv-Unterdrückungs-Prozess dokumentiert
  • Team weiß, wie SAST-Befunde gelesen werden

Abhängigkeits-Scanning (SCA)

  • Dependabot oder Snyk aktiviert
  • Warnungen konfiguriert und werden überprüft
  • Kritische Abhängigkeits-Schwachstellen behoben
  • Prozess für den Umgang mit nicht behebbaren Schwachstellen

Container-Scanning

  • Trivy scannt Images vor dem Push zur Registry
  • Basis-Images aktualisiert, um kritische Schwachstellen zu beheben
  • Scanning in Build-Pipeline integriert

Infrastructure as Code (IaC)

  • Checkov oder tfsec läuft bei Infrastrukturänderungen
  • Kritische Fehlkonfigurationen (öffentliche Buckets, offene Security-Groups) blockiert
  • Beabsichtigte Ausnahmen mit Skip-Kommentaren dokumentiert

SBOM (Software Bill of Materials)

  • SBOM für jedes Release generiert
  • SBOMs auf Schwachstellen gescannt
  • Lizenzrichtlinie definiert (akzeptable/blockierte Lizenzen)
  • SBOMs mit Release-Artefakten gespeichert

Dynamisches Testen (DAST)

  • Baseline-Scan läuft auf Staging
  • Sicherheitsheader geprüft
  • Vollständiger Scan geplant (wöchentlich oder vor Release)

Befunds-Reaktionsprozess

  • Befunds-Reaktions-Playbook dokumentiert
  • Eskalationsmatrix definiert
  • Risikoakzeptanz-Prozess etabliert
  • Befunds-Dokumentationsvorlage in Verwendung

Prozess

  • Jemand besitzt die Sicherheitsbefunds-Triage
  • Schweregrad-Schwellenwerte definiert
  • Metriken werden verfolgt

Mindestens 18 von 28 Punkten abhaken, bevor Sie weitermachen.

Referenz: Sicherheits-Scanning-Tools

Dieser Abschnitt bietet eine umfassende Liste von Sicherheits-Scanning-Tools, geordnet von kostenlos/einfach bis Enterprise/komplex. Mit dem kostenlosen Tarif beginnen — er deckt die meisten Anforderungen ab. Zu kostenpflichtigen Tools wechseln, wenn Sie spezifische Features, besseren Support oder Enterprise-Compliance benötigen.

SAST-Tools (statische Code-Analyse)

ToolPreisSprachenAm besten fürLink
SemgrepKostenlos (Open Source)30+ SprachenAllzweck, benutzerdefinierte Regelnsemgrep.dev
BanditKostenlos (Open Source)PythonPython-spezifische SicherheitGitHub
gosecKostenlos (Open Source)GoGo-spezifische SicherheitGitHub
BrakemanKostenlos (Open Source)Ruby/RailsRails-Anwendungenbrakemanscanner.org
ESLint securityKostenlos (Open Source)JavaScriptJS/Node.js-SicherheitsregelnGitHub
PsalmKostenlos (Open Source)PHPPHP-Typprüfung + Sicherheitpsalm.dev
PHPStanKostenlos (Open Source)PHPPHP-statische Analysephpstan.org
CodeQLKostenlos für öffentliche Repos10+ SprachenTiefe semantische AnalyseGitHub
SonarQube CommunityKostenlos (selbst gehostet)30+ SprachenCode-Qualität + Sicherheitsonarsource.com
Semgrep ProKostenpflichtig30+ SprachenErweiterte Regeln, Team-Featuressemgrep.dev
SonarCloudKostenlos für öffentlich, kostenpflichtig für privat30+ SprachenCloud-gehostetes SonarQubesonarcloud.io
Snyk CodeKostenloser Tarif, kostenpflichtige Pläne10+ SprachenKI-gestützt, schnellsnyk.io
CheckmarxEnterprise30+ SprachenEnterprise-Compliancecheckmarx.com
VeracodeEnterprise30+ SprachenEnterprise, Binäranalyseveracode.com
FortifyEnterprise30+ SprachenEnterprise, On-Premisemicrofocus.com

Empfehlung für kleine Teams: Mit Semgrep beginnen (kostenlos, schnell, gute Regeln). CodeQL hinzufügen, wenn Sie auf GitHub sind. Snyk Code in Betracht ziehen, wenn Sie mehr Abdeckung benötigen.

SCA-Tools (Abhängigkeits-Scanning)

ToolPreisÖkosystemeAm besten fürLink
npm auditKostenlos (eingebaut)npmNode.js-Projektedocs.npmjs.com
pip-auditKostenlos (Open Source)pipPython-ProjekteGitHub
bundle-auditKostenlos (Open Source)bundlerRuby-ProjekteGitHub
govulncheckKostenlos (offiziell)Go modulesGo-Projektepkg.go.dev
composer auditKostenlos (eingebaut)ComposerPHP-Projektegetcomposer.org
DependabotKostenlos (GitHub eingebaut)15+ ÖkosystemeGitHub-ReposGitHub
TrivyKostenlos (Open Source)Alle großen + ContainerUniverseller Scannertrivy.dev
GrypeKostenlos (Open Source)Alle großen + ContainerSchnell, SBOM-UnterstützungGitHub
OSV-ScannerKostenlos (Google)Alle großenGoogles OSV-DatenbankGitHub
OWASP Dependency-CheckKostenlos (Open Source)Java, .NET, JS, RubyOWASP-Projektowasp.org
RenovateKostenlos (Open Source)50+ ÖkosystemeAbhängigkeits-UpdatesGitHub
Snyk Open SourceKostenloser Tarif, kostenpflichtige PläneAlle großenBeste Fix-Vorschlägesnyk.io
Mend (WhiteSource)KostenpflichtigAlle großenLizenz-Compliancemend.io
Black DuckEnterpriseAlle großenEnterprise-Compliancesynopsys.com
JFrog XrayKostenpflichtigAlle großenArtefakt-Repository-Integrationjfrog.com

Empfehlung für kleine Teams: Dependabot verwenden (kostenlos auf GitHub) oder Renovate. Trivy für Container hinzufügen. Snyk kostenloser Tarif ist gut, wenn Sie mehr Sichtbarkeit benötigen.

DAST-Tools (dynamisches Testen)

ToolPreisTypAm besten fürLink
OWASP ZAPKostenlos (Open Source)Vollständiges DASTAllgemeines Webanwendungs-Testenzaproxy.org
NucleiKostenlos (Open Source)Template-basiertSchnell, spezifische CVE-Prüfungennuclei.projectdiscovery.io
NiktoKostenlos (Open Source)Web-Server-ScannerServer-FehlkonfigurationenGitHub
wapitiKostenlos (Open Source)Web-App-ScannerBlack-Box-TestenGitHub
ArachniKostenlos (Open Source)Vollständiges DASTFunktionsreicher ScannerGitHub
sqlmapKostenlos (Open Source)SQL-InjectionSQL-Injection-Testensqlmap.org
StackHawkKostenloser Tarif, kostenpflichtige PläneAPI-fokussiertModerne APIs, CI/CD-nativstackhawk.com
Burp Suite CommunityKostenlosManuelles TestenManuelles Sicherheitstestenportswigger.net
Burp Suite Pro449 $/JahrVollständiges DASTProfessionelles Penetration-Testingportswigger.net
AcunetixKostenpflichtigVollständiges DASTAutomatisiertes Web-Scanningacunetix.com
Invicti (Netsparker)EnterpriseVollständiges DASTEnterprise-Webanwendungeninvicti.com
Qualys WASEnterpriseVollständiges DASTEnterprise, Compliancequalys.com

Empfehlung für kleine Teams: Mit ZAP-Baseline-Scans in CI beginnen. Nuclei für CVE-spezifische Prüfungen hinzufügen. Burp Suite Community für manuelle Tests.

Container- und Image-Scanning

ToolAm besten fürLizenzLink
TrivyAll-in-one-Scanning, einfache EinrichtungApache 2.0trivy.dev
GrypeSchnelles CVE-Scanning, funktioniert mit SyftApache 2.0github.com/anchore/grype
ClairRegistry-Integration, Enterprise-SkalierungApache 2.0github.com/quay/clair
Docker ScoutDocker Hub-Integration, nativKostenloser Tarif verfügbardocker.com/products/docker-scout
Snyk ContainerEntwicklerfreundlich, BehebungshinweiseKostenloser Tarif verfügbarsnyk.io/product/container-security

Für kleine Teams ist Trivy die klare Wahl. Es ist kostenlos, schnell und erkennt die meisten Schwachstellen. Wenn Sie Docker Hub verwenden, ist Docker Scout praktisch, da es in das Docker CLI integriert ist (docker scout cves myimage:tag).

Infrastructure as Code (IaC)-Scanning

ToolPreisUnterstütztes IaCAm besten fürLink
CheckovKostenlos (Open Source)Terraform, CloudFormation, K8s, ARMUmfassendes IaC-Scanningcheckov.io
tfsecKostenlos (Open Source)TerraformTerraform-fokussiertGitHub
TerrascanKostenlos (Open Source)Terraform, K8s, Helm, DockerfilePolicy as CodeGitHub
KICSKostenlos (Open Source)15+ IaC-PlattformenBreite Abdeckungkics.io
cfn-lintKostenlos (AWS offiziell)CloudFormationAWS CloudFormationGitHub
cfn_nagKostenlos (Open Source)CloudFormationCloudFormation-SicherheitGitHub
kubesecKostenlos (Open Source)KubernetesK8s-Manifest-Sicherheitkubesec.io
TrivyKostenlos (Open Source)Terraform, K8s, DockerfileUniversal (IaC + Container)trivy.dev
Snyk IaCKostenloser Tarif, kostenpflichtige PläneTerraform, K8s, CloudFormationBehebungshinweisesnyk.io
BridgecrewKostenpflichtig (jetzt Prisma Cloud)Alle großenEnterprise, Checkov-Backendpaloaltonetworks.com

Empfehlung für kleine Teams: Mit Checkov beginnen — es ist umfassend und kostenlos. tfsec ist gut, wenn Sie nur Terraform verwenden.

IaC-Scanning in CI:

# GitHub Actions - Checkov
- name: Checkov
uses: bridgecrewio/checkov-action@master
with:
directory: terraform/
framework: terraform
soft_fail: false

# GitLab CI - tfsec
tfsec:
stage: test
image: aquasec/tfsec:latest
script:
- tfsec terraform/ --severity-override=HIGH,CRITICAL

SBOM-Generierung und -Analyse

ToolPreisTypAm besten fürLink
SyftKostenlos (Open Source)SBOM-GenerierungUniverseller GeneratorGitHub
cdxgenKostenlos (Open Source)SBOM-GenerierungCycloneDX-FormatGitHub
TrivyKostenlos (Open Source)SBOM + ScanningAll-in-onetrivy.dev
GrypeKostenlos (Open Source)SBOM-Schwachstellen-ScanSchnelles ScanningGitHub
OSV-ScannerKostenlos (Google)SBOM-Schwachstellen-ScanGoogles DatenbankGitHub
OWASP Dependency-TrackKostenlos (selbst gehostet)SBOM-PlattformVollständige Verwaltungdependencytrack.org
FOSSAKostenloser Tarif, kostenpflichtige PläneLizenz-ComplianceTiefe Lizenzanalysefossa.com
Anchore EnterpriseKostenpflichtigSBOM-PlattformEnterprise-Richtlinienanchore.com
Sonatype NexusKostenpflichtigSBOM + ComplianceRepository-Integrationsonatype.com

Empfehlung für kleine Teams: Syft zur SBOM-Generierung verwenden, Grype zum Scannen auf Schwachstellen. OWASP Dependency-Track hinzufügen, wenn Sie zentralisiertes Tracking benötigen.

Secret-Scanning

ToolPreisFunktionenAm besten fürLink
gitleaksKostenlos (Open Source)Git-Historie, Pre-CommitSchnell, konfigurierbargitleaks.io
truffleHogKostenlos (Open Source)Git, S3, GCS, verifizierte GeheimnisseTiefes ScanningGitHub
git-secretsKostenlos (AWS)Pre-Commit-HooksAWS-ZugangsdatenGitHub
detect-secretsKostenlos (Open Source)Baseline-AnsatzYelps ToolGitHub
GitHub Secret ScanningKostenlos (GitHub eingebaut)Push-SchutzGitHub-Reposdocs.github.com
GitLab Secret DetectionKostenlos (GitLab eingebaut)Pipeline-IntegrationGitLab-Reposdocs.gitlab.com
GitGuardianKostenlos für EinzelpersonenEchtzeit-ÜberwachungEntwicklerfreundlichgitguardian.com
SnykKostenloser TarifTeil von Snyk CodeEinheitliche Plattformsnyk.io

Empfehlung für kleine Teams: Eingebautes GitHub/GitLab-Scanning aktivieren. gitleaks als Pre-Commit-Hook hinzufügen. Siehe das Kapitel zur Secrets-Verwaltung für detaillierte Einrichtung.

API-Sicherheitstesten

ToolPreisTypAm besten fürLink
OWASP ZAPKostenlos (Open Source)OpenAPI/Swagger-ScanningREST APIszaproxy.org
NucleiKostenlos (Open Source)Template-basiertAPI-CVE-Prüfungennuclei.projectdiscovery.io
PostmanKostenloser TarifAPI-Test-PlattformManuell + automatisiertpostman.com
StackHawkKostenloser Tarif, kostenpflichtige PläneAPI-first DASTModerne APIs, GraphQLstackhawk.com
AktoKostenloser TarifAPI-Erkennung + TestenAPI-Inventarakto.io
42CrunchKostenpflichtigOpenAPI-SicherheitAPI-Sicherheitsplattform42crunch.com
Salt SecurityEnterpriseRuntime-API-SchutzAPI-Bedrohungserkennungsalt.security
Noname SecurityEnterpriseVollständige API-SicherheitEnterprise-APIsnonamesecurity.com

Empfehlung für kleine Teams: ZAP mit OpenAPI-Import verwenden. StackHawk hinzufügen, wenn Sie bessere API-Unterstützung benötigen.

All-in-one-Plattformen

Diese Plattformen kombinieren mehrere Scanning-Typen in einer Lösung:

PlattformEnthältPreisAm besten fürLink
GitHub Advanced SecuritySAST (CodeQL), SCA, Secrets49 $/Benutzer/MonatGitHub-native Teamsgithub.com
GitLab UltimateSAST, SCA, DAST, Secrets, Container99 $/Benutzer/MonatGitLab-native Teamsgitlab.com
SnykSAST, SCA, Container, IaCKostenloser Tarif, kostenpflichtige PläneEntwicklerfreundlichsnyk.io
SonarSAST, Code-QualitätKostenloser Tarif (Cloud), kostenpflichtigCode-Qualitätsfokussonarsource.com
VeracodeSAST, SCA, DASTEnterpriseGroße Unternehmenveracode.com
Checkmarx OneSAST, SCA, DAST, IaCEnterpriseEnterprise-Compliancecheckmarx.com
SynopsysSAST, SCA, DASTEnterpriseEnterprise, Legacysynopsys.com

Empfehlung für kleine Teams: Wenn Sie auf GitHub sind, zuerst kostenlose Features aktivieren, dann GitHub Advanced Security in Betracht ziehen. Snyks kostenloser Tarif ist großzügig und deckt die meisten Anforderungen ab. Enterprise-Plattformen vermeiden, bis Sie tatsächlich Enterprise-Features brauchen.

Schnellstart: minimale lebensfähige Sicherheits-Pipeline

Wenn Sie gerade anfangen, hier ist die minimale Einrichtung mit ausschließlich kostenlosen Tools:

KategorieToolWarum
SASTSemgrepSchnell, gute Regeln, kostenlos
SCADependabot oder TrivyEingebaut oder universell
SecretsgitleaksPre-Commit + CI
ContainerTrivyScannt alles
IaCCheckovUmfassend, kostenlos
SBOMSyft + GrypeGenerieren + scannen
DASTZAP BaselineStandard, zuverlässig

Gesamtkosten: 0 €. Einrichtungszeit: 3–4 Stunden.

Weiterführende Ressourcen

Was kommt als Nächstes

Sie haben Sicherheits-Scanning in Ihre CI/CD-Pipeline integriert. Nächstes Kapitel: Container- und Cloud-Infrastruktur-Sicherheit — Docker-Images absichern, Cloud-Konfigurationen sichern und Infrastructure as Code.