Sopprimi le vulnerabilità applicando il contesto Kubernetes alle scansioni
(questo logo non è generato dall'IA)
Vex8s genera documenti VEX correlando le vulnerabilità dei container con le impostazioni di Kubernetes per determinare quali CVE sono effettivamente sfruttabili nel tuo cluster.
Tieni presente che questo è un progetto sperimentale. Le cose potrebbero cambiare rapidamente.
Il progetto mira a valutare la sfruttabilità delle CVE note all'interno dei workload Kubernetes combinando la classificazione delle vulnerabilità e l'analisi del securityContext.

Si basa sul seguente concetto:
Per una lettura più approfondita puoi consultare questo documento: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Puoi scaricare l'ultimo binario dalla pagina delle release.
Oppure puoi compilarlo manualmente:
make build
vex8s attualmente supporta 2 modi per generare documenti VEX:
passive-mode: passando un report di vulnerabilità già generato da trivy o grype.
active-mode: scansionando attivamente le immagini usando i motori trivy o grype e generando poi il documento in base ai risultati.
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 stesso può essere applicato 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 stesso può essere applicato 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
Ogni CVE è classificata in una o più classi di sfruttamento, che guidano la
decisione di mitigazione. vex8s supporta tre motori di classificazione tramite --classifier:
embedded (predefinito): un modello ML ONNX offline
incluso nel binario. Non richiede accesso alla rete.gemini: usa l'LLM Gemini di Google per classificare la descrizione della CVE.
Richiede la variabile d'ambiente GEMINI_API_KEY (opzionalmente GEMINI_MODEL).ollama: usa un server Ollama in esecuzione locale per
classificare la descrizione della CVE. Scarica prima un modello come
qwen2.5:3b-instruct (opzionalmente imposta 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 documentazione, in particolare la Guida Utente per una panoramica completa, la configurazione dei classificatori Gemini e Ollama, e un riferimento completo dei flag.
Questo progetto è stato ispirato dal progetto di Akihiro Suda vexllm.