
vex8s v0.5.0
Sopprimi le vulnerabilità applicando il contesto Kubernetes alle scansioni
Vex8s
(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.
Come funziona
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:
- Ogni CVE è categorizzata in una o più classi di vulnerabilità (CWE)
- La descrizione della CVE viene elaborata da un modello ML integrato per prevederne la categoria di sfruttamento.
- Sia le CWE che le categorie di sfruttamento previste vengono combinate per determinare se la CVE è mitigabile.
- Ogni categoria di sfruttamento corrisponde a un insieme di impostazioni di Kubernetes che possono bloccare o ridurre l'impatto.
- Analizzando un manifest Kubernetes, possiamo ispezionare le impostazioni del container per valutare se le impostazioni rilevanti sono presenti.
- Combinando entrambe le analisi, il sistema può determinare se una CVE è sfruttabile in una determinata configurazione del workload.
- Se il risultato è una mitigazione della CVE, la aggiungiamo al documento VEX finale.
Per una lettura più approfondita puoi consultare questo documento: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Installazione
Puoi scaricare l'ultimo binario dalla pagina delle release.
Oppure puoi compilarlo manualmente:
make build
Utilizzo
vex8s attualmente supporta 2 modi per generare documenti VEX:
-
passive-mode: passando un report di vulnerabilità già generato da
trivyogrype. -
active-mode: scansionando attivamente le immagini usando i motori
trivyogrypee generando poi il documento in base ai risultati.
Modalità passiva (consigliata)
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
Modalità attiva
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
Classificatori
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'ambienteGEMINI_API_KEY(opzionalmenteGEMINI_MODEL).ollama: usa un server Ollama in esecuzione locale per classificare la descrizione della CVE. Scarica prima un modello comeqwen2.5:3b-instruct(opzionalmente impostaOLLAMA_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.
Riferimenti
Questo progetto è stato ispirato dal progetto di Akihiro Suda vexllm.