
Aggrega i documenti Vulnerability Exploitability eXchange (VEX) provenienti da progetti open-source. Li organizza per PURL per l'integrazione automatizzata con gli strumenti di sicurezza.

VEX Hub è un repository centralizzato che raccoglie e gestisce documenti [Vulnerability Exploitability eXchange (VEX)][vex] provenienti da vari progetti open-source. Funge da risorsa completa per le informazioni sulle vulnerabilità, aiutando utenti e strumenti di sicurezza ad accedere e utilizzare in modo efficiente i dati VEX attraverso più progetti ed ecosistemi.
VEX Hub recupera automaticamente i documenti VEX dai repository sorgente dei progetti registrati. Identificando il repository sorgente a partire dal [Package URL (PURL)][purl] registrato, VEX Hub copia e organizza i documenti VEX, rendendoli facilmente accessibili alla comunità.
Tutto qui! VEX Hub recupererà e elaborerà automaticamente i tuoi documenti VEX.
[VEX Hub Crawler][vexhub-crawler] esegue periodicamente il crawling dei documenti VEX dei pacchetti registrati e li mantiene in VEX Hub. I pacchetti registrati sono definiti come un elenco di [PURL][purl] in [un file][purl-list] che chiunque può aggiornare tramite Pull Request.
Per informazioni dettagliate sulla registrazione dei PURL, sugli ecosistemi supportati e sui requisiti specifici, fare riferimento a [VEX Hub Crawler][vexhub-crawler].
Il file dei pacchetti specifica solo il PURL del pacchetto da sottoporre a crawling e VEX Hub Crawler identifica automaticamente il repository del codice sorgente in cui si trova il file VEX. Il metodo di identificazione dei repository sorgente varia in base all'ecosistema. Per informazioni dettagliate su come i repository sorgente vengono identificati e sottoposti a crawling per i diversi tipi di pacchetto, fare riferimento alla [documentazione di vex-crawler][vexhub-crawler].
Dopo aver identificato il repository del codice sorgente, VEX Hub scopre automaticamente i documenti VEX al suo interno. Il processo di scoperta prevede i seguenti punti chiave:
.vex/ alla radice del repository.*.vex.json, *.csaf.json).Per informazioni dettagliate sul processo di scoperta, sugli ecosistemi supportati e sui requisiti specifici, fare riferimento alla [documentazione di vex-crawler][vexhub-crawler].
VEX Hub è strutturato in base al Package URL (PURL), escludendo version, qualifiers e subpath.
La struttura segue le seguenti regole:
scheme, type, namespace (se presente) e name del PURL. In caso di oci, viene utilizzato il qualificatore repository_url al suo posto.products dei documenti VEX.Esempi di formazione della struttura delle directory:
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/Esempio con codifica di caratteri speciali:
pkg:npm/@angular/core → /npm/%40angular/core/VEX Hub è conforme alla [VEX Repository Specification][vex-repo-spec]. I file vex_repository.json e index.json possono essere utilizzati per accedere programmaticamente ai documenti VEX in VEX Hub.
VEX Hub ha la capacità di memorizzare più documenti VEX per un singolo PURL, poiché copia tutti i documenti VEX corrispondenti dal repository sorgente. Tuttavia, la VEX Repository Specification consente un solo documento VEX per PURL. Per conformarsi a questa specifica, VEX Hub implementa la seguente strategia di distribuzione:
Per evitare confusione e garantire coerenza, non è consigliato suddividere le dichiarazioni VEX per lo stesso PURL in più file, poiché VEX Hub distribuisce un solo file VEX per PURL.
Gli approcci consigliati sono:
Scenario di esempio:
Considera un repository sorgente https://github.com/org/repo che mantiene due prodotti, un modulo Go e un'immagine OCi.
Il primo approccio consiste nel creare un unico file VEX, vex.json, contenente le dichiarazioni VEX per entrambi i prodotti.
openvex.json: Per entrambi i prodotti, con i PURL pkg:golang/github.com/org/repo, pkg:oci/repo?repository_url=docker.io/org/repo e pkg:oci/repo?repository_url=ghcr.io/org/repoIl secondo approccio consiste nel creare file VEX separati per ciascun prodotto.
golang.vex: Per il modulo Go, con PURL pkg:golang/github.com/org/repooci.vex: Per l'immagine OCI, con i PURL pkg:oci/repo?repository_url=docker.io/org/repo e pkg:oci/repo?repository_url=ghcr.io/org/repoLa seguente struttura non è consigliata:
v1.vex: Per il modulo Go, con PURL pkg:golang/github.com/org/[email protected]v2.vex: Per il modulo Go, con PURL pkg:golang/github.com/org/[email protected]In questo esempio, v1.vex viene selezionato per la distribuzione e v2.vex viene ignorato.
Dovrebbero essere combinati in un unico file VEX, golang.vex, con più versioni e qualificatori.
Poiché VEX Hub (e VEX in generale) può potenzialmente ampliare i risultati della scansione di sicurezza, è giusto che tu esamini attentamente la correttezza dei documenti VEX che consumi. A differenza di altri feed di scambio di vulnerabilità o feed di advisory di sicurezza predisposti per VEX, VEX Hub non è la fonte dei dati delle dichiarazioni VEX. VEX Hub aggrega solo i documenti VEX esistenti e li organizza in un repository centrale e conveniente.
Per comparire in VEX Hub, i documenti VEX devono essere prima commitati nel repository del codice sorgente del pacchetto principale. Questo approccio si basa sul fatto che, in quanto utente, devi già fidarti dei pacchetti che usi e quindi dei maintainer, della governance e dei processi che adottano. Ogni progetto ha il proprio sistema di governance e i propri processi per il commit nel repository del codice sorgente. Quei sistemi e processi che rendono il codice del pacchetto affidabile ai tuoi occhi sono gli stessi sistemi e processi che rendono affidabili per te i documenti VEX. Non dovresti fidarti di VEX Hub più di quanto ti fidi dei pacchetti che scegli di utilizzare.