公開日
SBOMに脆弱性情報を追加するメリット・デメリットは?GitHubでの実験結果も解説

ソフトウェアの脆弱性対策は、現代のシステム開発において避けて通れない課題です。ソフトウェアの構成要素を一覧化した「SBOM(ソフトウェア部品表)」だけでは、脆弱性の有無を把握することはできません。
本記事では、Fucciらによる論文「Augmenting Software Bills of Materials with Software Vulnerability Description: A Preliminary Study on GitHub」(2025年)に基づき、SBOMに脆弱性情報を追加する試みの詳細とその結果、そして今後の展望について解説します。
そもそもSBOMって何?何がわかるの?
食品成分表のようなもの?SBOMの役割
SBOM(Software Bill of Materials)とは、ソフトウェアの構成要素を一覧化したリストのことです。食品の成分表示のように、ソフトウェアに含まれるライブラリ、モジュール、コンポーネント、およびそれらのバージョン、依存関係、ライセンス情報などを詳細に記述します。
SBOMで利用ライブラリやバージョンが丸わかり!
SBOMを利用することで、ソフトウェアがどのような構成要素から成り立っているのか、一目で把握できます。これにより、例えば、特定の脆弱性を持つライブラリが使われているかどうかを、迅速に確認できます。
ソフトウェア構成分析(SCA)との関係とは?
SBOMは、ソフトウェア構成分析(SCA)ツールと連携することで、その真価を発揮します。SCAツールは、SBOMに記載された情報を基に、脆弱性データベース(CVEなど)と照合し、潜在的な脆弱性を特定します。
CycloneDXとSPDX:主要フォーマットの違い
SBOMの主要な標準フォーマットとしては、CycloneDXとSPDXの2つがあります。
- CycloneDX: OWASP(Open Web Application Security Project)が推進するフォーマットで、脆弱性管理に重点を置いています。
- SPDX: Linux Foundationが推進するフォーマットで、ライセンスコンプライアンスに重点を置いています。
どちらのフォーマットも、SBOMの情報をXMLやJSONなどの形式で記述します。
Soeiroらの調査(2025年)によると、公開されているSBOMのうち、CycloneDX形式が74.2%と最も多く利用されており、次いでSPDX-JSON形式(12.0%)となっています。
VEXとCVE:脆弱性情報の記述方法
脆弱性情報は、通常、CVE(Common Vulnerabilities and Exposures)という識別子で管理されます。CVEは、発見された脆弱性ごとに一意の番号を割り当て、脆弱性の内容や影響範囲などの情報を公開します。
VEX(Vulnerability Exploitability eXchange)は、CVEで識別される脆弱性が、特定の製品(ソフトウェア)に影響を与えるかどうかを示すための情報です。VEXを利用することで、SBOMに記載されたソフトウェアが、特定の脆弱性の影響を受けるのか、受けないのかを、より詳細に把握できます。
SBOMだけじゃダメ?脆弱性情報はどうやって知る?
SBOMを見ても脆弱性の有無はわからない
SBOMは、あくまでソフトウェアの構成要素を一覧化したものです。SBOM自体には、各コンポーネントに脆弱性が存在するかどうかの情報は含まれていません。
CVEなどの脆弱性データベースとの連携が必須
SBOMに記載されたコンポーネントに脆弱性があるかどうかを確認するためには、CVEなどの脆弱性データベースと連携する必要があります。
脆弱性管理の現状:手動確認は大変…
従来、脆弱性情報の確認は、手作業で行われることが多く、時間と労力がかかるだけでなく、見落としのリスクもありました。SBOMとSCAツール、そして脆弱性データベースを連携させることで、このプロセスを自動化し、効率的かつ確実な脆弱性管理を実現できます。
GitHubで実験!SBOMに脆弱性情報を追加してみた
目的:開発者は脆弱性情報を受け入れる?
研究チームは、GitHub上のオープンソースプロジェクトのSBOMに脆弱性情報を追加し、その情報が開発者にどのように受け入れられるかを調査しました。
著者らは、以下の手順で調査を実施しました。
- GitHubからSBOMを含むプロジェクトを検索。
- osv-scanner を使用して、SBOMに記載された依存関係に脆弱性があるかどうかをスキャン。
- 脆弱性が発見された場合、 vexctl を使用して、VEXフォーマットで脆弱性情報を記述したファイルを作成。
- 作成したVEXファイルをプロジェクトにプルリクエストとして送信。
- 同時に、プロジェクトのメンテナー(管理者)に対して、SBOMへの脆弱性情報追加に関するアンケートを実施。
実験結果:開発者の反応は?
プルリクエストの受諾率は?
著者らが送信したプルリクエスト40件の内訳は
- 承認(マージ) 2件
- 未承認のまま放置 28件
- 却下(リジェクト) 10件
という結果になりました。
脆弱性情報の追加は役に立つ?アンケート結果
アンケートでは、SBOMへの脆弱性情報追加について、肯定的な意見と否定的な意見の両方が見られました(回答数5)。
- 肯定的な意見:
- 脆弱性の早期発見に役立つ
- セキュリティ意識の向上につながる
- 透明性が高まる
- 否定的な意見:
- 継続的な更新が大変
- 誤検知(実際には影響がない脆弱性を警告すること)が多い
- 既存のツールで十分
アンケートで肯定的な意見が多かった一方、プルリクエストの受諾率が低かったのは、脆弱性情報の有用性は認めつつも、運用面での課題が大きいことが原因と考えられます。
結局、SBOMに脆弱性情報を追加すべき?
メリット:脆弱性発見が早く、対応も迅速に!
SBOMに脆弱性情報を追加することの最大のメリットは、脆弱性の早期発見と迅速な対応が可能になることです。これにより、脆弱性を悪用した攻撃を受けるリスクを低減できます。また、ソフトウェアの構成要素が明確になることで、セキュリティに関する透明性が向上します。
デメリット:更新が大変、誤検知も…
一方、SBOMに脆弱性情報を追加することには、デメリットもあります。脆弱性情報は日々更新されるため、SBOMも継続的に更新し続ける必要があります。また、脆弱性スキャンツールは、誤検知(実際には影響がない脆弱性を警告すること)を起こす可能性もあります。
「自動化」と「標準化」が普及のカギ
SBOMの脆弱性情報管理を成功させるためには、「自動化」と「標準化」が不可欠です。
- 自動化: SBOMの作成、脆弱性スキャン、VEXファイルの生成などを自動化するツールを導入することで、手作業による負担を軽減し、効率的な運用を実現できます。
- 標準化: SBOMのフォーマット(CycloneDX, SPDXなど)や、脆弱性情報の記述方法(VEX, CVEなど)を標準化することで、異なるツール間での相互運用性を高め、情報共有を円滑にすることができます。
今後の課題:ツール開発と開発プロセスへの統合
今後の課題としては、以下のような点が挙げられます。
- SBOMの自動生成・更新ツールの開発と改善
- 脆弱性スキャンツールの精度向上(誤検知の低減)
- CI/CDパイプライン(開発プロセス)へのSBOM管理の統合
- SBOMに関する教育・啓発活動
まとめ
SBOMへの脆弱性情報の追加は、セキュリティ向上に有効な手段ですが、運用上の課題も存在します。Fucciらの調査結果からも、開発者の間では、有用性は認めつつも、自動化や標準化の必要性が強く認識されていることがわかりました。
SBOMの活用は、今後ますます重要になると考えられます。自動化ツールの導入や、開発プロセスへの統合などを通じて、より効果的な脆弱性管理を実現していくことが求められます。
Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!
参考資料: