HN 日本語サマリー

← 一覧へ戻る
インフラ・DevOps

Kubernetesコンテキストをスキャンに適用して脆弱性を抑制する

Suppress vulnerabilities applying Kubernetes context to scans (github.com)

5 pointsby alegrey912 コメント

要約

Vex8sは、コンテナの脆弱性とKubernetesの設定を相関させることで、実際のクラスターで悪用可能なCVEを特定するVEX(Vulnerability Exploitability eXchange)ドキュメントを生成する実験的なプロジェクトです。CVEの悪用可能性を評価するために、MLモデルでCVEの分類を行い、KubernetesのsecurityContext設定と照合して、脆弱性が緩和されるかどうかを判断します。

全文翻訳

Vex8s

[画像: vex8s] (このロゴはAI生成ではありません)

Vex8sは、コンテナの脆弱性とKubernetesの設定を相関させることでVEXドキュメントを生成し、実際のクラスターでどのCVEが悪用可能かを判断します。

これは実験的なプロジェクトであり、変更が迅速に行われる可能性があることに注意してください。

仕組み

このプロジェクトは、脆弱性の分類とsecurityContext分析を組み合わせて、Kubernetesワークロード内の既知のCVEの悪用可能性を評価することを目的としています。

[画像: vex8s-logic]

以下の概念に基づいています。

  • 各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は現在、2つの方法でVEXドキュメントを生成できます。

  • パッシブモード: trivyまたはgrypeによって既に生成された脆弱性レポートを渡します。

  • アクティブモード: trivyまたはgrypeエンジンを使用して画像をアクティブにスキャンし、結果に基づいてドキュメントを生成します。

パッシブモード(推奨)

trivyを使用する場合:

# 脆弱性レポートを生成します。
trivy image --format json --output nginx.trivy.json nginx:1.21.0

# 脆弱性レポートを処理してVEXドキュメントを生成します。
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json

# VEXドキュメントを使用して再度スキャンし、脆弱性を抑制します。
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0

grypeを使用しても同様のことが可能です。

# SBOMレポートを生成します。
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0

# 脆弱性レポートを生成します。
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json

# 脆弱性レポートを処理してVEXドキュメントを生成します。
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json

# VEXドキュメントを使用してSBOMをスキャンし、脆弱性を抑制します。
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
アクティブモード

trivyを使用する場合:

# 画像をスキャンし、自動的にVEXドキュメントを生成します。
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json

# VEXドキュメントを使用して再度スキャンし、脆弱性を抑制します。
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0

grypeを使用しても同様のことが可能です。

# SBOMレポートを生成します。
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0

# 画像をスキャンし、自動的にVEXドキュメントを生成します。
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json

# VEXドキュメントを使用してSBOMをスキャンし、脆弱性を抑制します。
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サーバーを使用して説明を分類します。まずqwen2.5:3b-instructのようなモデルをプルしてください(オプションでOLLAMA_HOST / OLLAMA_MODELを設定)。
export OLLAMA_HOST="http://localhost:11434"
export OLLAMA_MODEL="qwen2.5:3b-instruct"

vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
  --output nginx.vex.json --classifier ollama

完全なウォークスルー、GeminiおよびOllamaクラスファイアの設定、および完全なフラグリファレンスについては、ドキュメント、特にユーザーガイドを参照してください。

参考文献

このプロジェクトは、Akihiro Suda氏のプロジェクトvexllmに触発されました。