mcpField
G
generating-and-analyzing-sboms

generating-and-analyzing-sboms

github.com/mukul975セキュリティ35.2k97 回インストール8 週間前に更新
リポジトリ

generating-and-analyzing-sboms について

Syft、Grype、Cosignを使ってソフトウェア部品表を生成・分析するセキュリティスキルです。セキュリティ担当者や開発チーム向けに、依存関係の把握、脆弱性検出、署名済みSBOM証明の検証を支援します。

主な機能

  1. 01CycloneDXとSPDXのSBOM生成
  2. 02SBOMとイメージの脆弱性スキャン
  3. 03CI/CDの重大度ゲート設定
  4. 04SBOM証明の署名と検証
  5. 05保存済みSBOMの再スキャンによる新規CVE検出

活用シーン

  1. 01アプリケーションやコンテナの依存関係の把握
  2. 02ソフトウェア成果物の既知の脆弱性検出
  3. 03重大度に応じたビルドの停止
  4. 04イメージを信頼する前の来歴証明の検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill generating-and-analyzing-sboms

インストール後、Claude Code で/generating-and-analyzing-sbomsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

詳細

SBOM の生成と分析

許可された用途のみ: SBOM の生成とスキャンは、自分が所有する、または評価する権限を持つソフトウェアとイメージに対してのみ行ってください。SBOM は機密性の高いインベントリデータとして扱ってください。依存関係の攻撃対象領域が明らかになるためです。

概要

ソフトウェア部品表(SBOM)は、ソフトウェアに含まれるすべてのコンポーネント、ライブラリ、依存関係を記録した、正式な機械可読インベントリです。いわば、サプライチェーンにおける原材料表示です。SBOM はサプライチェーン侵害への防御の要です(CISA の SBOM イニシアチブ、米国大統領令 14028)。把握できていないものにはパッチを適用できないためです。主流の SBOM 標準は次の 2 つです。

  • CycloneDX — セキュリティ用途(脆弱性、VEX、依存関係の関連性)に最適化された OWASP 標準です。
  • SPDX — ライセンスと出所情報に強い Linux Foundation/ISO 標準(ISO/IEC 5962)です。

参照用のオープンソースツールチェーンは Anchore が提供しています。

  • Syft は、コンテナイメージやファイルシステムから SBOM(CycloneDX、SPDX、またはネイティブ形式)を生成します。
  • Grype は、SBOM(またはイメージ)を脆弱性データベースと照合し、CVE を検出します。
  • Cosign(Sigstore)は SBOM に署名し、改ざん検知可能な出所情報を示す署名付きアテステーションとして、イメージに添付します。

このスキルでは、標準準拠の SBOM の生成、脆弱性情報との関連付け、CI/CD へのワークフローの組み込みについて説明します。

使用する場面

  • アプリケーションやコンテナイメージのコンポーネントインベントリを作成、維持する場合。
  • 既知の脆弱性(既存のアーティファクトに対して新たに公表された CVE を含む)を継続的に検出する場合。
  • 調達や規制に関する SBOM 要件(CISA、EO 14028)を満たす場合。
  • 下流のサプライチェーンで信頼を確保するため、署名付き SBOM アテステーションを作成する場合。

前提条件

  • Syft と Grype をインストールします(公式インストールスクリプト)。
    curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
    curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
    
  • 署名/アテステーション用に Cosign をインストールします。
    # via Go, or download a release from https://github.com/sigstore/cosign/releases
    go install github.com/sigstore/cosign/v2/cmd/cosign@latest
    
  • 対象のイメージ/ソースへのアクセス権と、署名用のレジストリおよび鍵、または鍵なしの OIDC が必要です。

目標

  • イメージとディレクトリから CycloneDX および SPDX の SBOM を生成します。
  • Grype で SBOM とイメージの脆弱性をスキャンします。
  • 深刻度のしきい値に基づいて CI/CD ビルドをゲートします。
  • Cosign で SBOM アテステーションに署名して添付し、検証します。

MITRE ATT&CK との対応

ID公式の手法名このスキルとの関連性
T1195.001サプライチェーン侵害:ソフトウェア依存関係と開発ツールの侵害SBOM の生成と脆弱性情報との関連付けにより、この手法で攻撃者が悪用する攻撃対象領域となる、侵害された依存関係や脆弱な依存関係を明らかにできます。

これはサプライチェーン防御のためのスキルです。この対応付けは、検出と軽減を目的とする攻撃者の手法を示しています。

ワークフロー

1. コンテナイメージから CycloneDX SBOM を生成する

-o <format> で出力形式を指定します。cyclonedx-json はセキュリティ用途に適しています。

syft alpine:latest -o cyclonedx-json=alpine.cdx.json
2. ソースディレクトリから SPDX SBOM を生成する

チェックアウト済みリポジトリのインベントリを作成するには、ソースとして dir: を使用します。SPDX 標準には spdx-json を使用します。

syft dir:. -o spdx-json=app.spdx.json
3. 複数の形式を一度に出力する

1 回の実行で両方の標準形式を生成し、異なる利用者に提供します。

syft myorg/app:1.4.2 \
  -o cyclonedx-json=app.cdx.json \
  -o spdx-json=app.spdx.json \
  -o table
4. Grype で SBOM の脆弱性をスキャンする

生成とスキャンを分離すると、新たな CVE が公表されたときに、ビルドし直すことなく保存済みの SBOM を再スキャンできます。

# Scan an existing SBOM
grype sbom:app.cdx.json -o table

# JSON report for automation
grype sbom:app.cdx.json -o json > app.vulns.json

イメージを直接スキャンすることもできます(Grype が内部で SBOM を生成します)。

grype myorg/app:1.4.2 -o table
5. 深刻度に基づいて CI/CD をゲートする

--fail-on は、指定した深刻度以上の結果がある場合にゼロ以外の終了コードを返し、パイプラインを失敗させます。

grype sbom:app.cdx.json --fail-on high

.grype.yaml ポリシー(only-fixed: true)または --only-fixed を使って、修正不可能なノイズを除外します。

grype sbom:app.cdx.json --only-fixed --fail-on critical
6. SBOM に署名し、アテステーションとして添付する

Cosign は、署名付き in-toto アテステーションとして SBOM を記録し、レジストリ内のイメージと一緒に保存します。

# Key-based signing
cosign attest --key cosign.key \
  --predicate app.spdx.json \
  --type spdxjson \
  myorg/app:1.4.2

# Keyless (Sigstore OIDC / Fulcio + Rekor)
COSIGN_EXPERIMENTAL=1 cosign attest \
  --predicate app.cdx.json \
  --type cyclonedx \
  myorg/app:1.4.2
7. 下流でアテステーションを検証する

利用者はイメージを信頼する前に、出所情報を検証します。

cosign verify-attestation --key cosign.pub --type spdxjson myorg/app:1.4.2
8. 添付された SBOM を取得して再スキャンする

レジストリから証明済みの SBOM を取得し、継続的な監視の一環として Grype を再実行します。

cosign download attestation myorg/app:1.4.2 \
  | jq -r '.payload' | base64 -d | jq '.predicate' > pulled.spdx.json
grype sbom:pulled.spdx.json -o table
9. 脆弱性インテリジェンスと関連付ける

Grype の JSON を脆弱性管理ワークフローに取り込みます。CVE ごとに重複を排除し、優先順位付けのために EPSS/KEV の情報を付加して、修正 SLA を追跡します。Grype DB が更新されるたびに保存済みの SBOM を再スキャンし、変更されていないアーティファクトで新たに公表された CVE を検出します。

ツールとリソース

ツール目的リンク
SyftSBOM の生成https://github.com/anchore/syft
GrypeSBOM/イメージの脆弱性スキャンhttps://github.com/anchore/grype
CosignSBOM の署名/証明https://github.com/sigstore/cosign
CycloneDXセキュリティに特化した SBOM 標準https://cyclonedx.org/
SPDXISO SBOM 標準https://spdx.dev/
CISA SBOMガイダンスと最小要素https://www.cisa.gov/sbom

フォーマットの比較

項目CycloneDXSPDX
管理主体OWASPLinux Foundation / ISO 5962
強みセキュリティ、VEX、脆弱性ライセンス、来歴
Syft の一般的な -o の値cyclonedx-json、cyclonedx-xmlspdx-json、spdx(タグ値形式)

検証基準

  • 対象イメージから CycloneDX SBOM が生成されている
  • 必要に応じてソースから SPDX SBOM が生成されている
  • SBOM が Grype でスキャンされ、CVE レポートが作成されている
  • 合意した重大度で --fail-on を使用して CI/CD がゲートされている
  • SBOM が署名され、Cosign を使用した証明として添付されている
  • 下流で証明が検証されている
  • Grype DB の更新時に保存済みの SBOM が再スキャンされている
  • 検出結果が関連付けられ、優先順位付け(EPSS/KEV)され、修正まで追跡されている

コメント