SBOM für den CRA erstellen: Tools, Formate, CI/CD

Praxisleitfaden zur SBOM-Erstellung für die CRA-Compliance: Open-Source-Tools, Formatauswahl und automatisierte Pipeline-Integration.

CRA Evidence-Team Veröffentlicht 5. Februar 2026 Aktualisiert 12. Juli 2026
Ein gebautes Artefakt wird zu einer SBOM gescannt, die Komponenten auflistet, und dann in kontinuierliches Monitoring überführt
In diesem Artikel

Der CRA verlangt eine Software-Stückliste (SBOM). Jeder Wettbewerberartikel sagt Ihnen das. Keiner zeigt Ihnen die Erstellung Schritt für Schritt.

Dieser Leitfaden behandelt Open-Source-Tools, Formatauswahl und CI/CD-Integration ohne Vendor-Lock-in.

Zusammenfassung

  • CRA erfordert maschinenlesbare SBOMs, die „mindestens Abhängigkeiten der obersten Ebene" abdecken
  • Empfohlene Formate: CycloneDX 1.4+ oder SPDX 2.3+ (gemäß BSI TR-03183)
  • Open-Source-Tools: Syft (Images/Dateisysteme), Trivy (Container), cdxgen (Quellcode)
  • Integrieren Sie die SBOM-Erstellung in CI/CD für automatische Updates
  • Qualität zählt: Mindestfelder umfassen Paketname, Version, Lieferant, Hash, Lizenz

CI/CD SBOM-Pipeline

Alle sechs Stufen automatisieren, damit jedes Release eine frische, signierte SBOM erzeugt.

1
Code

Ein Commit startet die Pipeline bei einem Merge auf main oder einem Versions-Tag-Push.

EingangQuellcode + Lock-Dateien

2
Build

Container-Image oder Binary aus versionierten Abhängigkeiten zusammengestellt.

EingangGebautes Artefakt

3
Erstellen

Syft, Trivy oder cdxgen scannt das Artefakt und erzeugt eine CycloneDX- oder SPDX-Datei.

Ausgabesbom.cdx.json

4
Signieren

Cosign signiert die SBOM-Datei und erzeugt ein Sigstore-Bundle mit Signatur und Zertifikat.

Ausgabesbom.cdx.json.sigstore.json

5
Speichern

SBOM in CI-Artefakten archiviert oder zusammen mit dem Release-Tag zu CRA Evidence hochgeladen.

Ausgabe10 Jahre aufbewahrt

6
Überwachen

Gespeicherte SBOM wird gegen neue CVEs erneut gescannt; Alarme werden ausgelöst, wenn neue Schwachstellen auf Komponenten zutreffen.

LaufendSchwachstellen-Alarme

Was der CRA tatsächlich verlangt

Beginnen wir mit dem, was die Verordnung sagt. Anhang I, Teil II des CRA verlangt von Herstellern:

„Schwachstellen und Komponenten der Produkte mit digitalen Elementen ermitteln und dokumentieren, u. a. durch Erstellung einer Software-Stückliste in einem gängigen maschinenlesbaren Format, aus der zumindest die obersten Abhängigkeiten der Produkte hervorgehen"

Kernpunkte:

  • Maschinenlesbares Format: Kein PDF, keine Tabellenkalkulation, sondern strukturierte Daten
  • Mindestens Abhängigkeiten der obersten Ebene: Der Mindestumfang, obwohl mehr besser ist
  • Nicht öffentlich erforderlich: Wird Behörden auf Anfrage bereitgestellt
  • Muss aktualisiert werden: Mit jeder Veröffentlichung, jedem Patch oder jeder Komponentenänderung

Der CRA schreibt kein spezifisches Format vor, aber Standardisierungsbemühungen weisen klar auf CycloneDX und SPDX hin.

Die SBOM ist Teil der CRA technischen Dokumentation gemäß Anhang VII. Hersteller müssen diese Dokumentation vor dem Inverkehrbringen eines Produkts erstellen und sie Marktüberwachungsbehörden mindestens 10 Jahre nach dem Inverkehrbringen oder für die Dauer des Supportzeitraums zur Verfügung halten, je nachdem, welcher Zeitraum länger ist (Artikel 13 Absatz 13). Eine lokal gespeicherte SBOM ohne Bezug zu einem konkreten Produkt-Release erfüllt diese Anforderung nicht. Sie muss abrufbar, versioniert und an die beschriebene Produktversion geknüpft sein.

Formatauswahl: CycloneDX vs. SPDX

Zwei Formate dominieren die SBOM-Landschaft. Beide sind für die CRA-Compliance akzeptabel.

CycloneDX

Herkunft: OWASP-Projekt, sicherheitsorientiert Aktuelle Version: 1.6 (1.4+ für CRA empfohlen) Optimal für: Sicherheits- und Schwachstellenmanagement

Stärken:

  • Native VEX-Unterstützung (Vulnerability Exploitability eXchange)
  • Für Sicherheitsanwendungsfälle konzipiert
  • Leichtere Spezifikation, einfacher umzusetzen
  • Starkes Tool-Ökosystem
  • Direkte CVE/Schwachstellen-Verknüpfung

JSON-Beispiel:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "version": 1,
  "components": [
    {
      "type": "library",
      "name": "lodash",
      "version": "4.17.21",
      "purl": "pkg:npm/lodash@4.17.21",
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "cc6d..."
        }
      ],
      "licenses": [
        {
          "license": {
            "id": "MIT"
          }
        }
      ]
    }
  ]
}

SPDX

Herkunft: Linux Foundation, lizenzorientiert Aktuelle Version: 2.3; ISO/IEC 5962:2021 standardisierte SPDX 2.2.1 Optimal für: Lizenz-Compliance und rechtliche Prüfung

Stärken:

  • ISO-Internationaler Standard
  • Umfassende Lizenzausdruckssyntax
  • Stark im Open-Source-Compliance-Kontext
  • Längere Erfolgsbilanz
  • Besser für komplexe Lizenzierungsszenarien

JSON-Beispiel:

{
  "spdxVersion": "SPDX-2.3",
  "dataLicense": "CC0-1.0",
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "my-application",
  "packages": [
    {
      "SPDXID": "SPDXRef-Package-lodash",
      "name": "lodash",
      "versionInfo": "4.17.21",
      "downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
      "licenseConcluded": "MIT",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "cc6d..."
        }
      ]
    }
  ]
}

Welches Format wählen?

Anwendungsfall Empfehlung
Primärer Fokus ist Sicherheit/Schwachstellen CycloneDX
Primärer Fokus ist Lizenz-Compliance SPDX
VEX-Integration benötigt CycloneDX
Unternehmen mit bestehendem SPDX-Tooling SPDX
Deutscher Markt (BSI TR-03183) Beides (beide empfohlen)
Neustart, keine Präferenz CycloneDX (einfacher, sicherheitsorientiert)

Für CRA-Compliance funktioniert jedes Format. Wählen Sie eines und bleiben Sie konsistent.

Open-Source SBOM-Erstellungstools

Kein Vendor-Lock-in erforderlich. Diese Tools sind kostenlos, Open-Source und produktionsreif.

Syft (Anchore)

Optimal für: Container-Images, Dateisysteme, Archive Lizenz: Apache 2.0 Ausgabeformate: CycloneDX, SPDX, Syft JSON

Installation:

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

# Homebrew
brew install syft

# Docker
docker pull anchore/syft

Verwendungsbeispiele:

# Container-Image scannen
syft alpine:latest -o cyclonedx-json > sbom.cdx.json

# Verzeichnis scannen
syft dir:/path/to/project -o cyclonedx-json > sbom.cdx.json

# Archiv scannen
syft /path/to/archive.tar.gz -o spdx-json > sbom.spdx.json

# Mit spezifischen Katalogisierern scannen (z.B. nur Python)
syft dir:. -o cyclonedx-json --select-catalogers python

Unterstützte Ökosysteme: Python, Node.js, Ruby, Java, Go, Rust, PHP, .NET und mehr.

Trivy (Aqua Security)

Optimal für: Container-Images mit integriertem Schwachstellen-Kontext Lizenz: Apache 2.0 Ausgabeformate: CycloneDX, SPDX, plus Schwachstellenberichte

Installation:

# Linux (Debian/Ubuntu)
sudo apt-get install trivy

# macOS
brew install trivy

# Docker
docker pull aquasec/trivy

Verwendungsbeispiele:

# SBOM aus Container-Image erstellen
trivy image --format cyclonedx --output sbom.cdx.json alpine:latest

# SBOM aus Dateisystem erstellen
trivy fs --format cyclonedx --output sbom.cdx.json /path/to/project

# SBOM mit Schwachstellen-Info erstellen
trivy image --format cyclonedx --output sbom.cdx.json \
  --scanners vuln nginx:latest

Vorteil: Trivy kann SBOMs erstellen und in einem Durchgang nach Schwachstellen scannen.

cdxgen (CycloneDX)

Optimal für: Quellcode-Analyse über viele Sprachen hinweg Lizenz: Apache 2.0 Ausgabeformat: CycloneDX

Installation:

# npm (erfordert Node.js)
npm install -g @cyclonedx/cdxgen

# Docker
docker pull ghcr.io/cyclonedx/cdxgen

Verwendungsbeispiele:

# Aktuelles Verzeichnis scannen
cdxgen -o sbom.json

# Spezifischen Projekttyp scannen
cdxgen -t python -o sbom.json

# Mit tiefgreifender Abhängigkeitsauflösung scannen
cdxgen --deep -o sbom.json

# Spezifisches Verzeichnis scannen
cdxgen -o sbom.json /path/to/project

Unterstützte Sprachen: JavaScript, Python, Java, Go, Rust, PHP, Ruby, .NET, C/C++ und mehr.

Tool-Vergleich

Funktion Syft Trivy cdxgen
Container-Images Ausgezeichnet Ausgezeichnet Gut
Quellcode Gut Gut Ausgezeichnet
Dateisystem-Scan Ausgezeichnet Gut Gut
Schwachstellen-Scan Nein (Grype nutzen) Ja Nein
CycloneDX-Ausgabe Ja Ja Ja
SPDX-Ausgabe Ja Ja Nein
Geschwindigkeit Schnell Mittel Mittel
Sprachabdeckung Sehr breit Breit Sehr breit

Empfehlung: Beginnen Sie mit Syft für die meisten Anwendungsfälle. Fügen Sie Trivy hinzu, wenn Sie integriertes Schwachstellen-Scanning benötigen. Verwenden Sie cdxgen für komplexe Quellcode-Projekte.

Firmware und Embedded-Geräte

Die oben genannten Tools eignen sich gut für Container und Paketmanager. Bei Firmware und Embedded-Geräten, dem primären CRA-Ziel, ist der Ansatz ein anderer.

Firmware-Images sind binäre Blobs, keine Paket-Registries. Der erste Schritt ist die Extraktion des Dateisystems:

# Dateisystem aus Firmware-Image extrahieren
binwalk -Me firmware.bin

# Syft auf dem extrahierten Dateisystem ausführen
syft dir:_firmware.bin.extracted/squashfs-root -o cyclonedx-json > sbom.cdx.json

Verwenden Sie binwalk -Me (rekursive Extraktion) statt -e bei verschachtelten oder komprimierten Images. Die Abdeckung ist geringer als bei Container-Images. Gestripte Binaries verlieren Symbol-Informationen, und Syft erkennt möglicherweise nicht alle Komponenten.

Für die Analyse auf Binärebene bieten BLint, cve-bin-tool und EMBA tiefere Einblicke. Proprietäre SDKs und Closed-Source-Bibliotheken in Firmware erfordern in der Regel manuelle SBOM-Einträge. Dokumentieren Sie Anbieter, Version und Quell-URL.

CI/CD-Integration

Manuelle SBOM-Erstellung skaliert nicht. Integrieren Sie sie in Ihre Build-Pipeline.

GitHub Actions

name: SBOM-Erstellung

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

jobs:
  sbom:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write   # erforderlich für Cosign Keyless-Signierung
    steps:
      - name: Code auschecken
        uses: actions/checkout@v4

      - name: Container-Image bauen
        run: |
          docker build -t myapp:${{ github.sha }} .

      - name: Syft installieren
        run: |
          curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

      - name: SBOM aus gebautem Image erstellen
        run: |
          syft myapp:${{ github.sha }} -o cyclonedx-json > sbom.cdx.json

      - name: Cosign installieren
        uses: sigstore/cosign-installer@v3

      - name: SBOM signieren (Keyless)
        run: |
          cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json --yes

      - name: SBOM und Signatur als Artefakte hochladen
        uses: actions/upload-artifact@v4
        with:
          name: sbom
          path: |
            sbom.cdx.json
            sbom.cdx.json.sigstore.json
          retention-days: 90

      # Optional: Zu CRA Evidence für langfristige Compliance-Speicherung hochladen
      - name: Zu CRA Evidence hochladen
        if: github.event_name == 'release'
        env:
          CRA_EVIDENCE_TOKEN: ${{ secrets.CRA_EVIDENCE_TOKEN }}
        run: |
          curl -X POST https://api.craevidence.com/api/v1/ci/sbom \
            -H "Authorization: Bearer $CRA_EVIDENCE_TOKEN" \
            -F "file=@sbom.cdx.json" \
            -F "product_id=${{ vars.PRODUCT_ID }}" \
            -F "version=${{ github.ref_name }}"

Hinweis: Das CI-Artefakt (retention-days: 90) dient dem Entwicklerkomfort, nicht der Compliance. Für die CRA-konforme 10-jährige Aufbewahrung laden Sie bei jedem Release in einen dedizierten Langzeitspeicher hoch. Siehe den Abschnitt Aufbewahrung weiter unten.

GitLab CI

generate-sbom:
  stage: build
  image: anchore/syft:latest
  script:
    - syft dir:. -o cyclonedx-json > sbom.cdx.json
  artifacts:
    paths:
      - sbom.cdx.json
    expire_in: 90 days
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
    - if: $CI_COMMIT_TAG

Jenkins

pipeline {
    agent any

    stages {
        stage('SBOM erstellen') {
            steps {
                sh '''
                    curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b .
                    ./syft dir:. -o cyclonedx-json > sbom.cdx.json
                '''
            }
        }

        stage('SBOM archivieren') {
            steps {
                archiveArtifacts artifacts: 'sbom.cdx.json', fingerprint: true
            }
        }
    }
}

Docker Build Integration

SBOM während des Docker-Builds erstellen:

# Multi-Stage Build mit SBOM-Erstellung
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# SBOM im Build-Stage erstellen
FROM anchore/syft:latest AS sbom
COPY --from=builder /app /app
RUN syft dir:/app -o cyclonedx-json > /sbom.cdx.json

# Finales Image
FROM node:20-slim
COPY --from=builder /app/dist /app
COPY --from=sbom /sbom.cdx.json /app/sbom.cdx.json
CMD ["node", "/app/index.js"]

SBOM-Signierung

Der CRA schreibt keine SBOM-Signierung vor. Eine Signatur belegt jedoch, dass die SBOM seit ihrer Erstellung nicht verändert wurde. Enterprise-Einkaufsteams und notifizierte Stellen erwarten zunehmend eine verifizierbare Signatur zusammen mit der SBOM-Datei.

Cosign (Teil des Sigstore-Projekts) ist das Standardtool:

# Cosign installieren
brew install cosign

# SBOM-Datei signieren. Erzeugt ein Bundle mit Signatur und Zertifikat
cosign sign-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json

# Später verifizieren
cosign verify-blob sbom.cdx.json --bundle sbom.cdx.json.sigstore.json \
  --certificate-identity <your-identity> \
  --certificate-oidc-issuer <your-issuer>

Speichern Sie sbom.cdx.json und sbom.cdx.json.sigstore.json zusammen. Das Bundle enthält die Signatur, das Signierzertifikat und den Rekor-Transparenzlog-Eintrag. Jeder mit dem Bundle kann die SBOM verifizieren, ohne Sie zu kontaktieren.

Für CI/CD unterstützt Cosign Keyless-Signierung mit der OIDC-Identität der Pipeline (GitHub Actions, GitLab CI). Es gibt keine Schlüssel zu verwalten. Das GitHub-Actions-Beispiel oben enthält dies bereits: Der Job benötigt die Berechtigung id-token: write, und sign-blob verwendet --yes, um ohne interaktive Eingabe zu laufen. Ab Cosign 2.0 ist Keyless-Signierung der Standard; das alte COSIGN_EXPERIMENTAL-Flag wird nicht mehr benötigt.

Kontinuierliches Monitoring

Eine signierte, gespeicherte SBOM ist nicht das Ziel. Neue Schwachstellen werden für Komponenten gemeldet, die zum Zeitpunkt des Release sauber waren. Die gespeicherte SBOM muss regelmäßig erneut gescannt werden, damit diese CVEs sichtbar werden.

Grype liest eine vorhandene SBOM direkt, sodass der erneute Scan keine originale Build-Umgebung benötigt:

name: SBOM-Rescan

on:
  schedule:
    - cron: "0 6 * * 1"  # Wöchentlich, Montag 06:00 UTC

jobs:
  rescan:
    runs-on: ubuntu-latest
    steps:
      - name: Gespeicherte SBOM abrufen
        env:
          SBOM_URL: ${{ vars.SBOM_URL }}
        run: |
          curl -sSfL -o sbom.cdx.json "$SBOM_URL"

      - name: Grype installieren
        run: |
          curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

      - name: SBOM auf neue CVEs scannen
        run: |
          grype sbom:./sbom.cdx.json

CRA Evidence führt diesen Rescan automatisch für jede hochgeladene SBOM durch und benachrichtigt Sie, wenn ein neuer CVE auf eine Komponente zutrifft.

SBOM-Qualität: TR-03183 erfüllen

Die deutsche BSI Technische Richtlinie TR-03183 erweitert die NTIA-Mindestanforderungen. EU-weit nicht rechtlich vorgeschrieben, gewährleistet die Befolgung von TR-03183 hochwertige SBOMs.

Erforderliche Felder

Feld Erforderlich durch Hinweise
Komponentenname NTIA + TR-03183 Paket-Identifikator
Version NTIA + TR-03183 Exakte Versionszeichenkette
Lieferant NTIA + TR-03183 Anbieter oder Maintainer
Eindeutiger Identifikator NTIA + TR-03183 PURL empfohlen
Abhängigkeitsbeziehung NTIA + TR-03183 Direkt vs. transitiv
Autor der SBOM NTIA + TR-03183 Wer hat die SBOM erstellt
Zeitstempel NTIA + TR-03183 Wann wurde SBOM erstellt
Hashwerte TR-03183 SHA-256 Minimum
Lizenz TR-03183 SPDX-Lizenz-ID
Quell-Repository TR-03183 VCS-URL falls verfügbar

SBOM-Qualität validieren

Verwenden Sie diese Tools, um Ihre SBOM zu prüfen:

# CycloneDX-Format validieren
npm install -g @cyclonedx/cyclonedx-cli
cyclonedx validate --input-file sbom.cdx.json

# Auf Mindestfelder mit jq prüfen
jq '.components[] | select(.version == null or .purl == null)' sbom.cdx.json

# Komponenten mit Hashes zählen
jq '[.components[] | select(.hashes != null)] | length' sbom.cdx.json

SBOM-Qualität verbessern

Wenn Ihrer SBOM Daten fehlen:

  1. Lock-Dateien verwenden: package-lock.json, Pipfile.lock, go.sum enthalten mehr Metadaten
  2. Gebaute Artefakte scannen: Vollständiger als reine Quellcode-Scans
  3. Tools kombinieren: Verschiedene Tools finden verschiedene Komponenten
  4. Manuelle Einträge hinzufügen: Für kommerzielle oder interne Komponenten

SBOMs aktuell halten

Eine SBOM ist eine Momentaufnahme. Sie muss aktualisiert werden, um nützlich zu bleiben.

Wann neu generieren

  • Bei jeder Veröffentlichung (Major, Minor, Patch)
  • Nach Abhängigkeits-Updates
  • Nach Sicherheitspatches
  • Bei Änderungen der Build-Konfiguration

Versionierungsstrategie

produkt-v1.0.0-sbom.cdx.json
produkt-v1.0.1-sbom.cdx.json
produkt-v1.1.0-sbom.cdx.json

Oder mit Zeitstempeln:

produkt-sbom-2026-01-15T10-30-00Z.cdx.json

Aufbewahrung

10 Jahre Aufbewahrung ist eine gesetzliche Pflicht

Artikel 13 Absatz 13 verpflichtet Hersteller, die technische Dokumentation mindestens 10 Jahre nach dem Inverkehrbringen des Produkts oder für die Dauer des Supportzeitraums für Marktüberwachungsbehörden bereitzuhalten, je nachdem, welcher Zeitraum länger ist. Die SBOM ist Teil dieser Dokumentation, daher gilt dieselbe Frist auch für sie.

Die CI-Artefakt-Aufbewahrung (90 Tage in den obigen Beispielen) dient dem Entwicklerkomfort, nicht der Compliance. Die 10-Jahres-Anforderung erfordert einen dedizierten Langzeitspeicher. CRA Evidence ist dafür konzipiert: versionierter SBOM-Speicher mit Schwachstellen-Rescanning und technischem Datei-Export, verknüpft mit jedem Produkt-Release.

Wenn Sie es selbst betreiben möchten, eignet sich jeder große Objektspeicher, sobald Sie die richtigen Steuerungsmechanismen aktivieren:

Objektspeicher Zu aktivierende Steuerungsmechanismen
Amazon S3 Versionierung, Lifecycle-Richtlinien, Object Lock, Zugriffssteuerung
Azure Blob Storage Unveränderlichkeitsrichtlinien, Zugriffstier-Verwaltung
Google Cloud Storage Aufbewahrungsrichtlinien, Objektversionierung

Eine Lifecycle-Richtlinie allein reicht nicht aus. Der Speicher muss auch Versionierung, Zugriffssteuerung und idealerweise Unveränderlichkeit unterstützen, um Prüfungsanforderungen zu erfüllen.

Häufige Fallstricke

Einmalige SBOM-Erstellung

Problem: Eine SBOM einmal erstellen und nie aktualisieren.

Lösung: Automatisieren Sie die SBOM-Erstellung in CI/CD. Jeder Build sollte eine frische SBOM produzieren.

Fehlende transitive Abhängigkeiten

Problem: SBOM listet nur direkte Abhängigkeiten auf, verschachtelte Pakete fehlen.

Lösung: Lock-Dateien verwenden, gebaute Artefakte scannen, Deep-Scanning-Optionen aktivieren.

Falsche Formatversion

Problem: CycloneDX 1.3 verwenden, obwohl TR-03183 1.4+ empfiehlt.

Lösung: Prüfen Sie die Ausgabeversion Ihres Tools. Aktualisieren Sie Tools regelmäßig.

Keine Hashwerte

Problem: Komponenten ohne kryptografische Hashes können nicht verifiziert werden.

Lösung: Stellen Sie sicher, dass Ihr Tool Hashes enthält. Syft und Trivy fügen SHA-256-Hashes hinzu, wenn sie die Komponentendateien lesen können.

Manuelle Erstellung

Problem: Handgefertigte SBOMs sind fehleranfällig und nicht nachhaltig.

Lösung: Immer automatisieren. Manuelle Einträge nur für Komponenten, die Tools nicht erkennen können.

Interne Komponenten ignorieren

Problem: Nur Open-Source-Abhängigkeiten dokumentieren, nicht proprietären Code.

Lösung: Interne Komponenten benötigen auch Dokumentation. Fügen Sie sie manuell hinzu oder konfigurieren Sie Tools entsprechend.

SBOM-Implementierungs-Checkliste

Formatauswahl
  • CycloneDX 1.4+ oder SPDX 2.3+ gewählt.
  • JSON-Format ausgewählt (maschinenlesbar, kein PDF oder Tabellenblatt).
  • Formatentscheidung für das Team dokumentiert.

Beide Formate erfüllen den CRA. BSI TR-03183 empfiehlt beide. Ein Formatwechsel mitten im Produkt ist aufwendig, entscheiden Sie daher vor dem ersten Release.

Tooling
  • Primäres Tool ausgewählt: Syft, Trivy oder cdxgen.
  • Tool installiert und lokal gegen ein echtes Artefakt getestet.
  • Ausgabe gegen das CycloneDX- oder SPDX-Schema validiert.

Passen Sie das Tool an das Artefakt an. Die Tool-Vergleichstabelle oben zeigt die beste Wahl für Container, Quellcode-Bäume und Firmware-Images.

CI/CD-Integration
  • SBOM-Erstellung zur Build-Pipeline hinzugefügt.
  • Artefakte mit angemessener Aufbewahrungsrichtlinie gespeichert.
  • Erstellung bei jedem Release-Tag ausgelöst, nicht nur bei Main-Branch-Pushes.

Ein Release ohne passende SBOM ist vom ersten Tag an eine Compliance-Lücke. Integrieren Sie die Erstellung in die Pipeline, damit der Schritt nicht übersprungen werden kann.

Qualitätssicherung
  • Alle Komponenten enthalten Name, Version und Lieferant.
  • Hashwerte für jede Komponente vorhanden (SHA-256 Minimum).
  • Lizenzinformationen mit SPDX-Lizenz-Identifikatoren enthalten.
  • Transitive Abhängigkeiten erfasst, nicht nur direkte.
  • PURL-Identifikatoren für jedes Paket verwendet.

Führen Sie cyclonedx validate aus und prüfen Sie auf fehlende Hashes mit jq '[.components[] | select(.hashes == null)] | length'.

Betrieb
  • SBOM versioniert und zusammen mit dem beschriebenen Produkt-Release benannt.
  • Historische SBOMs mit 10-jähriger Aufbewahrungsrichtlinie archiviert.
  • Prozess dokumentiert, damit jedes Teammitglied bei Bedarf neu generieren kann.

Aufbewahrung ist eine gesetzliche Pflicht, kein Housekeeping. Halten Sie jede historische SBOM für den gesamten Zeitraum an das beschriebene Release geknüpft.

CRA Evidence (optional)
  • API-Token in CI-Secrets konfiguriert.
  • SBOM-Upload bei Release über CLI oder API automatisiert.
  • TR-03183-Qualitätsbewertung nach dem ersten Upload geprüft.

CRA Evidence automatisiert Schwachstellen-Rescanning, Qualitätsbewertung und technischen Datei-Export mit integrierten SBOMs.

Häufig gestellte Fragen

Schreibt der CRA ein bestimmtes SBOM-Format vor?

Nein. Der CRA verlangt ein maschinenlesbares Format, nennt aber weder CycloneDX noch SPDX namentlich. Beide Formate erfüllen die Verordnung. BSI TR-03183 empfiehlt ausdrücklich CycloneDX 1.4+ oder SPDX 2.3+, und beide bieten eine vertretbare Wahl gegenüber Prüfern. Wählen Sie eines und verwenden Sie es konsistent über alle Releases.

Müssen transitive Abhängigkeiten enthalten sein?

Der CRA-Text sagt „mindestens Abhängigkeiten der obersten Ebene". Das ist das rechtliche Minimum. BSI TR-03183 empfiehlt vollständige transitive Abdeckung, und das ist es, was Behörden und Kunden zunehmend in der Praxis erwarten. Gebaute Artefakte statt Quell-Manifeste zu scannen ist der einfachste Weg, den vollständigen Abhängigkeitsbaum automatisch zu erfassen.

Muss die SBOM veröffentlicht werden?

Nein. Der CRA verlangt keine öffentliche Offenlegung. Sie müssen die SBOM Marktüberwachungsbehörden auf Anfrage bereitstellen können. Die Weitergabe an Kunden oder die öffentliche Veröffentlichung ist optional und eine Geschäftsentscheidung. Viele Hersteller stellen SBOMs Enterprise-Kunden im Rahmen der Beschaffung zur Verfügung.

Wie oft muss die SBOM aktualisiert werden?

Der CRA legt keinen Kalenderrhythmus fest. Jede Produktversion muss eine aktuelle SBOM haben. Praktisch bedeutet das: bei jedem Release, nach Abhängigkeits-Updates, nach Sicherheitspatches und bei Änderungen der Build-Konfiguration neu generieren. Die Automatisierung der SBOM-Erstellung in CI/CD macht dies automatisch statt zu einem manuellen Schritt, den man vergessen kann.

Reicht eine package.json oder requirements.txt aus?

Nein. Quell-Manifeste sind keine SBOMs. Eine CRA-konforme SBOM muss in einem maschinenlesbaren strukturierten Format (CycloneDX oder SPDX) vorliegen, kryptografische Hashes für jede Komponente enthalten und das gebaute Artefakt widerspiegeln, nicht nur den Quellcode-Baum. Eine package.json listet beabsichtigte Abhängigkeiten auf; eine CycloneDX-SBOM aus einem gescannten Container-Image dokumentiert, was tatsächlich ausgeliefert wurde.

Wie lange müssen SBOMs aufbewahrt werden?

Artikel 13 Absatz 13 verpflichtet Hersteller, technische Dokumentation mindestens 10 Jahre nach dem Inverkehrbringen des Produkts oder für die Dauer des Supportzeitraums aufzubewahren, je nachdem, welcher Zeitraum länger ist. Die SBOM ist Teil dieser Dokumentation, daher gilt die Aufbewahrungsfrist auch für sie.

Was tun, wenn eine Komponente keine PURL oder keinen Hash hat?

Tragen Sie sie manuell ein. Tools übersehen kommerzielle SDKs, proprietäre Bibliotheken und interne Komponenten, die nicht in öffentlichen Paket-Registries erscheinen. Ein manueller SBOM-Eintrag ist nach dem CRA zulässig. Eine nicht dokumentierte Komponente ist es nicht. Für Komponenten, bei denen Sie keinen Hash direkt berechnen können, dokumentieren Sie mindestens Quellort und Versionszeichenkette und notieren Sie die Lücke in Ihrer technischen Dokumentation.

Nächste Schritte

Was als Nächstes zu tun ist

  1. Wählen Sie jetzt ein Format. Nehmen Sie CycloneDX 1.5 für neue Projekte. Installieren Sie Syft und führen Sie es gegen Ihr Haupt-Repository oder Container-Image aus. Eine funktionierende SBOM in 15 Minuten ist nützlicher als eine perfekte Formatentscheidung, die eine Woche dauert.
  2. Fügen Sie die SBOM-Erstellung zu Ihrer CI/CD-Pipeline hinzu. Verwenden Sie die GitHub Actions-, GitLab CI- oder Jenkins-Beispiele oben. Übergeben Sie die Ausgabe als Release-Artefakt, damit jede Version ab dem Moment der Auslieferung eine entsprechende SBOM hat.
  3. Validieren Sie die Qualität. Führen Sie cyclonedx validate aus und prüfen Sie, dass jede Komponente einen Hash und eine PURL hat. Komponenten ohne Hashes bestehen die TR-03183-Anforderung nicht und werden Prüfer nicht zufriedenstellen.
  4. Verbinden Sie mit Schwachstellen-Scanning. Laden Sie Ihre SBOM zu CRA Evidence hoch oder führen Sie Grype dagegen aus. Eine SBOM, die nie gescannt wird, liefert Compliance-Papier, keine Sicherheitslage.
  5. Planen Sie jetzt für 10-jährige Aufbewahrung. Konfigurieren Sie Artefakt-Lifecycle-Richtlinien, bevor Sie drei Jahre Releases ohne sie haben. Aufbewahrungsregeln nachträglich anzuwenden ist aufwendig und manchmal unmöglich.

Anforderungen: Erfahren Sie, was der CRA für SBOMs verlangt, in unserem SBOM-Anforderungsleitfaden.

Qualität: Validieren Sie Ihre SBOM gegen den BSI TR-03183 Standard.

VEX: Fügen Sie Schwachstellen-Kontext zu Ihrer SBOM mit VEX-Dokumenten hinzu.


Dieser Artikel dient nur zu Informationszwecken und stellt keine Rechtsberatung dar. Für spezifische Compliance-Beratung konsultieren Sie qualifizierte Rechtsberater, die mit EU-Produktvorschriften vertraut sind.

CRA Deutschland SBOM
Share

Gilt der CRA für Ihr Produkt?

Beantworten Sie 6 einfache Fragen, um herauszufinden, ob Ihr Produkt unter die EU Cyberresilienz-Verordnung fällt. Erhalten Sie Ihr Ergebnis in unter 2 Minuten.

Bereit für CRA-Konformität?

Beginnen Sie mit der Verwaltung Ihrer SBOMs und Compliance-Dokumentation mit CRA Evidence.

Tiefer Einblick in CRA-Themen

Evergreen-Leitfäden zu den konkreten Anforderungen, Prozessen und Rollen aus dem EU Cyber Resilience Act (CRA).