Offizielle Website - Bundesrepublik Deutschland

Anleitung: VEX-Attestierung erstellen

Diese Anleitung erklärt, wie Sie eine VEX-Attestierung (Vulnerability Exploitability eXchange) für Ihr Container-Image erstellen und an das Image anhängen.

Wann brauchen Sie das?

  • Ihr Image hat noch keine VEX-Attestierung
  • Sie haben Schwachstellen-Bewertungen in DevGuard aktualisiert und wollen das VEX-Dokument erneuern
  • Sie möchten die Compliance-Anforderung für container.gov.de erfüllen

Voraussetzungen:

  • DevGuard-Account mit Ihrem Image als Asset eingerichtet
  • Scan-Ergebnisse für Ihr Image in DevGuard vorhanden
  • Container-Image bereits in der Registry vorhanden
  • CI/CD-Pipeline in GitLab

container.gov.de verlangt, dass das VEX-Dokument:

  1. Als In-Toto-Attestierung am Image hängt (nicht als separate Datei)
  2. Den Predicate-Typ https://cyclonedx.org/vex verwendet
  3. Alle kritischen und hohen CVEs mit einem Status versehen hat, der nicht in_triage ist

Option A: VEX Attestierung mit DevGuard CI-Komponente an ein Image anfügen

Es stehen eine Reihe an CI-Components im Rahmen des Platform-Services DevGuard zur Verfügung, mit denen Sie die Erstellung und Anfügung von VEX-Attestierungen in Ihre CI/CD-Pipeline integrieren können. Die Komponenten lesen die hinterlegten Bewertungen der CVEs in DevGuard aus, in dem sie den VEX aus DevGuard herunterladen und hängen den VEX als In-Toto-Attestierung mit dem Predicate-Typ https://cyclonedx.org/vex an das Image an.


Option B: VEX Attestierung manuell erstellen und anfügen

Diese Option eignet sich, wenn Sie keine CI/CD-Pipeline verwenden oder die Attestierung einmalig manuell durchführen möchten.

Voraussetzungen:

  • cosign installiert
  • VEX-Dokument im CycloneDX-Format als cdx.vex.json vorhanden (z. B. aus DevGuard heruntergeladen)

Schritt 1: Cosign-Schlüsselpaar erstellen

Erstellen Sie ein lokales Schlüsselpaar, mit dem Sie die Attestierung signieren:

Dies erzeugt zwei Dateien:

  • cosign.key – privater Schlüssel (geheim halten, nicht in die Versionskontrolle einchecken)
  • cosign.pub – öffentlicher Schlüssel (zur späteren Verifikation)

Sie werden während der Erstellung nach einem Passwort gefragt, mit dem der private Schlüssel verschlüsselt wird. Das Passwort wird auch beim Attestieren benötigt.

Schritt 2: VEX-Dokument als Attestierung anfügen

Hängen Sie das VEX-Dokument als In-Toto-Attestierung mit dem Predicate-Typ https://cyclonedx.org/vex an Ihr Image:

Ersetzen Sie registry.opencode.de/oci-community/meine-gruppe/mein-image:1.0.0 durch den tatsächlichen Pfad zu Ihrem Image inklusive Tag.

Hinweis: Sie müssen gegenüber der Registry authentifiziert sein (docker login registry.opencode.de), damit cosign die Attestierung pushen kann.


Attestierung verifizieren

Prüfen Sie, ob die VEX-Attestierung korrekt am Image hängt:

Alternativ zeigt der DevGuard Scanner beim Compliance-Check, ob eine VEX-Attestierung gefunden wurde:


VEX-Dokument aktuell halten

Wichtig: VEX-Dokumente müssen aktuell sein. Wenn neue CVEs bekannt werden, muss das VEX-Dokument erneuert werden (oder eine externalReference enthalten, welche auf ein ständig aktualisiertes VEX-Dokument zeigt). Am besten integrieren Sie die Erstellung der VEX-Attestierung in Ihre CI/CD-Pipeline, damit sie automatisch bei jedem Build aktualisiert wird.:

  1. Neue Schwachstellen werden bekannt
  2. Bewerten Sie neue kritische/hohe CVEs in DevGuard
  3. Starten Sie die CI/CD-Pipeline neu – sie erstellt und hängt automatisch eine neue VEX-Attestierung an

Nächste Schritte