Schwachstellen unterdrücken, indem Kubernetes-Kontext auf Scans angewendet wird
(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.
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:
Für eine ausführlichere Lektüre kannst du dieses Paper konsultieren: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Du kannst das neueste Binary von der Release-Seite herunterladen.
Oder du kannst es manuell bauen:
make build
vex8s unterstützt derzeit 2 Wege zur Generierung von VEX-Dokumenten:
passive-mode: Übergabe eines bereits generierten Schwachstellenberichts, der von trivy oder grype erstellt wurde.
active-mode: aktives Scannen der Images mit trivy- oder grype-Engines und anschließende Generierung des Dokuments basierend auf den Ergebnissen.
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
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
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 Umgebungsvariable GEMINI_API_KEY (optional GEMINI_MODEL).ollama: verwendet einen lokal laufenden Ollama-Server, um
die CVE-Beschreibung zu klassifizieren. Lade zuerst ein Modell wie
qwen2.5:3b-instruct (optional OLLAMA_HOST / OLLAMA_MODEL setzen).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.
Dieses Projekt wurde von Akihiro Sudas Projekt vexllm inspiriert.