ソフトウェア部品表(SBOM)とは
A ソフトウェア部品表(SBOM)とは、ソフトウェアプロジェクトで使用されるコンポーネントと依存関係の詳細な一覧を記載した文書です。また、ソフトウェア内で使用されるすべてのライブラリ、フレームワーク、およびそれぞれのバージョンも記載されます。オープンソースソフトウェア(OSS)において、SBOMは透明性、セキュリティ、コンプライアンスの確保に重要な役割を果たす可能性があります。
組織がSBOMを活用すべき理由
SBOMを使用すると、特にOSSにおいて、組織はコンポーネントや依存関係を可視化し、リスク管理を改善するなど、さまざまなメリットを得られます。以下では、これらのメリットについて説明します。
コンポーネントの可視化
OSSには、多くの場合、さまざまなサードパーティ製コンポーネントや依存関係が含まれています。SBOMにより、開発者とユーザーは、ソフトウェアで使用されているすべてのコンポーネントを明確に把握できます。これには、オープンソースのライブラリやフレームワーク、およびそれぞれのバージョンが含まれます。こうした可視性は、ソフトウェアの構成の把握、潜在的な脆弱性の特定、オープンソースコンポーネントに関連するライセンス上の義務の追跡に役立ちます。
脆弱性管理
他のソフトウェアと同様に、OSSにもセキュリティ脆弱性が存在する可能性があります。SBOMを使用することで、組織はオープンソースコンポーネントのバージョンを追跡し、それらのバージョンに関連する既知の脆弱性を把握できます。これにより、パッチやアップデートを速やかに適用してセキュリティ上の懸念事項を軽減し、報告するなど、プロアクティブな脆弱性管理が可能になります(RFC8615を参照)。最新のSBOMを維持することで、組織は脆弱性の影響を評価し、ソフトウェアを保護するための適切な対策を講じることができます。
サプライチェーンセキュリティ
近年、ソフトウェアサプライチェーンのセキュリティが大きな懸念事項となっています。SBOMは、ソフトウェアで使用されているコンポーネントとその出所を可視化することで、サプライチェーンセキュリティの強化に貢献します。また、組織は、利用しているコンポーネントの信頼性とセキュリティ態勢を評価できます。SBOMを活用することで、侵害されたコンポーネントや悪意のあるコンポーネントに関連するリスクを特定して軽減し、ソフトウェアサプライチェーン攻撃の可能性を低減できます。
コラボレーションとパッチ管理
OSSは、コラボレーションとコミュニティへの参加を促進します。SBOMは、さまざまな貢献者やステークホルダーがソフトウェアの構成要素について共通認識を持てるようにすることで、効果的なコラボレーションを促します。また、更新や修正が必要な構成要素を明確に特定し、パッチ管理作業の調整を支援します。すべての参加者が共有SBOMを参照してセキュリティ脆弱性やその他の問題に対処できるため、オープンソースコミュニティ内のコラボレーションがより効率的になります。
規制遵守
一部の業界では、規制の枠組みにより、組織がアプリケーションやシステムで使用するソフトウェアコンポーネントについて、透明性と管理体制を実証することが求められます。SBOMは、こうしたコンプライアンス要件を満たすために必要な文書を提供します。これにより、特にOSSのセキュリティとライセンスに関して、デューデリジェンス、トレーサビリティ、関連規制への準拠を実証できます。
ライセンスコンプライアンス
OSSには通常、ソフトウェアの使用、変更、配布方法を規定する特定のライセンスが適用されます。SBOMは、すべてのオープンソースコンポーネントと、それぞれに対応するライセンスの包括的な概要を提供します。これにより、組織は使用しているOSSのライセンス条件への準拠を確保しやすくなります。ライセンス上の義務を把握することで、法的問題やコンプライアンス上の問題を回避しながら、ソフトウェアの配布と使用について十分な情報に基づいて判断できます。
規制の厳しい業界におけるSBOM要件
銀行や医療など、規制の厳しい業界の複数の政府機関や組織では、SBOMの利用を推奨しているほか、組織内またはサプライヤーに対してSBOMの利用を要件とすることを検討しています。
SBOMを利用している業界の例
- 公共部門 – 米国、欧州連合、英国、日本をはじめ、多くの国がSBOMを活用し、その使用を規制または推奨しています。
- テクノロジー – Google、Microsoft、IBMなどの大手テクノロジー企業は、自社のソフトウェア開発プロセスにSBOMを導入し、Software Package Data Exchange(SPDX)やOWASPなどのプロジェクトへの貢献や、SBOM生成ツールのオープンソース化を通じて、この分野をリードしています。
- 自動車業界 – FordやGeneral Motorsなどの大手自動車メーカー数社は、SBOMを導入するとともに、自動車システムで使用されるコンポーネントやソフトウェアのSBOMを提供するようサプライヤーに働きかけています。
- 医療 – 米国市場の医療機器メーカーは現在、2022年の食品医薬品局(FDA)の規制に準拠するためにSBOMを使用しています。
SBOMチームの構成メンバー
SBOMの構築には、ソフトウェアサプライチェーン全体にわたるさまざまなステークホルダーの関与と連携が必要です。こうしたステークホルダーの参加と相互連携を促すことで、組織はソフトウェアコンポーネントに関する必要な情報を網羅し、サプライチェーンのセキュリティを強化するとともに、リスク管理やコンプライアンスへの取り組みを円滑にする、堅牢で信頼性の高いSBOMを構築できます。
このプロセスに関与すべき主な担当者や役割は次のとおりです。
- 開発チーム – ソフトウェアエンジニアや開発者を含む開発チームは、プロジェクトで使用するソフトウェアコンポーネントの特定と文書化において重要な役割を担います。また、使用するソフトウェアコンポーネントの依存関係、バージョン、入手元に関する正確な情報を提供する責任があります。
- プロジェクトマネージャー – プロジェクトマネージャーは、ソフトウェア開発プロセス全体を監督し、SBOMの作成に関与する必要があります。開発チームと連携し、必要な情報が収集され、SBOMに記録されるよう調整できます。また、SBOM要件への準拠を確保し、SBOMをプロジェクトのワークフローに組み込むうえでも重要な役割を担います。
- セキュリティチーム – セキュリティアナリストや専門家を含むセキュリティチームは、ソフトウェアコンポーネントに関連するセキュリティリスクの評価と管理において重要な役割を果たします。SBOMに記載されたコンポーネントの脆弱性や既知のセキュリティ上の問題について、知見を提供できます。その専門知識は、潜在的なセキュリティリスクの特定と、修復作業の優先順位付けに役立ちます。
- 調達チーム – 調達チーム、またはソフトウェアコンポーネントの調達担当者は、SBOMの作成において重要な役割を果たします。外部ソースから取得したコンポーネントの出所やライセンスの詳細に関する情報を提供できます。調達チームと連携することで、サプライチェーン内のソフトウェアコンポーネントを正確に追跡し、検証できます。
- 運用チーム – 運用チームは、多くの場合、ソフトウェアのデプロイと保守を担当します。SBOMの作成時には、ランタイム環境、デプロイ構成、運用フェーズで追加されたソフトウェアコンポーネントに関する有用な情報を提供できます。運用チームの知見により、包括的かつ最新のSBOMを維持できます。
- 法務およびコンプライアンスの専門家 – 法務およびコンプライアンスの専門家は、特にライセンスや知的財産に関する事項を考慮してSBOMを作成するうえで、不可欠なステークホルダーです。ライセンスコンプライアンスに関する助言を提供し、SBOMがソフトウェアコンポーネントに関連する法的要件や制限に準拠するよう支援します。
- 外部ベンダーおよびパートナー – ソフトウェアプロジェクトに外部ベンダーやパートナーのコンポーネントまたはサービスが組み込まれている場合、SBOMプロセスへの参加を求めることが不可欠です。外部ベンダーやパートナーは、依存関係、バージョン、脆弱性など、自社の提供物に関する必要な情報を提供できます。外部の関係者と連携することで、包括的かつ正確なSBOMの作成につながります。
SBOMの作成方法
組織は、ソフトウェアコンポーネント、その出所、依存関係、関連するセキュリティ情報を包括的に把握できるSBOMの構築を目指す必要があります。これにより、ソフトウェアサプライチェーンのリスクをより適切に管理し、ソフトウェア全体のセキュリティを強化できます。
SBOMを作成する際の主な手順は次のとおりです。
- コンポーネントの特定とインベントリ作成:まず、プロプライエタリコンポーネントとオープンソースコンポーネントの両方を含め、プロジェクトで使用するすべてのソフトウェアコンポーネントを特定します。各コンポーネントの名前、バージョン、入手元などの情報を含むインベントリリストを作成します。
- コンポーネントの出所を特定する:各コンポーネントについて、プロプライエタリ、オープンソース、またはその両方の組み合わせのいずれであるかを確認します。この手順は、コンポーネントごとに関連する潜在的なセキュリティ脆弱性を評価するのに役立ちます。
- 依存関係を文書化する:使用しているライブラリやフレームワークを含め、コンポーネント間の依存関係を文書化します。これにより、各コンポーネント間の関係を把握し、すべての依存関係を漏れなく確認できます。
- メタデータの収集:ライセンス情報、既知の脆弱性、リリース日など、各コンポーネントのメタデータを収集します。この情報は、ソフトウェアコンポーネントのセキュリティとコンプライアンスに関する状況を追跡するうえで不可欠です。
- SBOM生成の自動化:プロセスを効率化するため、専用ツールを使用したSBOM生成の自動化を検討してください。これらのツールは、ソフトウェアプロジェクトをスキャンしてコンポーネントを特定し、必要な情報を自動的に収集できます。
- SBOMを最新の状態に保つ:ソフトウェアプロジェクトの進展に伴い、SBOMを最新の状態に保つことが不可欠です。変更が発生した際は、インベントリ、コンポーネントの出所、依存関係、メタデータを定期的に確認し、更新してください。
- SBOMを共有して活用する:SBOMを、ベンダー、顧客、監査担当者など、ソフトウェアサプライチェーンに関係するステークホルダーと共有します。これにより、透明性が向上し、より適切なリスク評価が可能になるほか、脆弱性の特定と対処にも役立ちます。
- 脆弱性の監視と管理:SBOMに含まれるコンポーネントに関連する新たな脆弱性やセキュリティアップデートを継続的に監視します。最新のセキュリティパッチに関する情報を常に把握し、脆弱性に速やかに対処することで、ソフトウェアのセキュリティを維持します。
SBOMが期待どおりの成果をもたらさない7つの要因
SBOMが機能しなかったり、本来の目的を十分に果たせなかったりする原因はいくつかあります。こうした課題に対処し、SBOMの正確性、完全性、最新性を確保することで、機能不全のリスク軽減につながります。
以下に、SBOM構築のベストプラクティスと表裏一体となる、一般的な失敗原因を示します。
- 不完全または不正確なインベントリ:SBOMにプロジェクトで使用されるすべてのソフトウェアコンポーネントが正確に記録されていない場合や、情報が不完全な場合、ソフトウェアサプライチェーンの把握に死角や漏れが生じる可能性があります。インベントリに欠落や誤りがあると、脆弱性や依存関係を見落とし、SBOMの有効性が損なわれるおそれがあります。
- コンポーネントの可視性不足:SBOMでソフトウェアコンポーネントの提供元、バージョン、依存関係を明確に把握できない場合、関連するリスクを効果的に評価・管理することが困難になります。包括的な可視性がなければ、脆弱性の追跡、パッチ更新の特定、ライセンス要件への準拠の確保が難しくなります。
- 手作業による旧式のプロセス:SBOMの作成と維持を手作業に頼ると、非効率やエラーにつながる可能性があります。ソフトウェアプロジェクトの変更を反映するためにSBOMを定期的に更新しなければ、すぐに情報が古くなり、セキュリティおよびコンプライアンスのための信頼できる参照情報としての価値が失われます。
- メタデータとコンテキストの不足:SBOMには、ソフトウェアコンポーネントの一覧だけでなく、ライセンス情報、既知の脆弱性、リリース日などの関連メタデータも含める必要があります。こうした追加情報が欠落していたり不完全だったりすると、リスクを正確に評価し、十分な情報に基づいて意思決定を行うことが難しくなります。
- ステークホルダー間の連携不足:SBOMを効果的に活用するには、ソフトウェアサプライチェーンのステークホルダー間での連携と情報共有が不可欠です。協力が不十分であったり、SBOM情報の共有に消極的であったりすると、脆弱性を共同で特定して対処することが難しくなり、ソフトウェア全体のセキュリティが損なわれます。
- ツールと自動化の不足:SBOMを手作業で作成・保守すると、時間がかかり、ミスも発生しやすくなります。適切なツールと自動化がなければ、SBOMを効率的に生成、更新、管理することが難しくなります。また、自動化の不足により、新たな脆弱性や依存関係の特定が遅れる可能性もあります。
- 不十分な脆弱性監視:SBOMは、堅牢な脆弱性監視プロセスと組み合わせる必要があります。ソフトウェアコンポーネントに関連する新たな脆弱性やセキュリティアップデートを定期的に監視していない場合、潜在的なリスクを見落とし、既知の脆弱性にソフトウェアがさらされたままになる可能性があります。
まとめ
総じて、SBOMはOSSの複雑性を管理するうえで有用なツールです。オープンソースエコシステムにおける透明性、セキュリティ、コンプライアンス、コラボレーションの向上に役立ちます。ソフトウェアコンポーネント、そのバージョン、関連するライセンス情報の詳細な一覧を提供することで、組織が十分な情報に基づいて意思決定を行い、リスクを管理し、ソフトウェアプロジェクトの完全性とセキュリティを確保できるよう支援します。

