
vex8s v0.5.0
Schwachstellen unterdrücken, indem Kubernetes-Kontext auf Scans angewendet wird
Vex8s
(dieses Logo ist nicht KI-generiert)
Vex8s generiert VEX-Dokumente, indem es Container-Schwachstellen mit Kubernetes-Einstellungen korreliert, um zu bestimmen, welche CVEs in deinem Cluster tatsächlich ausnutzbar sind.
Bitte beachte, dass dies ein experimentelles Projekt ist. Dinge können sich schnell ändern.
Funktionsweise
Das Projekt zielt darauf ab, die Ausnutzbarkeit bekannter CVEs innerhalb von Kubernetes-Workloads zu bewerten, indem es Schwachstellenklassifizierung und securityContext-Analyse kombiniert.

Es basiert auf folgendem Konzept:
- Jede CVE wird in eine oder mehrere Schwachstellenklassen (CWE) kategorisiert
- Die CVE-Beschreibung wird von einem eingebetteten ML-Modell verarbeitet, um ihre Exploitation-Kategorie vorherzusagen.
- Sowohl die CWEs als auch die vorhergesagten Exploitation-Kategorien werden kombiniert, um zu bestimmen, ob die CVE mitigierbar ist.
- Jede Exploitation-Kategorie wird auf eine Reihe von Kubernetes-Einstellungen abgebildet, die den Impact blockieren oder reduzieren können.
- Durch das Parsen eines Kubernetes-Manifests können wir die Container-Einstellungen inspizieren, um zu bewerten, ob die relevanten Einstellungen vorhanden sind.
- Die Kombination beider Analysen ermöglicht es dem System zu bestimmen, ob eine CVE in einer gegebenen Workload-Konfiguration ausnutzbar ist.
- Wenn dies zu einer CVE-Mitigation führt, fügen wir diese dem finalen VEX-Dokument hinzu.
Für eine ausführlichere Lektüre kannst du dieses Paper konsultieren: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Installation
Du kannst das neueste Binary von der Release-Seite herunterladen.
Oder du kannst es manuell bauen:
make build
Verwendung
vex8s unterstützt derzeit 2 Wege zur Generierung von VEX-Dokumenten:
-
passive-mode: Übergabe eines bereits generierten Schwachstellenberichts, der von
trivyodergrypeerstellt wurde. -
active-mode: aktives Scannen der Images mit
trivy- odergrype-Engines und anschließende Generierung des Dokuments basierend auf den Ergebnissen.
Passive mode (empfohlen)
Verwendung von 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
Dasselbe kann mit grype angewendet werden:
# 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
Active mode
Verwendung von 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
Dasselbe kann mit grype angewendet werden:
# 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
Klassifizierer
Jede CVE wird in eine oder mehrere Exploitation-Klassen klassifiziert, die die
Mitigationsentscheidung steuern. vex8s unterstützt drei Klassifizierer-Engines über --classifier:
embedded(Standard): ein offline ONNX ML-Modell, das in das Binary eingebettet ist. Kein Netzwerkzugriff erforderlich.gemini: verwendet Googles Gemini LLM, um die CVE-Beschreibung zu klassifizieren. Erfordert die UmgebungsvariableGEMINI_API_KEY(optionalGEMINI_MODEL).ollama: verwendet einen lokal laufenden Ollama-Server, um die CVE-Beschreibung zu klassifizieren. Lade zuerst ein Modell wieqwen2.5:3b-instruct(optionalOLLAMA_HOST/OLLAMA_MODELsetzen).
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier ollama
Siehe die Dokumentation, insbesondere den User Guide für eine vollständige Anleitung, die Einrichtung der Gemini- und Ollama- Klassifizierer sowie eine vollständige Flag-Referenz.
Referenzen
Dieses Projekt wurde von Akihiro Sudas Projekt vexllm inspiriert.