SBOM and VEX(SBOM と VEX)
SPDX 3.0・CycloneDX 1.7・VEX・US EO 14028・EU CRA 2027 を軸に、 ソフトウェア部品表(SBOM)の生成・運用・規制対応を俯瞰する地図記事。
article technology ja SPDX 3.0・CycloneDX 1.7・VEX・US EO 14028・EU CRA 2027 を軸に、 ソフトウェア部品表(SBOM)の生成・運用・規制対応を俯瞰する地図記事。SBOM と VEX
SBOM(Software Bill of Materials / ソフトウェア部品表)は、あるソフトウェア製品に含まれる全コンポーネント・依存ライブラリ・バージョン・ライセンスを機械可読な形式で記述した一覧である。サプライチェーン攻撃や脆弱性対応の迅速化のために、米国大統領令 14028(2021 年)・ EU サイバーレジリエンス法( CRA、2024 年発効)などの規制が SBOM 提供を要求し始めており、開発・調達双方での整備が急務となっている。
SBOM の役割
SBOM の主要な用途:
- 脆弱性影響範囲の迅速特定: 新 CVE が公開された際、SBOM と CVE データベースを突合することで「自社製品が影響を受けるか」を即座に判定できる。Log4Shell( CVE-2021-44228)の際、SBOM がない組織は手作業で数日〜数週間かけて影響調査を行った。
- 依存関係の可視化: 直接依存だけでなく推移的依存(依存の依存)まで記録することで、通常のパッケージ管理ツールでは見えない依存グラフを可視化する。
- ライセンスコンプライアンス: GPL / MIT / Apache などのライセンス情報を一覧化し、商用製品への混入チェックやライセンス競合の検出を支援する。
- インシデント対応支援: セキュリティインシデント発生時に影響コンポーネントを素早く特定し、パッチ適用やロールバックの優先順位付けができる。
SBOM フォーマット:SPDX 3.0 と CycloneDX 1.7
主要な 2 フォーマットは相互補完的に存在し、どちらも JSON / XML などの機械可読形式を持つ。
SPDX 3.0
SPDX(Software Package Data Exchange)は Linux Foundation が主導する ISO/IEC 提出段階の国際標準(情報カットオフ ~2025-08 時点での状況)。v3.0 では以下のプロファイルに分離:
- Core: パッケージ・ファイル・ スニペットの基本モデル
- Software / Licensing: ソフトウェアとライセンスの詳細
- Security: 脆弱性・ VEX 情報の内包
- AI: AI モデルの部品情報( EU AI Act への対応を想定)
- Data: データセットの部品情報
CycloneDX 1.7
CycloneDX は OWASP が策定する SBOM 標準で、2025-10 に v1.7 がリリース。特徴的な拡張:
- HBOM(Hardware Bill of Materials): ハードウェアコンポーネントの記述
- ML-BOM(Machine Learning BOM): AI モデル・データセットの部品情報
- CBOM(Cryptography BOM): 使用している暗号アルゴリズム・鍵の一覧(ポスト量子移行対応に重要)
- VEX 連携: CycloneDX 形式内で VEX 情報をネイティブに記述可能
フォーマット変換
OpenSSF の Protobom / BomCTL ツールが SPDX ↔ CycloneDX の変換を提供しており、異なる形式を要求するサプライチェーンパートナーへの対応が容易になっている。
SBOM の生成タイミング
| タイミング | 方法 | メリット |
|---|---|---|
| ビルド時( CI/CD) | Syft・Trivy・cdxgen などのツールで自動生成 | コンポーネント最終確定後の正確な一覧 |
| コンテナイメージ作成時 | Trivy sbom / Docker Scout で OCI アーティファクトに付随 | コンテナスキャンと一体化できる |
| リリース時 | SBOM をリリースアーティファクトとして署名・同梱 | 配布物と SBOM のバインドを保証 |
SBOM の鮮度管理が重要で、依存関係更新・ベースイメージ更新のたびに再生成・再署名する必要がある。CI/CD パイプラインへの統合が鮮度維持の基本戦略。
VEX(Vulnerability Exploitability eXchange)
VEX は、SBOM で列挙されたコンポーネントの既知脆弱性が「当該製品において実際に悪用可能か」を示す補足文書である。CVE データベースとの突合で大量の偽陽性(コンポーネントに CVE はあるが製品では影響しない)が発生する問題を解決する。
VEX のステータス定義( CISA VEX ガイドライン準拠):
| ステータス | 意味 |
|---|---|
| Not Affected | 該当 CVE は当製品のコンポーネントに存在するが、製品の使用方法では悪用不可能 |
| Affected | 該当 CVE は当製品において実際に影響がある(パッチ・回避策を提供) |
| Fixed | 該当 CVE は指定バージョンで修正済み |
| Under Investigation | 影響調査中 |
VEX は SPDX 3.0 Security プロファイル・CycloneDX 形式・CSAF( Common Security Advisory Framework)で記述できる。VEX の自動生成ツールとして vexctl( OpenSSF sigstore プロジェクト由来)が存在する。
規制動向
| 規制 | 要求内容 | 発効・期限 |
|---|---|---|
| US EO 14028 | 連邦政府調達ソフトウェアへの SBOM 提供義務 | 2021 年大統領令 |
| NTIA Minimum Elements | 7 必須要素(サプライヤ名・コンポーネント名・バージョン・一意 ID・依存関係・作成者・タイムスタンプ)。CISA 2025 ドラフトでは hash / license / tool / context も追加(ドラフト段階) | NTIA 2021 年ガイダンス |
| EU CRA(Cyber Resilience Act) | デジタル製品の製造業者にトップレベル SBOM 提供義務( CycloneDX 1.6+/SPDX 3.0.1+)。重要製品カテゴリは独立機関による適合評価 | 2024-12-10 発効 / 主要義務 2027-12-11 適用 |
EU CRA の「主要義務 2027-12-11」は、欧州市場で販売するデジタル製品のほぼ全分野に適用されるため、2025〜2026 年中の SBOM 整備着手が現実的なタイムラインとなる。
運用上の課題
- 署名と Provenance の紐付け: SBOM 自体を cosign / Sigstore で署名し、ビルド Provenance( SLSA)と紐付けることで改ざん検出が可能になる( tech-138 参照)。
- レジストリ保存と自動更新: SBOM を OCI アーティファクトとしてコンテナレジストリに保存し、イメージ更新に連動して自動再生成する仕組みが望ましい。
- SBOM 突合(マッチング)の精度: SBOM の PURL(Package URL)形式が標準化されていないと、CVE データベースとの突合精度が落ちる。PURL 標準の採用が重要。
アンチパターン
| アンチパターン | 問題 |
|---|---|
| SBOM を生成するだけで脆弱性データベースとの突合をしない | 一覧があっても突合なしでは脆弱性を発見できない |
| リリース時にのみ SBOM を更新し、定期更新しない | ベースイメージや依存関係の更新で SBOM が陳腐化し、重大な CVE を見落とす |
| VEX なしで大量の「潜在的脆弱性」アラートを放置する | 偽陽性が多すぎて真の危険を見落とす「アラート疲労」が起きる |
| SPDX か CycloneDX のどちらか一方のみを選択して硬直する | 異なるパートナーが異なる形式を要求する場合に対応できない |
Backlinks
6 backlinks
- related OWASP and Application Security(OWASP とアプリケーションセキュリティ)
- related Software Supply Chain Provenance(ソフトウェアサプライチェーン来歴)
- related Secure Development Lifecycle(セキュア開発ライフサイクル)
- related Software Supply Chain Attacks(ソフトウェアサプライチェーン攻撃)
- related CI/CD Security(CI/CD セキュリティ)
- related Container and Kubernetes Security(コンテナ・Kubernetes セキュリティ)