
vex8s v0.5.0
Sopprimi le vulnerabilità applicando il contesto Kubernetes alle scansioni
Vex8s
(questo logo non è generato da 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 nei carichi di lavoro 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 prevedere la sua 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 Kubernetes che possono bloccare o ridurre l'impatto.
- Analizzando un manifest Kubernetes, possiamo ispezionare le impostazioni del container per valutare se le impostazioni pertinenti sono presenti.
- Combinando entrambe le analisi, il sistema può determinare se una CVE è sfruttabile in una determinata configurazione del carico di lavoro.
- Se si ottiene una mitigazione della CVE, questa viene aggiunta al documento VEX finale.
Per una lettura più approfondita puoi consultare questo articolo: 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 supporta attualmente 2 modi per generare documenti VEX:
-
modalità passiva: passando un report di vulnerabilità già generato creato da
trivyogrype. -
modalità attiva: scansionando attivamente le immagini utilizzando i motori
trivyogrypee poi generando il documento in base ai risultati.
Modalità passiva (consigliata)
Utilizzando trivy:
# genera il report delle vulnerabilità.
trivy image --format json --output nginx.trivy.json nginx:1.21.0
# genera il documento VEX elaborando il report delle vulnerabilità.
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json
# esegui nuovamente la scansione con il documento VEX per sopprimere le vulnerabilità.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo stesso può essere applicato utilizzando grype:
# genera il report sbom.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# genera il report delle vulnerabilità.
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json
# genera il documento VEX elaborando il report delle vulnerabilità.
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json
# esegui la scansione dello sbom con il documento VEX per sopprimere le vulnerabilità.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Modalità attiva
Utilizzando trivy:
# esegui la scansione dell'immagine e genera automaticamente il documento VEX.
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json
# esegui nuovamente la scansione con il documento VEX per sopprimere le vulnerabilità.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Lo stesso può essere applicato utilizzando grype:
# genera il report sbom.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# esegui la scansione dell'immagine e genera automaticamente il documento VEX.
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json
# esegui la scansione dello sbom con il documento VEX per sopprimere le vulnerabilità.
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 due motori di classificazione tramite --classifier:
embedded(predefinito): un modello ML ONNX offline incluso nel binario. Non richiede accesso alla rete.gemini: utilizza il LLM Gemini di Google per classificare la descrizione della CVE. Richiede la variabile d'ambienteGEMINI_API_KEY(opzionalmenteGEMINI_MODEL).
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini
Consulta la documentazione — in particolare la Guida per l'utente — per una panoramica completa, la configurazione del classificatore Gemini e un riferimento completo ai flag.
Riferimenti
Questo progetto è stato ispirato dal progetto di Akihiro Suda vexllm.