Подавление уязвимостей с применением контекста Kubernetes к сканированиям
(этот логотип не сгенерирован ИИ)
Vex8s создаёт документы VEX, сопоставляя уязвимости контейнеров с настройками Kubernetes, чтобы определить, какие CVE действительно эксплуатируемы в вашем кластере.
Обратите внимание, это экспериментальный проект. Всё может быстро меняться.
Проект нацелен на оценку эксплуатируемости известных CVE в рабочих нагрузках Kubernetes путём объединения классификации уязвимостей и анализа securityContext.

Он основан на следующей концепции:
Для более глубокого изучения вы можете обратиться к этой статье: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
Вы можете скачать последний бинарный файл со страницы релизов.
Или собрать его вручную:
make build
vex8s в настоящее время поддерживает 2 способа создания документов VEX:
passive-mode: передача уже созданного отчёта об уязвимостях, сгенерированного trivy или grype.
active-mode: активное сканирование образов с помощью движков trivy или grype и последующая генерация документа на основе результатов.
Использование 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
То же самое можно применить с помощью 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
Использование 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
То же самое можно применить с помощью 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
Каждая CVE классифицируется по одному или нескольким классам эксплуатации, которые определяют
решение об устранении. vex8s поддерживает три движка классификаторов через --classifier:
embedded (по умолчанию): офлайн ONNX ML-модель,
встроенная в бинарный файл. Сетевой доступ не требуется.gemini: использует LLM Gemini от Google для классификации описания CVE.
Требуется переменная окружения GEMINI_API_KEY (опционально GEMINI_MODEL).ollama: использует локально запущенный сервер Ollama для
классификации описания CVE. Сначала загрузите модель, например
qwen2.5:3b-instruct (опционально задайте OLLAMA_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
См. документацию, в частности Руководство пользователя для полного пошагового руководства, настройки классификаторов Gemini и Ollama, а также полного справочника по флагам.
Этот проект был вдохновлён проектом Акихиро Суды vexllm.