
Agrega documentos de Intercambio de Explotabilidad de Vulnerabilidades (VEX) de proyectos de código abierto. Organiza por PURL para la integración automatizada con herramientas de seguridad.

VEX Hub es un repositorio centralizado que recopila y gestiona documentos de [Vulnerability Exploitability eXchange (VEX)][vex] de diversos proyectos de software de código abierto. Sirve como un recurso integral de información sobre vulnerabilidades, ayudando a los usuarios y a las herramientas de seguridad a acceder y utilizar eficientemente los datos VEX en múltiples proyectos y ecosistemas.
VEX Hub recupera automáticamente los documentos VEX de los repositorios fuente de los proyectos registrados. Al identificar el repositorio fuente a partir del [Package URL (PURL)][purl] registrado, VEX Hub copia y organiza los documentos VEX, haciéndolos fácilmente accesibles para la comunidad en general.
¡Eso es todo! VEX Hub recuperará y procesará automáticamente tus documentos VEX.
El [VEX Hub Crawler][vexhub-crawler] rastrea periódicamente los documentos VEX de los paquetes registrados y los mantiene en VEX Hub. Los paquetes registrados se definen como una lista de [PURLs][purl] en [un archivo][purl-list] que cualquier persona puede actualizar mediante Pull Requests.
Para obtener información detallada sobre el registro de PURL, los ecosistemas compatibles y los requisitos específicos, consulta [VEX Hub Crawler][vexhub-crawler].
El archivo de paquetes especifica únicamente el PURL del paquete que se va a rastrear, y VEX Hub Crawler identifica automáticamente el repositorio de código fuente donde se encuentra el archivo VEX. El método para identificar los repositorios fuente varía según el ecosistema. Para obtener información detallada sobre cómo se identifican y rastrean los repositorios fuente para los diferentes tipos de paquetes, consulta la [documentación de vex-crawler][vexhub-crawler].
Después de identificar el repositorio de código fuente, VEX Hub descubre automáticamente los documentos VEX en él. El proceso de descubrimiento incluye los siguientes puntos clave:
.vex/ en la raíz del repositorio.*.vex.json, *.csaf.json).Para obtener información detallada sobre el proceso de descubrimiento, los ecosistemas compatibles y los requisitos específicos, consulta la [documentación de vex-crawler][vexhub-crawler].
VEX Hub se estructura según el Package URL (PURL), excluyendo version, qualifiers y subpath.
La estructura sigue las siguientes reglas:
oci, se utiliza en su lugar el qualifier repository_url.products de los documentos VEX.Ejemplos de formación de la estructura de directorios:
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/Ejemplo con codificación de caracteres especiales:
pkg:npm/@angular/core → /npm/%40angular/core/VEX Hub cumple con la [VEX Repository Specification][vex-repo-spec]. Los archivos vex_repository.json e index.json se pueden utilizar para acceder programáticamente a los documentos VEX en VEX Hub.
VEX Hub tiene la capacidad de almacenar múltiples documentos VEX para un único PURL, ya que copia todos los documentos VEX que coinciden del repositorio fuente. Sin embargo, la VEX Repository Specification permite solo un documento VEX por PURL. Para cumplir con esta especificación, VEX Hub implementa la siguiente estrategia de distribución:
Para evitar confusiones y garantizar la coherencia, no se recomienda dividir las declaraciones VEX del mismo PURL en varios archivos, ya que VEX Hub distribuye solo un archivo VEX por PURL.
Los enfoques recomendados son:
Escenario de ejemplo:
Considera un repositorio fuente https://github.com/org/repo que mantiene dos productos: un módulo Go y una imagen OCI.
El primer enfoque es crear un único archivo VEX, vex.json, que contenga las declaraciones VEX de ambos productos.
openvex.json: Para ambos productos, con los PURLs pkg:golang/github.com/org/repo, pkg:oci/repo?repository_url=docker.io/org/repo y pkg:oci/repo?repository_url=ghcr.io/org/repoEl segundo enfoque es crear archivos VEX separados para cada producto.
golang.vex: Para el módulo Go, con el PURL pkg:golang/github.com/org/repooci.vex: Para la imagen OCI, con los PURLs pkg:oci/repo?repository_url=docker.io/org/repo y pkg:oci/repo?repository_url=ghcr.io/org/repoLa siguiente estructura no se recomienda:
v1.vex: Para el módulo Go, con el PURL pkg:golang/github.com/org/[email protected]v2.vex: Para el módulo Go, con el PURL pkg:golang/github.com/org/[email protected]En este ejemplo, se selecciona v1.vex para la distribución y se ignora v2.vex.
Deberían combinarse en un único archivo VEX, golang.vex, con múltiples versiones y qualifiers.
Dado que VEX Hub (y VEX en general) potencialmente complementa los resultados del escaneo de seguridad, es razonable que examines minuciosamente la corrección de los documentos VEX que consumes. A diferencia de otros feeds de intercambio de vulnerabilidades, o feeds de avisos de seguridad preparados para VEX, VEX Hub no es la fuente de datos de las declaraciones VEX. VEX Hub solo agrega documentos VEX existentes y los organiza en un repositorio central y conveniente.