Suprimir vulnerabilidades aplicando el contexto de Kubernetes a los análisis
(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.
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:
Para una lectura más detallada, puedes consultar este artículo: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Puedes descargar el binario más reciente desde la página de releases.
O puedes compilarlo manualmente:
make build
vex8s actualmente admite 2 formas de generar documentos VEX:
modo pasivo: pasando un informe de vulnerabilidades ya generado por trivy o grype.
modo activo: escaneando activamente las imágenes usando los motores trivy o grype y luego generando el documento basado en los resultados.
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
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
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 entorno GEMINI_API_KEY (opcionalmente GEMINI_MODEL).ollama: usa un servidor Ollama en ejecución local para
clasificar la descripción del CVE. Descarga primero un modelo como
qwen2.5:3b-instruct (opcionalmente configura OLLAMA_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.
Este proyecto se inspiró en el proyecto de Akihiro Suda vexllm.