
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)-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) 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 durchsucht regelmäßig VEX-Dokumente registrierter Pakete und pflegt sie in VEX Hub. Registrierte Pakete sind als eine Liste von PURLs in einer Datei 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.
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.
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.
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. 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.
Damit VEX-Dokumente in VEX Hub erscheinen, müssen sie zuerst in das Quellcode-Repository des Hauptpakets eingebracht werden. Dieser Ansatz stützt sich auf die Tatsache, dass Sie als Benutzer den Paketen, die Sie verwenden, bereits vertrauen müssen und damit auch den Betreuern, den Governance-Strukturen und den Prozessen, die sie einsetzen. Jedes Projekt hat sein eigenes Governance-System und seine eigenen Prozesse für das Einbringen von Änderungen in das Quellcode-Repository. Dieselben Systeme und Prozesse, die den Paketcode in Ihren Augen vertrauenswürdig machen, sind die gleichen Systeme und Prozesse, die die VEX-Dokumente für Sie vertrauenswürdig machen. Sie sollten VEX Hub nicht mehr vertrauen als den Paketen, die Sie zu verwenden wählen.
VEX Hub hat keinerlei Verantwortung oder Kenntnis über den Inhalt der VEX-Dokumente, die es speichert, oder der Pakete, die sie beschreiben. Die VEX-Hub-Betreuer überprüfen oder prüfen den Inhalt der VEX-Dokumente nicht, und die Verantwortung für die Genauigkeit und Richtigkeit der Informationen liegt bei den ursprünglichen Paketbetreuern. Wir empfehlen Benutzern, unterdrückte Schwachstellen manuell zu sichten, ähnlich wie sie jede andere Schwachstelle sichten würden.
Wenn VEX-Dokumente im Quell-Repository einer registrierten PURL in VEX Hub nicht ordnungsgemäß aktualisiert werden, überprüfen Sie bitte Folgendes:
.vex/-Verzeichnis im Stammverzeichnis des Repositories).Wenn Probleme nach der Überprüfung dieser Punkte weiterhin bestehen, eröffnen Sie bitte ein Issue im VEX-Hub-Repository, um weitere Unterstützung zu erhalten.
Beiträge zur Verbesserung von VEX Hub sind willkommen! Bitte beachten Sie, dass die Paketliste und der zugehörige Code im VEX Hub Crawler-Repository gepflegt werden. Pull Requests, die diesem Repository direkt VEX-Dokumente hinzufügen, sind nicht erwünscht. Dieses Projekt und alle, die daran teilnehmen, unterliegen dem Aqua Security Code of Conduct.