
Aggregiert Vulnerability Exploitability eXchange (VEX)-Dokumente aus Open-Source-Projekten. Organisiert nach PURL für die automatisierte Integration in Sicherheitstools.

VEX Hub ist ein zentrales Repository, das [Vulnerability Exploitability eXchange (VEX)][vex]-Dokumente aus verschiedenen Open-Source-Softwareprojekten sammelt und verwaltet. Es dient als umfassende Ressource für Schwachstelleninformationen und hilft Benutzern und Sicherheitswerkzeugen, effizient auf VEX-Daten zuzugreifen und sie über mehrere Projekte und Ökosysteme hinweg zu nutzen.
VEX Hub ruft automatisch VEX-Dokumente aus Quell-Repositories registrierter Projekte ab. Durch die Identifizierung des Quell-Repositories anhand der registrierten [Package URL (PURL)][purl] kopiert und organisiert VEX Hub die VEX-Dokumente und macht sie der breiteren Gemeinschaft leicht zugänglich.
Das war's! VEX Hub wird Ihre VEX-Dokumente automatisch abrufen und verarbeiten.
Der [VEX Hub Crawler][vexhub-crawler] durchsucht regelmäßig VEX-Dokumente registrierter Pakete und pflegt sie in VEX Hub. Registrierte Pakete sind als eine Liste von [PURLs][purl] in [einer Datei][purl-list] definiert, die von jedem über Pull Requests aktualisiert werden kann.
Detaillierte Informationen zur PURL-Registrierung, zu unterstützten Ökosystemen und zu spezifischen Anforderungen finden Sie unter [VEX Hub Crawler][vexhub-crawler].
Die Paketdatei gibt nur die PURL des zu crawlenden Pakets an, und der VEX Hub Crawler identifiziert automatisch das Quellcode-Repository, in dem sich die VEX-Datei befindet. Die Methode zur Identifizierung von Quell-Repositories variiert je nach Ökosystem. Detaillierte Informationen darüber, wie Quell-Repositories für verschiedene Pakettypen identifiziert und gecrawlt werden, finden Sie in der Dokumentation des [vex-crawler][vexhub-crawler].
Nach der Identifizierung des Quellcode-Repositories erkennt VEX Hub automatisch VEX-Dokumente darin. Der Erkennungsprozess umfasst die folgenden Kernpunkte:
.vex/-Verzeichnis im Stammverzeichnis des Repositories gesucht.*.vex.json, *.csaf.json), werden berücksichtigt.Detaillierte Informationen zum Erkennungsprozess, zu unterstützten Ökosystemen und zu spezifischen Anforderungen finden Sie in der Dokumentation des [vex-crawler][vexhub-crawler].
VEX Hub ist basierend auf der Package URL (PURL) strukturiert, wobei version, qualifiers und subpath ausgeschlossen sind.
Die Struktur folgt den folgenden Regeln:
oci wird stattdessen der Qualifier repository_url verwendet.products der VEX-Dokumente angegeben werden.Beispiele für die Bildung der Verzeichnisstruktur:
pkg:npm/express → /npm/express/pkg:golang/github.com/gorilla/mux → /golang/github.com/gorilla/mux/pkg:maven/org.apache.xmlgraphics/batik-anim → /maven/org.apache.xmlgraphics/batik-anim/pkg:oci/trivy?repository_url=ghcr.io/aquasecurity/trivy → /oci/ghcr.io/aquasecurity/trivy/Beispiel mit Kodierung von Sonderzeichen:
pkg:npm/@angular/core → /npm/%40angular/core/VEX Hub entspricht der [VEX Repository Specification][vex-repo-spec]. Die Dateien vex_repository.json und index.json können verwendet werden, um programmatisch auf VEX-Dokumente in VEX Hub zuzugreifen.
VEX Hub kann mehrere VEX-Dokumente für eine einzelne PURL speichern, da es alle passenden VEX-Dokumente aus dem Quell-Repository kopiert. Die VEX Repository Specification erlaubt jedoch nur ein VEX-Dokument pro PURL. Um dieser Spezifikation zu entsprechen, implementiert VEX Hub die folgende Verteilungsstrategie:
index.json geschrieben.Um Verwirrung zu vermeiden und Konsistenz zu gewährleisten, wird nicht empfohlen, VEX-Aussagen für dieselbe PURL auf mehrere Dateien aufzuteilen, da VEX Hub nur eine VEX-Datei pro PURL verteilt.
Die empfohlenen Ansätze sind:
Beispielszenario:
Betrachten Sie ein Quell-Repository https://github.com/org/repo, das zwei Produkte pflegt: ein Go-Modul und ein OCi-Image.
Der erste Ansatz besteht darin, eine einzige VEX-Datei vex.json zu erstellen, die VEX-Aussagen für beide Produkte enthält.
openvex.json: Für beide Produkte, mit den PURLs pkg:golang/github.com/org/repo, pkg:oci/repo?repository_url=docker.io/org/repo und pkg:oci/repo?repository_url=ghcr.io/org/repoDer zweite Ansatz besteht darin, separate VEX-Dateien für jedes Produkt zu erstellen.
golang.vex: Für das Go-Modul, mit der PURL pkg:golang/github.com/org/repooci.vex: Für das OCI-Image, mit den PURLs pkg:oci/repo?repository_url=docker.io/org/repo und pkg:oci/repo?repository_url=ghcr.io/org/repoDie folgende Struktur wird nicht empfohlen:
v1.vex: Für das Go-Modul, mit der PURL pkg:golang/github.com/org/[email protected]v2.vex: Für das Go-Modul, mit der PURL pkg:golang/github.com/org/[email protected]In diesem Beispiel wird v1.vex für die Verteilung ausgewählt und v2.vex ignoriert.
Sie sollten in einer einzigen VEX-Datei golang.vex mit mehreren Versionen und Qualifiern zusammengefasst werden.
Da VEX Hub (und VEX im Allgemeinen) potenziell die Ergebnisse von Sicherheitsüberprüfungen erweitert, haben Sie das Recht, die Korrektheit der VEX-Dokumente, die Sie konsumieren, zu hinterfragen. Im Gegensatz zu anderen Vulnerability-Exchange-Feeds oder VEX-fähigen Security-Advisory-Feeds ist VEX Hub nicht die Datenquelle für VEX-Aussagen. VEX Hub aggregiert lediglich vorhandene VEX-Dokumente und organisiert sie in einem zentralen, praktischen Repository.