Security & Hardening

Cyber Resilience Act und Open Source: Was auf dich zukommt, wenn dein Produkt Software enthält

Der CRA trifft dich als Hersteller, sobald du Software mit digitalen Elementen in Verkehr bringst, auch wenn Open Source darin steckt. Wer jetzt eine belastbare Stückliste seiner Komponenten aufbaut, hat den größten Teil der Vorarbeit erledigt.

5 Kapitel mit allen Befehlen
Zwei Security-Fachleute prüfen ein Dashboard im Betriebsraum
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Warum der CRA gerade jetzt Druck macht

Der Cyber Resilience Act ist seit dem 10. Dezember 2024 in Kraft. Ab dem 11. September 2026 gelten die Melde- und Schwachstellenpflichten, die vollständige Konformität mit CE-Kennzeichnung ist ab dem 11. Dezember 2027 fällig. Betroffen ist jedes Produkt mit digitalen Elementen, das in der EU auf den Markt gebracht wird, also die Steuerung im Maschinenbau genauso wie ein Medizingerät mit Embedded Linux, eine On-Premises-Software oder ein Gateway mit Yocto-Image. Wer bisher davon ausging, dass ihn Cybersicherheitsregulierung nur im eigenen Rechenzentrum trifft, verwechselt den CRA mit NIS2.

Der erste Schock ist meist die Rollenfrage. Hersteller im Sinne der Verordnung ist, wer ein Produkt unter eigenem Namen oder eigener Marke in Verkehr bringt, und dazu gehört auch der komplette Open-Source-Anteil im Auslieferungsstand. Ein Kernel, eine BusyBox, eine OpenSSL-Version oder ein Python-Paket aus dem Build kommen zwar von außen, die Verantwortung für Schwachstellenmanagement und Updates bleibt aber beim Inverkehrbringer. Für rein nicht-kommerzielle Open-Source-Entwicklung sieht der CRA Ausnahmen vor, und für Open-Source-Software-Verwalter gilt ein abgeschwächtes Regime, das entlastet dich als Produkthersteller jedoch nicht.

Typische Fehler sehen wir immer an denselben Stellen: Die SBOM wird einmalig als PDF erzeugt statt maschinenlesbar in CycloneDX oder SPDX aus dem Build-Prozess, sie deckt nur die direkten Abhängigkeiten der Applikation ab und ignoriert das Basis-Image oder das Root-Dateisystem, und niemand kann sagen, welche Firmware-Version bei welchem Kunden läuft. Wenn dann eine aktiv ausgenutzte Schwachstelle bekannt wird, fehlt der Nachweis der Betroffenheit, und die 24-Stunden-Frist für die Erstmeldung an ENISA und das zuständige CSIRT läuft trotzdem.

Miniatur-Szene: Serverschrank in einer Schutzhülle, Vorhängeschlösser und ein Schild davor
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt

Von der Komponente zur CRA-Konformität

  1. 01 Rolle und Produktklasse bestimmen
  2. 02 SBOM aus dem Build erzeugen
  3. 03 Schwachstellen bewerten und VEX pflegen
  4. 04 Meldewege für 24 und 72 Stunden
  5. 05 Signierte Updates über den Supportzeitraum
  6. 06 Technische Dokumentation und CE-Kennzeichnung
Was du mitnimmst

So bekommst du CRA-Konformität technisch in den Griff

Der CRA lässt sich nicht durch ein Compliance-Dokument erledigen, er verlangt Prozesse und Artefakte aus der Build- und Betriebskette. Die folgenden Schritte haben sich in Projekten bewährt, in denen Linux-basierte Produkte und Container-Images ausgeliefert werden.

Rolle und Produktklasse sauber bestimmen

Kläre zuerst, ob du Hersteller, Einführer oder Händler bist und ob dein Produkt in die Standardkategorie oder in die wichtigen beziehungsweise kritischen Klassen nach Anhang III und IV fällt. Davon hängt ab, ob eine Selbstbewertung reicht oder eine benannte Stelle eingebunden werden muss.

SBOM automatisiert aus dem Build erzeugen

Erzeuge die Stückliste maschinenlesbar in CycloneDX oder SPDX direkt in der Pipeline, etwa mit Syft oder Trivy für Container-Images und mit den SBOM-Klassen von Yocto für Embedded-Images. Nur so bleibt die SBOM mit jedem Release aktuell und lässt sich einer konkreten Artefakt-Signatur zuordnen.

Schwachstellen kontinuierlich gegen die SBOM prüfen

Gleiche die Komponentenliste laufend gegen NVD, OSV und die Advisories deiner Distribution ab und bewerte die Treffer statt sie nur zu zählen. Mit VEX-Dokumenten dokumentierst du nachvollziehbar, warum eine CVE dein Produkt nicht betrifft, zum Beispiel weil der verwundbare Codepfad nicht kompiliert oder nicht erreichbar ist.

Meldeprozess mit belastbaren Fristen aufsetzen

Definiere, wer eine aktiv ausgenutzte Schwachstelle oder einen schwerwiegenden Sicherheitsvorfall erkennt, wer meldet und wer freigibt. Der CRA verlangt eine Frühwarnung binnen 24 Stunden, eine inhaltliche Meldung binnen 72 Stunden und einen Abschlussbericht, das funktioniert nur mit benannten Rollen und einer Rufbereitschaft.

Update-Fähigkeit über den Supportzeitraum sicherstellen

Sicherheitsupdates müssen über den erwarteten Produktlebenszyklus verfügbar sein, mindestens fünf Jahre, sofern die Nutzungsdauer nicht kürzer ist. Praktisch heißt das signierte Update-Pakete, ein A/B-Update-Mechanismus oder Live Patching, eine gepflegte Kernel-Version und eine klar kommunizierte Support-Ende-Politik.

Secure by Design im Produkt nachweisen

Härtung ist Teil der grundlegenden Anforderungen: minimale Angriffsfläche im Image, keine Default-Passwörter, Secure Boot und signierte Artefakte, Least Privilege über systemd-Sandboxing und SELinux sowie sichere Standardkonfiguration. Diese Maßnahmen gehören dokumentiert in die technische Dokumentation, nicht nur in das Ticketsystem.

Tutorial

Die SBOM-Kette, die einem Audit standhält

Dieser Teil baut die technische Kette auf, die hinter den Pflichten steht: SBOM im Build erzeugen, ihre Qualität prüfen, sie täglich gegen neue Schwachstellen halten, Nicht-Betroffenheit maschinenlesbar belegen und das Ergebnis signiert ausliefern. Jeder Schritt hinterlässt ein Artefakt, das du im Ernstfall vorlegen kannst.

01

SBOM dort erzeugen, wo die Wahrheit liegt

Eine SBOM, die jemand nachträglich über ein fertiges Artefakt laufen lässt, ist eine Schätzung. Belastbar wird sie erst, wenn sie im selben Lauf entsteht wie das Artefakt und zusammen mit ihm abgelegt wird.

syft im CI-Lauf, zwei Stände
# Quellbaum inklusive Lockfiles
syft scan dir:. -o cyclonedx-json=sbom-source.cdx.json

# Fertiges Container-Image, inklusive Betriebssystempaketen
syft scan registry.firma.de/app:1.4.0 -o cyclonedx-json=sbom-image.cdx.json

# Beides gehört als Build-Artefakt an das Release, nicht in ein Wiki
sha256sum sbom-*.cdx.json > sbom.sha256

Die beiden Stände unterscheiden sich fast immer, und genau das ist die interessante Information. Der Quellbaum kennt deine direkten Abhängigkeiten und ihre Lizenzen, das Image kennt zusätzlich jedes Paket aus dem Basis-Image. Für die Frage nach der Angreifbarkeit zählt das Image.

02

Prüfen, ob deine SBOM überhaupt etwas taugt

Der häufigste Mangel sind Komponenten ohne Version und ohne eindeutige Kennung. Solche Einträge sind für jeden Abgleich wertlos, werden von Scannern stillschweigend übersprungen und fallen in einer Prüfung sofort auf.

Qualitätsprüfung mit jq und cyclonedx-cli
# Komponenten ohne Version
jq -r '.components[] | select(.version == null or .version == "") | .name' \
  sbom-image.cdx.json

# Komponenten ohne Package-URL, also ohne maschinenlesbare Kennung
jq -r '.components[] | select(.purl == null) | .name' sbom-image.cdx.json

# Zahlen für den Bericht
jq '[.components[]] | length' sbom-image.cdx.json
jq -r '.metadata.timestamp, .metadata.component.name' sbom-image.cdx.json

# Formal gegen das Schema prüfen
cyclonedx-cli validate --input-file sbom-image.cdx.json

Bau diese vier Abfragen als harte Schranke in die Pipeline ein. Eine SBOM, in der zehn Prozent der Einträge keine purl haben, liefert dir ein grünes Scan-Ergebnis, das nichts wert ist.

Was an jeder ausgelieferten SBOM hängen muss

  • Zeitstempel und erzeugendes Werkzeug im Metadaten-BlockOhne Zeitstempel kannst du später nicht belegen, welcher Stand zu welchem Release gehörte. Die Angabe des Werkzeugs erklärt Lücken, denn jeder Scanner deckt andere Ökosysteme unterschiedlich gut ab.
  • Package-URL an jeder KomponenteDer Abgleich mit Schwachstellendatenbanken läuft über die purl. Ein Eintrag ohne sie wird bei jedem Scan übersprungen, und du hältst eine grüne Ampel für ein Ergebnis.
  • Abhängigkeitsbeziehungen statt einer flachen ListeNur mit den Beziehungen kannst du beantworten, ob eine verwundbare Bibliothek von dir direkt eingebunden oder von einem Paket mitgeschleppt wird. Diese Antwort brauchst du innerhalb von Stunden, nicht Tagen.
  • Verknüpfung zum Artefakt über eine PrüfsummeEine SBOM ohne Bezug zu einem konkreten Digest passt zu jedem und zu keinem Build. Bei einer Meldung musst du in Minuten sagen können, welche Auslieferung betroffen ist.
  • Aufbewahrung über den gesamten Supportzeitraum des ProduktsDer Nachweis wird gebraucht, wenn das Release längst abgelöst ist. Ein CI-Artefakt mit dreißig Tagen Aufbewahrungsfrist erfüllt das nicht, ein Verzeichnis im Artefaktspeicher schon.
03

Täglich gegen den Bestand prüfen, nicht nur beim Build

Die Schwachstelle von morgen steckt in dem Artefakt, das du gestern ausgeliefert hast. Deshalb wird die gespeicherte SBOM neu bewertet, ohne dass ein neuer Build läuft.

Lokal in der Pipeline und zentral im Bestand
# Lokal im Build, bricht ab einer bestimmten Schwere ab
grype sbom:./sbom-image.cdx.json --fail-on high

# Zweitmeinung gegen dieselbe SBOM
trivy sbom sbom-image.cdx.json --severity HIGH,CRITICAL

# Zentral: SBOM an Dependency-Track übergeben. Dort wird sie bei jeder
# Aktualisierung der Datenbanken erneut bewertet, ganz ohne neuen Build.
curl -sf -X POST "https://dtrack.firma.de/api/v1/bom" \
  -H "X-Api-Key: $DTRACK_KEY" \
  -F "project=$PROJECT_UUID" \
  -F "bom=@sbom-image.cdx.json"

Der Unterschied zwischen den beiden Ebenen ist der entscheidende: Der Scan in der Pipeline schützt das nächste Release, die zentrale Bewertung schützt alles, was schon beim Kunden läuft. Der CRA fragt nach der zweiten.

04

Nicht betroffen ist eine Aussage, die du belegen musst

Ein Scanner meldet eine Schwachstelle in einer Bibliothek, deren verwundbarer Code in deinem Produkt nie aufgerufen wird. Diese Einschätzung gehört nicht in ein Ticket, sondern in ein maschinenlesbares Dokument, das mit dem Produkt ausgeliefert wird.

VEX-Aussage im OpenVEX-Format, Platzhalter ersetzen
{
  "@context": "https://openvex.dev/ns/v0.2.0",
  "author": "Produktsicherheit, Beispiel GmbH",
  "timestamp": "2026-03-04T09:00:00+01:00",
  "statements": [
    {
      "vulnerability": { "name": "CVE-JJJJ-NNNNN" },
      "products": [
        { "@id": "pkg:oci/app@sha256:0123456789abcdef" }
      ],
      "status": "not_affected",
      "justification": "vulnerable_code_not_in_execute_path"
    }
  ]
}

Die zulässigen Begründungen sind vorgegeben, unter anderem component_not_present, vulnerable_code_not_present, vulnerable_code_not_in_execute_path und inline_mitigations_already_exist. Genau diese Enge ist der Vorteil: Deine Einschätzung wird prüfbar, statt in einem Freitextfeld zu verschwinden.

05

Signieren, veröffentlichen, erreichbar sein

SBOM an das Image binden und prüfbar machen
# SBOM als Attestation an das Image hängen
cosign attest --predicate sbom-image.cdx.json \
  --type cyclonedx registry.firma.de/app:1.4.0

# Auf der Gegenseite prüfbar, ohne dass du Schlüssel verteilst
cosign verify-attestation --type cyclonedx \
  --certificate-identity-regexp '^https://gitlab.firma.de/' \
  --certificate-oidc-issuer https://gitlab.firma.de \
  registry.firma.de/app:1.4.0

Die Attestation hängt am Digest, nicht am Tag. Damit kann niemand ein anderes Image unter demselben Namen mit deiner SBOM verknüpfen, und dein Kunde kann die Herkunft selbst prüfen, ohne dich zu fragen.

/.well-known/security.txt nach RFC 9116
Contact: mailto:psirt@firma.de
Expires: 2027-01-01T00:00:00.000Z
Preferred-Languages: de, en
Policy: https://firma.de/produktsicherheit
Canonical: https://firma.de/.well-known/security.txt

Der Meldeweg für Dritte gehört zu den Pflichten, die sich am schnellsten erfüllen lassen. Das Feld Expires ist vorgeschrieben, also setz dir eine Wiedervorlage, sonst zeigt deine Datei in einem Jahr an, dass sie ungültig ist.

Gut zu wissen

Häufige Fragen zu Cyber Resilience Act

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Gilt der Cyber Resilience Act auch für Open-Source-Software?
Nicht-kommerzielle Open-Source-Entwicklung fällt grundsätzlich nicht unter die Verordnung, und für Open-Source-Software-Verwalter gibt es ein eigenes, deutlich leichteres Pflichtenheft. Sobald du Open-Source-Komponenten aber in einem Produkt auslieferst, das du kommerziell in Verkehr bringst, giltst du für dieses Produkt als Hersteller und trägst die volle Verantwortung für den Open-Source-Anteil.
Ab wann gelten die Pflichten aus dem CRA konkret?
Die Verordnung ist am 10. Dezember 2024 in Kraft getreten. Ab dem 11. September 2026 greifen die Melde- und Berichtspflichten für aktiv ausgenutzte Schwachstellen und schwerwiegende Sicherheitsvorfälle, ab dem 11. Dezember 2027 gilt die Verordnung in vollem Umfang, inklusive Konformitätsbewertung und CE-Kennzeichnung.
Was muss eine SBOM nach dem CRA enthalten?
Verlangt wird eine maschinenlesbare Stückliste, die mindestens die Komponenten der obersten Ebene mit Name, Version, Lieferant und Abhängigkeitsbeziehungen abbildet. In der Praxis solltest du tiefer gehen und alle Pakete des ausgelieferten Images erfassen, weil du sonst bei einer CVE in einer transitiven Abhängigkeit nicht belegen kannst, ob dein Produkt betroffen ist. Übliche Formate sind CycloneDX und SPDX.
Was ist der Unterschied zwischen CRA und NIS2?
NIS2 richtet sich an Betreiber und regelt, wie du deine eigene IT betreibst, also Risikomanagement, Patchmanagement und Vorfallsmeldungen im laufenden Betrieb. Der Cyber Resilience Act ist Produktrecht und regelt, welche Eigenschaften ein Produkt mit digitalen Elementen mitbringen muss, bevor es auf den Markt kommt. Viele Unternehmen sind von beidem betroffen, aber mit unterschiedlichen Rollen und Nachweisen.
Reicht ein Scanner wie Trivy für die CRA-Konformität aus?
Ein Scanner liefert dir SBOM und Schwachstellenberichte und damit einen wichtigen Baustein, aber keine Konformität. Dazu kommen die Bewertung der Treffer, VEX-Aussagen, ein dokumentierter Umgang mit Meldefristen, eine sichere Standardkonfiguration und die technische Dokumentation. Das Werkzeug automatisiert die Datenerhebung, die Prozesse musst du selbst festlegen.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Es war eine sehr gute Lernatmosphäre und der Trainer verstand sein Thema sehr gut.
Rückmeldung aus dem Kurs „SELinux Training: Grundlagen und Administration (SEL1)“
Die Schulung war genau das richtige, um mein Verständnis zu erweitern. Vielen Dank an den Trainer!
Rückmeldung aus dem Kurs „Linux Grundkurs (LPI01)“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Bring dein Team auf den CRA-Stand

In unseren Schulungen üben wir genau die Bausteine, die der Cyber Resilience Act voraussetzt: SBOM-Erzeugung, Schwachstellenbewertung und Signaturen im Trivy-Kurs zu Container, Kubernetes, IaC und SBOM, Systemhärtung im Linux Security Intensivkurs und in den SELinux-Trainings sowie reproduzierbare, updatefähige Geräte-Images im Yocto Intensivkurs. Alle Kurse gibt es als Live-Online-Termin oder als Inhouse-Variante mit deinen eigenen Produkten und Build-Pipelines. Schreib uns kurz, welche Produkte betroffen sind, dann stellen wir dir einen passenden Weg zusammen.