
vex8s v0.5.0
Suprimir vulnerabilidades aplicando contexto Kubernetes a varreduras
Vex8s
(este logotipo não foi gerado por IA)
O Vex8s gera documentos VEX ao correlacionar vulnerabilidades de contêineres com configurações do Kubernetes para determinar quais CVEs são realmente exploráveis no seu cluster.
Observe que este é um projeto experimental. As coisas podem mudar rapidamente.
Como Funciona
O projeto tem como objetivo avaliar a explorabilidade de CVEs conhecidas em cargas de trabalho do Kubernetes, combinando a classificação de vulnerabilidades e a análise do securityContext.

Baseia-se no seguinte conceito:
- Cada CVE é categorizada em uma ou mais classes de vulnerabilidade (CWE)
- A descrição da CVE é processada por um modelo de ML incorporado para prever sua categoria de exploração.
- Tanto as CWEs quanto as categorias de exploração previstas são combinadas para determinar se a CVE é mitigável.
- Cada categoria de exploração mapeia para um conjunto de configurações do Kubernetes que podem bloquear ou reduzir o impacto.
- Ao analisar um manifesto do Kubernetes, podemos inspecionar as configurações do contêiner para avaliar se as configurações relevantes estão em vigor.
- A combinação de ambas as análises permite que o sistema determine se uma CVE é explorável em uma determinada configuração de carga de trabalho.
- Se resultar em uma mitigação de CVE, adicionamos isso ao documento VEX final.
Para uma leitura mais aprofundada, você pode consultar este artigo: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Instalação
Você pode baixar o binário mais recente na página de releases.
Ou você pode compilá-lo manualmente:
make build
Uso
O vex8s atualmente suporta 2 maneiras de gerar documentos VEX:
-
passive-mode: passando um relatório de vulnerabilidades já gerado criado pelo
trivyougrype. -
active-mode: escaneando ativamente as imagens usando os motores
trivyougrypee então gerando o documento com base nos resultados.
Modo passivo (recomendado)
Usando 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
O mesmo pode ser aplicado usando grype:
# 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
Modo ativo
Usando 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
O mesmo pode ser aplicado usando grype:
# 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
Classificadores
Cada CVE é classificada em uma ou mais classes de exploração, que orientam a
decisão de mitigação. O vex8s suporta três motores de classificação via --classifier:
embedded(padrão): um modelo de ML ONNX offline incorporado no binário. Não requer acesso à rede.gemini: usa o LLM Gemini do Google para classificar a descrição da CVE. Requer a variável de ambienteGEMINI_API_KEY(opcionalmenteGEMINI_MODEL).ollama: usa um servidor Ollama em execução local para classificar a descrição da CVE. Baixe um modelo comoqwen2.5:3b-instructprimeiro (opcionalmente definaOLLAMA_HOST/OLLAMA_MODEL).
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier ollama
Consulte a documentação, em particular o Guia do Usuário para um passo a passo completo, a configuração dos classificadores Gemini e Ollama, e uma referência completa de flags.
Referências
Este projeto foi inspirado no projeto vexllm de Akihiro Suda.