インフラ・DevOps
Kubernetesコンテキストをスキャンに適用して脆弱性を抑制する
Suppress vulnerabilities applying Kubernetes context to scans (github.com)
要約
Vex8sは、コンテナの脆弱性とKubernetesの設定を相関させることで、実際のクラスターで悪用可能なCVEを特定するVEX(Vulnerability Exploitability eXchange)ドキュメントを生成する実験的なプロジェクトです。CVEの悪用可能性を評価するために、MLモデルでCVEの分類を行い、KubernetesのsecurityContext設定と照合して、脆弱性が緩和されるかどうかを判断します。
全文翻訳
Vex8s (このロゴはAI生成ではありません)
Vex8sは、コンテナの脆弱性とKubernetesの設定を相関させることで、実際のクラスターで悪用可能なCVEを特定し、VEXドキュメントを生成します。これは実験的なプロジェクトであり、状況は急速に変化する可能性があることに注意してください。
仕組み
このプロジェクトは、脆弱性分類とsecurityContext分析を組み合わせて、Kubernetesワークロード内の既知のCVEの悪用可能性を評価することを目的としています。以下の概念に基づいています。
各CVEは、1つ以上の脆弱性クラス(CWE)に分類されます。
CVEの説明は、組み込みのMLモデルによって処理され、その悪用可能性カテゴリを予測します。
CWEと予測された悪用可能性カテゴリの両方を組み合わせて、CVEが緩和可能かどうかを判断します。
各悪用可能性カテゴリは、影響をブロックまたは軽減できるKubernetes設定のセットに対応します。
Kubernetesマニフェストを解析することで、コンテナ設定を検査し、関連する設定が配置されているかどうかを確認できます。
両方の分析を組み合わせることで、特定のワークロード構成でCVEが悪用可能かどうかをシステムが判断できます。
CVEの緩和につながる場合、それを最終的なVEXドキュメントに追加します。
詳細については、この論文を参照してください:Kubernetes Security Contexts and VEXを使用した環境認識型脆弱性抑制
インストール
最新のバイナリはリリースページからダウンロードできます。
または、手動でビルドすることもできます。
make build
使用方法
vx8sは現在、VEXドキュメントを生成するために2つの方法をサポートしています。
パッシブモード: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つ以上の悪用クラスに分類されます。
vx8sは、--classifierを介して2つの分類子エンジンをサポートしています。
組み込み(デフォルト):バイナリにバンドルされたオフラインONNX MLモデル。ネットワークアクセスは不要です。
gemini:GoogleのGemini LLMを使用してCVEの説明を分類します。GEMINI_API_KEY環境変数(オプションでGEMINI_MODEL)が必要です。
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini
完全なウォークスルー、Gemini分類子のセットアップ、および完全なフラグリファレンスについては、ドキュメント、特にユーザーガイドを参照してください。
参考文献
このプロジェクトは、Akihiro Suda氏のプロジェクトvexllmに触発されました。