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

Es basiert auf dem folgenden Konzept:
Für eine vertiefte Lektüre können Sie dieses Paper konsultieren: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Sie können das neueste Binary von der Release-Seite herunterladen.
Oder Sie können es manuell erstellen:
make build
vex8s unterstützt derzeit 2 Möglichkeiten zur Erzeugung von VEX-Dokumenten:
passiver Modus: Übergabe eines bereits erzeugten Schwachstellenberichts, der von trivy oder grype erstellt wurde.
aktiver Modus: Aktives Scannen der Images mit den Engines trivy oder grype und anschließendes Erzeugen des Dokuments basierend auf den Ergebnissen.
Mit trivy:
# Schwachstellenbericht erzeugen.
trivy image --format json --output nginx.trivy.json nginx:1.21.0
# VEX-Dokument durch Verarbeitung des Schwachstellenberichts erzeugen.
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json
# Erneut mit VEX-Dokument scannen, um Schwachstellen zu unterdrücken.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Dasselbe kann mit grype angewendet werden:
# SBOM-Bericht erzeugen.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# Schwachstellenbericht erzeugen.
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json
# VEX-Dokument durch Verarbeitung des Schwachstellenberichts erzeugen.
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json
# SBOM mit VEX-Dokument scannen, um Schwachstellen zu unterdrücken.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Mit trivy:
# Das Image scannen und automatisch ein VEX-Dokument erzeugen.
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json
# Erneut mit VEX-Dokument scannen, um Schwachstellen zu unterdrücken.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
Dasselbe kann mit grype angewendet werden:
# SBOM-Bericht erzeugen.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# Das Image scannen und automatisch ein VEX-Dokument erzeugen.
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json
# SBOM mit VEX-Dokument scannen, um Schwachstellen zu unterdrücken.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
Jede CVE wird in eine oder mehrere Ausbeutungsklassen eingeteilt, die die
Abschwächungsentscheidung steuern. vex8s unterstützt zwei Klassifikator-Engines über --classifier:
embedded (Standard): ein Offline-ONNX-ML-Modell,
das im Binary gebündelt ist. Kein Netzwerkzugriff erforderlich.gemini: verwendet Googles Gemini-LLM, um die CVE-Beschreibung zu klassifizieren.
Erfordert die Umgebungsvariable GEMINI_API_KEY (optional GEMINI_MODEL).export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini
Siehe die Dokumentation — insbesondere die Benutzeranleitung — für eine vollständige Schritt-für-Schritt-Anleitung, die Einrichtung des Gemini- Klassifikators und eine vollständige Flag-Referenz.
Dieses Projekt wurde von Akihiro Sudas Projekt vexllm inspiriert.