Retour aux mises à jour
New releaseAug 23, 2026

vex8s v0.5.0

Supprimer les vulnérabilités en appliquant le contexte Kubernetes aux analyses.

Partager

Vex8s

vex8s (ce logo n'est pas généré par IA)

Vex8s génère des documents VEX en corrélant les vulnérabilités des conteneurs avec les paramètres Kubernetes afin de déterminer quels CVE sont réellement exploitables dans votre cluster.

Veuillez noter qu'il s'agit d'un projet expérimental. Les choses peuvent évoluer rapidement.

Fonctionnement

Le projet vise à évaluer l'exploitabilité des CVE connus au sein des charges de travail Kubernetes en combinant la classification des vulnérabilités et l'analyse du securityContext.

vex8s-logic

Il repose sur le concept suivant :

  • Chaque CVE est catégorisé dans une ou plusieurs classes de vulnérabilité (CWE)
  • La description du CVE est traitée par un modèle ML embarqué afin de prédire sa catégorie d'exploitation.
  • Les CWE et les catégories d'exploitation prédites sont combinés pour déterminer si le CVE est atténuable.
  • Chaque catégorie d'exploitation correspond à un ensemble de paramètres Kubernetes pouvant bloquer ou réduire l'impact.
  • En analysant un manifeste Kubernetes, nous pouvons inspecter les paramètres du conteneur afin d'évaluer si les paramètres pertinents sont en place.
  • La combinaison des deux analyses permet au système de déterminer si un CVE est exploitable dans une configuration de charge de travail donnée.
  • Si cela aboutit à une atténuation de CVE, nous l'ajoutons au document VEX final.

Pour une lecture plus approfondie, vous pouvez consulter cet article : Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX

Installation

Vous pouvez télécharger le dernier binaire depuis la page des releases.

Ou vous pouvez le compiler manuellement :

make build

Utilisation

vex8s prend actuellement en charge 2 façons de générer des documents VEX :

  • passive-mode : en passant un rapport de vulnérabilités déjà généré par trivy ou grype.

  • active-mode : en scannant activement les images à l'aide des moteurs trivy ou grype, puis en générant le document à partir des résultats.

Mode passif (recommandé)

Avec 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

La même chose peut être appliquée avec 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

Mode actif

Avec 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

La même chose peut être appliquée avec 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

Classificateurs

Chaque CVE est classé dans une ou plusieurs classes d'exploitation, qui déterminent la décision d'atténuation. vex8s prend en charge trois moteurs de classification via --classifier :

  • embedded (par défaut) : un modèle ML ONNX hors ligne intégré au binaire. Aucun accès réseau requis.
  • gemini : utilise le LLM Gemini de Google pour classer la description du CVE. Nécessite la variable d'environnement GEMINI_API_KEY (éventuellement GEMINI_MODEL).
  • ollama : utilise un serveur Ollama exécuté localement pour classer la description du CVE. Récupérez d'abord un modèle tel que qwen2.5:3b-instruct (définissez éventuellement 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

Consultez la documentation, en particulier le Guide utilisateur pour un parcours complet, la configuration des classificateurs Gemini et Ollama, ainsi qu'une référence complète des options.

Références

Ce projet a été inspiré par le projet vexllm d'Akihiro Suda.

Catégories