
Agrège les documents Vulnerability Exploitability eXchange (VEX) provenant de projets open source. Organise par PURL pour l'intégration automatisée avec les outils de sécurité.

VEX Hub est un référentiel centralisé qui collecte et gère les documents [Vulnerability Exploitability eXchange (VEX)][vex] de divers projets logiciels open source. Il constitue une ressource complète d'informations sur les vulnérabilités, aidant les utilisateurs et les outils de sécurité à accéder efficacement aux données VEX et à les utiliser dans plusieurs projets et écosystèmes.
VEX Hub récupère automatiquement les documents VEX depuis les dépôts sources des projets enregistrés. En identifiant le dépôt source à partir du [Package URL (PURL)][purl] enregistré, VEX Hub copie et organise les documents VEX, les rendant facilement accessibles à la communauté dans son ensemble.
.vex/ à la racine de votre dépôt. Plus d'informations ici.Et voilà ! VEX Hub récupérera et traitera automatiquement vos documents VEX.
[VEX Hub Crawler][vexhub-crawler] explore périodiquement les documents VEX des paquets enregistrés et les maintient dans VEX Hub. Les paquets enregistrés sont définis comme une liste de [PURL][purl] dans [un fichier][purl-list] qui peut être mis à jour par n'importe qui via des Pull Requests.
Pour des informations détaillées sur l'enregistrement des PURL, les écosystèmes pris en charge et les exigences spécifiques, veuillez vous référer à [VEX Hub Crawler][vexhub-crawler].
Le fichier des paquets spécifie uniquement le PURL du paquet à explorer, et VEX Hub Crawler identifie automatiquement le dépôt de code source où se trouve le fichier VEX. La méthode d'identification des dépôts sources varie selon l'écosystème. Pour des informations détaillées sur la façon dont les dépôts sources sont identifiés et explorés pour les différents types de paquets, veuillez vous référer à la [documentation du vex-crawler][vexhub-crawler].
Après avoir identifié le dépôt de code source, VEX Hub découvre automatiquement les documents VEX qui s'y trouvent. Le processus de découverte comprend les points clés suivants :
.vex/ à la racine du dépôt.*.vex.json, *.csaf.json) sont pris en compte.Pour des informations détaillées sur le processus de découverte, les écosystèmes pris en charge et les exigences spécifiques, veuillez vous référer à la [documentation du vex-crawler][vexhub-crawler].
VEX Hub est structuré en fonction du Package URL (PURL), à l'exclusion de version, qualifiers et subpath.
La structure respecte les règles suivantes :
oci, le qualificateur repository_url est utilisé à la place.products des documents VEX.Exemples de formation de la structure des répertoires :
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/Exemple avec encodage de caractères spéciaux :
pkg:npm/@angular/core → /npm/%40angular/core/VEX Hub est conforme à la [spécification du référentiel VEX][vex-repo-spec]. Les fichiers vex_repository.json et index.json peuvent être utilisés pour accéder par programmation aux documents VEX de VEX Hub.
VEX Hub a la capacité de stocker plusieurs documents VEX pour un seul PURL, car il copie tous les documents VEX correspondants du dépôt source. Cependant, la spécification du référentiel VEX n'autorise qu'un seul document VEX par PURL. Pour se conformer à cette spécification, VEX Hub met en œuvre la stratégie de distribution suivante :
Pour éviter toute confusion et garantir la cohérence, il n'est pas recommandé de répartir les déclarations VEX pour le même PURL dans plusieurs fichiers, car VEX Hub ne distribue qu'un seul fichier VEX par PURL.
Les approches recommandées sont :
Exemple de scénario :
Considérons un dépôt source https://github.com/org/repo qui gère deux produits : un module Go et une image OCi.
La première approche consiste à créer un seul fichier VEX, vex.json, contenant les déclarations VEX pour les deux produits.
openvex.json : Pour les deux produits, avec les PURL pkg:golang/github.com/org/repo, pkg:oci/repo?repository_url=docker.io/org/repo et pkg:oci/repo?repository_url=ghcr.io/org/repoLa deuxième approche consiste à créer des fichiers VEX séparés pour chaque produit.
golang.vex : Pour le module Go, avec le PURL pkg:golang/github.com/org/repooci.vex : Pour l'image OCI, avec les PURL pkg:oci/repo?repository_url=docker.io/org/repo et pkg:oci/repo?repository_url=ghcr.io/org/repoLa structure suivante n'est pas recommandée :
v1.vex : Pour le module Go, avec le PURL pkg:golang/github.com/org/[email protected]v2.vex : Pour le module Go, avec le PURL pkg:golang/github.com/org/[email protected]Dans cet exemple, v1.vex est sélectionné pour la distribution et v2.vex est ignoré.
Ils doivent être combinés en un seul fichier VEX, golang.vex, avec plusieurs versions et qualificateurs.
Étant donné que VEX Hub (et VEX en général) peut potentiellement compléter les résultats des analyses de sécurité, vous êtes en droit d'examiner attentivement l'exactitude des documents VEX que vous consommez. Contrairement à d'autres flux d'échange de vulnérabilités ou aux flux d'avis de sécurité compatibles VEX, VEX Hub n'est pas la source des données des déclarations VEX. VEX Hub se contente d'agréger les documents VEX existants et de les organiser dans un référentiel central et pratique.