Vex8s

Let op: dit is een experimenteel project. Onderdelen kunnen snel veranderen.

Hoe het werkt

Het doel van dit project is om de exploiteerbaarheid van bekende CVE's binnen Kubernetes-workloads te beoordelen door kwetsbaarheidsclassificatie te combineren met een analyse van de securityContext.

Dit is gebaseerd op het volgende concept:

  1. Elke CVE wordt gecategoriseerd in één of meer kwetsbaarheidsklassen (CWE).
  2. De CVE-beschrijving wordt verwerkt door een ingebouwd ML-model om de exploitatiecategorie te voorspellen.
  3. Zowel de CWE's als de voorspelde exploitatiecategorieën worden gecombineerd om te bepalen of de CVE kan worden gemitigeerd.
  4. Elke exploitatiecategorie is gekoppeld aan een set Kubernetes-instellingen die de impact kunnen blokkeren of verminderen.
  5. Door een Kubernetes-manifest te analyseren, kunnen de containerinstellingen worden geïnspecteerd om te evalueren of de relevante instellingen zijn toegepast.
  6. De combinatie van beide analyses stelt het systeem in staat om te bepalen of een CVE exploiteerbaar is in een specifieke workload-configuratie.
  7. Indien er sprake is van een CVE-mitigatie, wordt dit toegevoegd aan het uiteindelijke VEX-document.

Voor een meer diepgaande analyse kunt u het volgende artikel raadplegen: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX.

Installatie

U kunt de nieuwste binary downloaden vanaf de release-pagina, of deze handmatig bouwen met:

make build

Gebruik

Vex8s ondersteunt momenteel twee manieren om VEX-documenten te genereren:

  • Passieve modus: het doorgeven van een reeds gegenereerd kwetsbaarheidsrapport dat is gemaakt door Trivy of Grype.
  • Actieve modus: het actief scannen van images met behulp van Trivy- of Grype-engines en vervolgens het document genereren op basis van de resultaten.

Passieve modus (aanbevolen)

Met Trivy:

# Genereer kwetsbaarheidsrapport
trivy image --format json --output nginx.trivy.json nginx:1.21.0

# Genereer VEX-document door het kwetsbaarheidsrapport te verwerken
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json

# Scan opnieuw met het VEX-document om kwetsbaarheden te onderdrukken
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0

Met Grype:

# Genereer SBOM-rapport
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0

# Genereer kwetsbaarheidsrapport
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json

# Genereer VEX-document door het kwetsbaarheidsrapport te verwerken
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json

# Scan SBOM met VEX-document om kwetsbaarheden te onderdrukken
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed

Actieve modus

Met Trivy:

# Scan de image en genereer automatisch een VEX-document
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json

# Scan opnieuw met het VEX-document om kwetsbaarheden te onderdrukken
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0

Met Grype:

# Genereer SBOM-rapport
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0

# Scan de image en genereer automatisch een VEX-document
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json

# Scan SBOM met VEX-document om kwetsbaarheden te onderdrukken
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed

Classificatoren

Elke CVE wordt geclassificeerd in één of meer exploitatieklassen, die de beslissing over de mitigatie bepalen. Vex8s ondersteunt twee classificatie-engines via de vlag --classifier:

  • embedded (standaard): een offline ONNX ML-model dat is ingebouwd in de binary. Hiervoor is geen netwerktoegang vereist.
  • gemini: maakt gebruik van het Gemini LLM van Google om de CVE-beschrijving te classificeren. Hiervoor is de omgevingsvariabele GEMINIAPIKEY vereist (optioneel GEMINI_MODEL).

Voorbeeld van gebruik met Gemini:

export GEMINI_API_KEY="uw-api-sleutel"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini

Raadpleeg de documentatie — in het bijzonder de User Guide — voor een volledige handleiding, de configuratie van de Gemini-classifier en een compleet overzicht van de vlaggen.

Referenties

Dit project is geïnspireerd door het project vexllm van Akihiro Suda.