
vex8s v0.5.0
Kubernetesのコンテキストをスキャンに適用することで脆弱性を抑制する
Vex8s
(このロゴはAI生成ではありません)
Vex8sは、コンテナの脆弱性とKubernetesの設定を関連付けることでVEXドキュメントを生成し、クラスタ内で実際に悪用可能なCVEを特定します。
これは実験的なプロジェクトであることにご注意ください。状況は急速に変化する可能性があります。
仕組み
このプロジェクトは、脆弱性の分類とsecurityContext分析を組み合わせることで、Kubernetesワークロード内の既知のCVEの悪用可能性を評価することを目的としています。

これは以下のコンセプトに基づいています:
- 各CVEは1つ以上の脆弱性クラス(CWE)に分類されます
- CVEの説明は、組み込みのMLモデルによって処理され、その悪用カテゴリを予測します。
- CWEと予測された悪用カテゴリの両方を組み合わせて、そのCVEが緩和可能かどうかを判断します。
- 各悪用カテゴリは、影響をブロックまたは軽減できるKubernetes設定のセットにマッピングされます。
- Kubernetesマニフェストを解析することで、コンテナ設定を検査し、関連する設定が適用されているかどうかを評価できます。
- 両方の分析を組み合わせることで、システムは特定のワークロード構成においてCVEが悪用可能かどうかを判断できます。
- CVEの緩和が確認された場合、それを最終的なVEXドキュメントに追加します。
より詳細な内容については、こちらの論文を参照してください: Environment-Aware Vulnerability Suppression Using Kubernetes Security Contexts and VEX
インストール
最新のバイナリはリリースページからダウンロードできます。
または、手動でビルドすることもできます:
make build
使用方法
vex8sは現在、VEXドキュメントを生成する2つの方法をサポートしています:
-
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は1つ以上の悪用クラスに分類され、これが緩和の判断を左右します。vex8sは--classifierを介して3つの分類器エンジンをサポートしています:
embedded(デフォルト): バイナリにバンドルされたオフラインのONNX MLモデル。ネットワークアクセスは不要です。gemini: GoogleのGemini LLMを使用して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分類器のセットアップ、および完全なフラグリファレンスについては、ドキュメント、特にユーザーガイドを参照してください。
参考文献
このプロジェクトは、Akihiro Suda氏のプロジェクトvexllmに触発されました。