Vex8s is een experimenteel project dat VEX-documenten genereert om de exploiteerbaarheid van bekende CVE's binnen Kubernetes-workloads te beoordelen. Het systeem werkt door kwetsbaarheidsclassificatie (op basis van CWE's en ML-modellen zoals een embedded ONNX-model of Google Gemini) te combineren met een analyse van de securityContext in Kubernetes-manifesten.
Op basis van deze gecombineerde analyse kan Vex8s bepalen of een kwetsbaarheid gemitigeerd wordt door de huidige cluster-instellingen. De tool kan worden gebruikt in twee modi:
- Passieve modus: Verwerkt reeds bestaande kwetsbaarheidsrapporten van Trivy of Grype.
- Actieve modus: Scant images direct met Trivy of Grype om vervolgens het VEX-document te genereren.
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:
- Elke CVE wordt gecategoriseerd in één of meer kwetsbaarheidsklassen (CWE).
- De CVE-beschrijving wordt verwerkt door een ingebouwd ML-model om de exploitatiecategorie te voorspellen.
- Zowel de CWE's als de voorspelde exploitatiecategorieën worden gecombineerd om te bepalen of de CVE kan worden gemitigeerd.
- Elke exploitatiecategorie is gekoppeld aan een set Kubernetes-instellingen die de impact kunnen blokkeren of verminderen.
- Door een Kubernetes-manifest te analyseren, kunnen de containerinstellingen worden geïnspecteerd om te evalueren of de relevante instellingen zijn toegepast.
- De combinatie van beide analyses stelt het systeem in staat om te bepalen of een CVE exploiteerbaar is in een specifieke workload-configuratie.
- 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.
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:
- Elke CVE wordt gecategoriseerd in één of meer kwetsbaarheidsklassen (CWE).
- De CVE-beschrijving wordt verwerkt door een ingebouwd ML-model om de exploitatiecategorie te voorspellen.
- Zowel de CWE's als de voorspelde exploitatiecategorieën worden gecombineerd om te bepalen of de CVE kan worden gemitigeerd.
- Elke exploitatiecategorie is gekoppeld aan een set Kubernetes-instellingen die de impact kunnen blokkeren of verminderen.
- Door een Kubernetes-manifest te analyseren, kunnen de containerinstellingen worden geïnspecteerd om te evalueren of de relevante instellingen zijn toegepast.
- De combinatie van beide analyses stelt het systeem in staat om te bepalen of een CVE exploiteerbaar is in een specifieke workload-configuratie.
- 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.