Dieses Dokument befindet sich in aktiver Entwicklung und ist noch nicht finalisiert.
Skip to content

3.1 CVE-Monitoring

Prozess

Das CVE-Monitoring scannt täglich alle aktiven Produkt-SBOMs gegen aktuelle CVE-Datenbanken. Ziel ist die frühzeitige Erkennung neu veröffentlichter Schwachstellen in Abhängigkeiten bereits ausgelieferter Produkte.

RECHTSGRUNDLAGE

Art. 10 Abs. 6 CRA: „Der Hersteller verfügt über wirksame und regelmäßige Verfahren und Mechanismen, um Schwachstellen in dem Produkt mit digitalen Elementen zu ermitteln."

Annex I, Teil II, Nr. 5: „Der Hersteller überwacht aktiv Schwachstellen Dritter, die in dem Produkt enthalten sind."

Workflow-Design

Trigger

yaml
on:
  schedule:
    - cron: '0 6 * * *'    # Täglich um 06:00 UTC
  workflow_dispatch:         # Manueller Trigger

Ablauf

1. Lade SBOMs der aktiven Produktversionen
   └── Quelle: Compliance-Repo (sbom/) oder GitHub Release-Assets

2. Scanne jede SBOM gegen aktuelle CVE-Datenbanken
   ├── trivy sbom sbom.cdx.json --severity CRITICAL,HIGH
   └── grype sbom:sbom.cdx.json --only-fixed --fail-on high

3. Parse Ergebnisse
   ├── Filtere nach Severity (CRITICAL, HIGH)
   ├── Extrahiere: CVE-ID, Package, Version, Fixed-Version
   └── Prüfe auf Duplikate (bereits gemeldete CVEs)

4. Bei neuen Findings:
   ├── GitHub Issue erstellen
   │   ├── Title: "[CVE-YYYY-XXXXX] <Package> – <Severity>"
   │   ├── Labels: security, cve, <severity>
   │   ├── Body: CVE-Details, betroffene Produkte, Fix-Version
   │   └── Assignee: Security Lead
   ├── Teams-Notification (bei CRITICAL)
   └── Bei aktiv ausgenutzt → ENISA-Meldeprozess triggern

5. Scan-Report archivieren
   └── Als GitHub Actions Artifact (90 Tage)

Workflow-Spezifikation

yaml
name: CVE Monitor

on:
  schedule:
    - cron: '0 6 * * *'
  workflow_dispatch:
    inputs:
      severity:
        description: 'Minimum severity to report'
        default: 'HIGH'
        type: choice
        options: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW']

jobs:
  scan-sboms:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        product: [product-a, product-b, firmware-esp32]
    steps:
      - name: Checkout Compliance Repo
        uses: actions/checkout@v4

      - name: Get Latest SBOM
        run: |
          SBOM=$(ls -t sbom/${{ matrix.product }}/sbom-*.cdx.json | head -1)
          echo "SBOM_PATH=$SBOM" >> $GITHUB_ENV

      - name: Trivy SBOM Scan
        uses: aquasecurity/trivy-action@master
        with:
          input: ${{ env.SBOM_PATH }}
          scan-type: sbom
          severity: CRITICAL,HIGH
          format: json
          output: trivy-results.json

      - name: Create Issues for New CVEs
        uses: actions/github-script@v7
        with:
          script: |
            const results = require('./trivy-results.json');
            // Erstelle Issue für jede neue CVE
            // Prüfe Duplikate über bestehende Issues

CVE-Datenbanken

DatenbankToolAbdeckung
NVD (NIST)Trivy, GrypeUmfassend – alle CVEs
GitHub Advisory DBDependabotSprachspezifisch
OSV (Open Source Vulnerability)TrivyOpen-Source-fokussiert
Red Hat Security DataTrivyLinux-Pakete
Alpine SecDBTrivyAlpine-Pakete

Issue-Template

markdown
## CVE-[YYYY-XXXXX]: [Package Name] – [Severity]

**Schweregrad:** CRITICAL / HIGH
**CVSS Score:** X.X
**Betroffen:** [Produktname] v[Version]

### Details
- **Package:** [name]@[version]
- **Fixed in:** [fixed-version]
- **CVE:** https://nvd.nist.gov/vuln/detail/CVE-YYYY-XXXXX
- **Beschreibung:** [CVE-Beschreibung]

### Betroffene Produkte
| Produkt | Version | SBOM |
|---------|---------|------|
| [Name]  | [Ver]   | [Link] |

### Empfohlene Maßnahme
- [ ] Package auf Version [fixed-version] aktualisieren
- [ ] Patch testen
- [ ] Release erstellen
- [ ] SBOM aktualisieren
- [ ] Prüfe: Wird CVE aktiv ausgenutzt? → [ENISA-Meldeprozess](/de/incident-response/enisa-reporting)

### Klassifizierung
- **Aktiv ausgenutzt:** Ja / Nein / Unbekannt
- **ENISA-Meldepflichtig:** Ja / Nein

SLA für CVE-Behandlung

SeverityReaktionszeitPatch-DeadlineReferenz
CRITICAL4 Stunden48 StundenAnnex I, Teil II, Nr. 7
HIGH24 Stunden7 TageAnnex I, Teil II, Nr. 7
MEDIUM72 Stunden30 TageBest Practice
LOW7 TageNächster ReleaseBest Practice

Dokumentation lizenziert unter CC BY-NC 4.0 · Code lizenziert unter MIT