
vex8s v0.5.0
Suprimir vulnerabilidades aplicando el contexto de Kubernetes a los análisis
Vex8s
(este logotipo no está generado por IA)
Vex8s genera documentos VEX correlacionando vulnerabilidades de contenedores con configuraciones de Kubernetes para determinar qué CVE son realmente explotables en tu clúster.
Ten en cuenta que este es un proyecto experimental. Las cosas pueden cambiar rápidamente.
Cómo funciona
El proyecto tiene como objetivo evaluar la explotabilidad de CVE conocidos dentro de cargas de trabajo de Kubernetes combinando la clasificación de vulnerabilidades y el análisis del securityContext.

Se basa en el siguiente concepto:
- Cada CVE se clasifica en una o más clases de vulnerabilidad (CWE)
- La descripción del CVE es procesada por un modelo ML embebido para predecir su categoría de explotación.
- Tanto los CWE como las categorías de explotación predichas se combinan para determinar si el CVE es mitigable.
- Cada categoría de explotación se asigna a un conjunto de configuraciones de Kubernetes que pueden bloquear o reducir el impacto.
- Al analizar un manifiesto de Kubernetes, podemos inspeccionar la configuración del contenedor para evaluar si las configuraciones relevantes están presentes.
- La combinación de ambos análisis permite al sistema determinar si un CVE es explotable en una configuración de carga de trabajo dada.
- Si resulta en una mitigación de CVE, lo añadimos al documento VEX final.
Para una lectura más detallada, puedes consultar este artículo: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Instalación
Puedes descargar el binario más reciente desde la página de releases.
O puedes compilarlo manualmente:
make build
Uso
vex8s actualmente admite 2 formas de generar documentos VEX:
-
modo pasivo: pasando un informe de vulnerabilidades ya generado por
trivyogrype. -
modo activo: escaneando activamente las imágenes usando los motores
trivyogrypey luego generando el documento basado en los resultados.
Modo pasivo (recomendado)
Usando trivy:
# generate vulnerability report.
trivy image --format json --output nginx.trivy.json nginx:1.21.0
# generate VEX document by processing vulnerability report.
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json
# scan again with VEX document to suppress vulnerabilities.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo mismo se puede aplicar usando grype:
# generate sbom report.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# generate vulnerability report.
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json
# generate VEX document by processing vulnerability report.
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json
# scan sbom with VEX document to suppress vulnerabilities.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Modo activo
Usando trivy:
# scan the image and automatically generate VEX document.
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json
# scan again with VEX document to suppress vulnerabilities.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo mismo se puede aplicar usando grype:
# generate sbom report.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# scan the image and automatically generate VEX document.
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json
# scan sbom with VEX document to suppress vulnerabilities.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Clasificadores
Cada CVE se clasifica en una o más clases de explotación, que impulsan la
decisión de mitigación. vex8s admite tres motores de clasificación mediante --classifier:
embedded(predeterminado): un modelo ML ONNX sin conexión incluido en el binario. No requiere acceso a la red.gemini: usa el LLM Gemini de Google para clasificar la descripción del CVE. Requiere la variable de entornoGEMINI_API_KEY(opcionalmenteGEMINI_MODEL).ollama: usa un servidor Ollama en ejecución local para clasificar la descripción del CVE. Descarga primero un modelo comoqwen2.5:3b-instruct(opcionalmente configuraOLLAMA_HOST/OLLAMA_MODEL).
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier ollama
Consulta la documentación, en particular la Guía de usuario para un recorrido completo, la configuración de los clasificadores Gemini y Ollama, y una referencia completa de flags.
Referencias
Este proyecto se inspiró en el proyecto de Akihiro Suda vexllm.