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 la configuración de Kubernetes para determinar qué CVEs 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 CVEs conocidos dentro de cargas de trabajo de Kubernetes combinando la clasificación de vulnerabilidades y el análisis de securityContext.

Se basa en el siguiente concepto:
Para una lectura más profunda, puedes consultar este artículo: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Puedes descargar el último binario desde la página de lanzamientos.
O puedes compilarlo manualmente:
make build
vex8s actualmente soporta 2 formas de generar documentos VEX:
modo pasivo: pasando un informe de vulnerabilidades ya generado creado 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:
# generar informe de vulnerabilidades.
trivy image --format json --output nginx.trivy.json nginx:1.21.0
# generar documento VEX procesando el informe de vulnerabilidades.
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json
# escanear de nuevo con el documento VEX para suprimir vulnerabilidades.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo mismo se puede aplicar usando grype:
# generar informe sbom.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# generar informe de vulnerabilidades.
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json
# generar documento VEX procesando el informe de vulnerabilidades.
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json
# escanear sbom con el documento VEX para suprimir vulnerabilidades.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Usando trivy:
# escanear la imagen y generar automáticamente el documento VEX.
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json
# escanear de nuevo con el documento VEX para suprimir vulnerabilidades.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo mismo se puede aplicar usando grype:
# generar informe sbom.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# escanear la imagen y generar automáticamente el documento VEX.
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json
# escanear sbom con el documento VEX para suprimir vulnerabilidades.
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 soporta dos motores de clasificación mediante --classifier:
embedded (predeterminado): un modelo de ML ONNX sin conexión
incluido en el binario. No requiere acceso a la red.gemini: utiliza el LLM Gemini de Google para clasificar la descripción del CVE.
Requiere la variable de entorno GEMINI_API_KEY (opcionalmente GEMINI_MODEL).export GEMINI_API_KEY="tu-clave-api"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini
Consulta la documentación — en particular la Guía de Usuario — para un recorrido completo, la configuración del clasificador Gemini y una referencia completa de banderas.
Este proyecto se inspiró en el proyecto de Akihiro Suda vexllm.