
vex8s v0.5.0
Schwachstellen unterdrücken, indem Kubernetes-Kontext auf Scans angewendet wird
Vex8s
(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.
So funktioniert es
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:
- Jede CVE wird einer oder mehreren Schwachstellenklassen (CWE) zugeordnet
- Die CVE-Beschreibung wird von einem eingebetteten ML-Modell verarbeitet, um ihre Ausbeutungskategorie vorherzusagen.
- Sowohl die CWEs als auch die vorhergesagten Ausbeutungskategorien werden kombiniert, um zu bestimmen, ob die CVE abschwächbar ist.
- Jede Ausbeutungskategorie ist einer Reihe von Kubernetes-Einstellungen zugeordnet, die die Auswirkung blockieren oder reduzieren können.
- Durch das Parsen eines Kubernetes-Manifests können wir die Container-Einstellungen untersuchen, 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 bestimmten Workload-Konfiguration ausnutzbar ist.
- Wenn dies zu einer CVE-Abschwächung führt, fügen wir dies dem endgültigen VEX-Dokument hinzu.
Für eine vertiefte Lektüre können Sie dieses Paper konsultieren: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Installation
Sie können das neueste Binary von der Release-Seite herunterladen.
Oder Sie können es manuell erstellen:
make build
Verwendung
vex8s unterstützt derzeit 2 Möglichkeiten zur Erzeugung von VEX-Dokumenten:
-
passiver Modus: Übergabe eines bereits erzeugten Schwachstellenberichts, der von
trivyodergrypeerstellt wurde. -
aktiver Modus: Aktives Scannen der Images mit den Engines
trivyodergrypeund anschließendes Erzeugen des Dokuments basierend auf den Ergebnissen.
Passiver Modus (empfohlen)
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
Aktiver Modus
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
Klassifikatoren
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 UmgebungsvariableGEMINI_API_KEY(optionalGEMINI_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.
Referenzen
Dieses Projekt wurde von Akihiro Sudas Projekt vexllm inspiriert.