概要
SBOM(Software Bill of Materials:ソフトウェア部品表)は、ソフトウェア製品に含まれるライブラリ・OSSコンポーネント・バージョン情報を一覧化した「部品表」です。製造業の部品表(BOM)の考え方をソフトウェアに応用したもので、脆弱性発覚時に「自社製品がその部品を使っているか」を即座に特定するための管理手法です。SC試験ではサプライチェーン攻撃対策の一環として、SBOMという可視化ツール自体の目的・形式・活用法が問われます。
仕組みと動作原理
SBOMが解決する課題
現代のソフトウェアは数百〜数千のOSSライブラリに依存しており、開発者自身も自社製品にどの部品が含まれるか正確に把握できていないケースが多くあります。2021年のLog4Shell(Apache Log4jの脆弱性)事案では、多くの組織が「自社システムにLog4jが使われているか」の特定に長時間を要し、対応の遅れにつながりました。SBOMがあれば、この特定作業を数分〜数時間で完了できます。
代表的なフォーマット:SPDXとCycloneDX
| フォーマット | 策定団体 | 特徴 |
|---|---|---|
| SPDX(Software Package Data Exchange) | Linux Foundation(ISO/IEC 5962として国際標準化) | ライセンスコンプライアンスの管理に強み。もともとOSSライセンス調査目的で発展 |
| CycloneDX | OWASP | セキュリティ用途に特化。脆弱性情報・VEX(Vulnerability Exploitability eXchange)との連携がしやすい |
両者はJSON/XML形式で機械可読に出力でき、CI/CDパイプラインへの組み込みやツール間連携を前提に設計されています。SC試験ではどちらか一方が「正しい」形式というより、両方が並立する標準であり用途に応じて使い分けられる点が問われます。
SBOMの生成から活用までの流れ
脆弱性管理・VEXとの連携
SBOMは「何が使われているか」を示しますが、それだけでは「実際に悪用可能か」は分かりません。あるライブラリの脆弱な関数を呼び出していない場合、脆弱性が存在してもリスクは低いことがあります。この判断を補うのがVEX(脆弱性の悪用可能性を示す情報)で、SBOMとVEXを組み合わせることで「該当コンポーネントを含むが、この製品では影響を受けない」といった精緻な判断が可能になります。
OSSライセンスリスクの可視化
SBOMはセキュリティだけでなく、ライセンスコンプライアンスの観点でも活用されます。GPL系のコピーレフトライセンスを商用製品に無自覚に組み込んでしまうと、ソースコード開示義務などの法的リスクが生じます。SBOMにライセンス情報を含めることで、リリース前にライセンス条件の衝突を検知できます。
SC試験での頻出ポイント
- SBOMの目的:脆弱性発覚時にコンポーネントの使用有無を迅速に特定し、対応時間を短縮すること
- SPDXとCycloneDXの違い:SPDXはライセンス管理起点、CycloneDXはセキュリティ用途起点で発展した標準
- Log4Shellのような事案での有効性:SBOMがあれば影響範囲の特定が迅速化される具体例として出題されやすい
- VEXとの組み合わせ:SBOM単体では「悪用可能性」までは分からず、VEXで補完する関係性
- SBOMはサプライチェーン攻撃そのものではなく管理・可視化の手法であるという位置づけの違い
よくある誤問・ひっかけパターン
誤り① 「SBOMがあれば脆弱性は自動的に修正される」→ 誤。SBOMはあくまで部品の一覧であり「可視化ツール」です。修正パッチの適用や回避策の実施は別途、開発・運用チームが対応する必要があります。
誤り② 「SBOMのフォーマットはSPDXが唯一の標準である」→ 誤。SPDXとCycloneDXはどちらも広く使われる標準であり、用途(ライセンス管理重視かセキュリティ重視か)に応じて選択されます。国内外の政府調達要件でも両形式が許容されるケースがあります。
誤り③ 「SBOMを導入すればサプライチェーン攻撃を防止できる」→ 誤。SBOMは攻撃を直接防ぐものではなく、脆弱性が発覚した際の影響範囲の特定を迅速化する管理手法です。攻撃そのものの防止にはコード署名や依存関係の検証など別の対策が必要です。
関連用語
- サプライチェーン攻撃 — SBOMが対応を迅速化する対象となる攻撃そのもの
- CI/CDパイプラインのセキュリティ — SBOM生成を組み込む開発パイプライン
- セキュアな開発ライフサイクル(SDLC) — SBOM管理を組み込むべき開発工程全体の枠組み
重要キーワード
| 用語 | 説明 |
|---|---|
| SBOM | ソフトウェアに含まれる部品・依存関係を一覧化した部品表 |
| SPDX | Linux Foundation策定のSBOM標準。ライセンス管理に強み |
| CycloneDX | OWASP策定のSBOM標準。セキュリティ用途に特化 |
| VEX | コンポーネントの脆弱性が実際に悪用可能かを示す補完情報 |
| CVE | 個別の脆弱性を識別する共通識別子 |
| コピーレフト | ソースコード開示義務等を伴うOSSライセンスの一種 |