2024.05.17

SBOMとは?基礎からわかる構成要素と今注目される背景

執筆:H.I / 原書執筆:T.H / 発表:S.T (IT事業部門)

ベガシステムでは、毎月技術勉強会を開催し、最新技術や業界動向について継続的に学ぶ取り組みを行っています。

本記事では、その勉強会で扱ったテーマの一つである SBOM(Software Bill of Materials) について、「SBOMとは何か」「なぜ今注目されているのか」といった基礎的な内容を中心に分かりやすく整理しています。

ソフトウェア開発やセキュリティに関心のある方に向けて、SBOMの全体像をつかめる内容となっています。

1. はじめに:パッケージマネージャーと依存関係

SBOMの話に入る前に、前提となる考え方として、パッケージマネージャーについて簡単に整理します。

パッケージマネージャーとは、パッケージを管理するためのソフトウェアやシステムのことです。パッケージ間の依存関係を管理しているため、インストールやアップグレードの際に、必要な依存関係を自動的に解決できます。

パッケージ

一つのソフトウェアを構成する実行プログラムやソースコード、設定ファイル、データファイル、ドキュメント、依存関係などを含めた一連のファイル群です。

依存関係

パッケージを正しく動作させるために、別のパッケージが前提として必要になることを指します。パッケージマネージャーを利用することで、これらの依存関係を意識せずに管理できます。

2. SBOMとは?ソフトウェアの「部品表」が必要な理由

SBOM(Software Bill of Materials)とは、ソフトウェアを構成する部品情報を体系的に管理するための一覧表です。

使用しているモジュールやライブラリをはじめ、それらに付随する開発元やライセンス、バージョン情報などを整理し、全体像を確認できるようにします。これにより、ソフトウェアの構成を後から振り返ったり、変更点を把握することが容易になります。

3. SBOMの構成要素

最小要素は、大きく分けて「データフィールド」「自動化サポート」「実践とプロセス」の3つで構成されています。中でも「データフィールド」はSBOMの中核となる要素であり、ソフトウェア構成を共通の形式で扱うための基本情報となります。

主なSBOMの要素としては以下です。

主な要素

  • 開発者・開発元
  • ライセンス
  • バージョン
  • ソフトウェア識別子
  • セキュリティ
  • OSS構成要素
  • ライブラリ
  • 依存関係

4. SBOMの共通フォーマット

SBOMには、情報を共通の形式で効率的に管理するためのフォーマットが存在します。

SPDX

SPDXは、SBOMに記載される情報の共有や利用方法を標準化する目的で作られたフォーマットです。

SWIDタグ

SWIDタグは、ソフトウェアの構成要素を識別するために標準化されたフォーマットです。

  • Corpus Tags:プレインストールソフトウェアを識別・説明するためのタグ
  • Primary Tags:インストール後の製品を識別・説明するためのタグ
  • Patch Tags:パッチを識別・説明するためのタグ
  • Supplemental Tags:ライセンスキーや連絡先などの関連情報を提供するためのタグ

Cyclone DX

Cyclone DXは、比較的軽量なSBOMフォーマットです。アプリケーションのセキュリティ背景や、サプライチェーンのコンポーネント分析を目的として設計されています。

5. SBOM作成の理想と現実

理想:サプライヤー間での円滑な情報共有

理想的には、ソフトウェアを構成する各コンポーネントについて、サプライヤーごとにSBOMが整備され、それらをベンダー側で集約できる状態が望ましいとされています。

しかし実際には、SBOMを作成しているサプライヤーはまだ少なく、すべてのコンポーネントのSBOMを取得することは非常に困難です。

現実:SCAツールを用いた現場での構成分析

そのため現場では、ベンダーがSCA(ソフトウェア構成分析)ツールを使用し、ソフトウェア全体をスキャンしてSBOMを作成するケースが一般的です。作成されたSBOMは、開発エンジニアや企業などのユーザーが、特定のソフトウェアに脆弱性が含まれていないかを確認するために活用されます。

6. なぜ今、SBOMなのか?(Log4j事件から学ぶ教訓)

Log4J事件

Log4Jとは、Javaで開発されたオープンソースのログ記録ライブラリです。非常に多くのアプリケーションで、ログ管理の標準的な仕組みとして広く利用されてきました。

しかし、2021年12月に、リモートから任意のコードを実行できてしまう深刻な脆弱性(CVE-2021-44228、通称「Log4Shell」)が発見されました。

このLog4Jは世界中で利用されていたため、多くの組織が迅速な対応を迫られることとなりました。その際、Apacheソフトウェア財団は修正版を公開し、セキュリティ専門家からも対応ガイドラインが提示されましたが、現場では大きな混乱が生じました。なぜなら、自分たちが利用しているソフトウェアにLog4Jが含まれているかどうかを、すぐに判別できないケースが続出したからです。

このように、ソフトウェアの構成情報を把握できていないことが、セキュリティ対応における致命的なボトルネックとなりました。

7. 世界的な動き

SBOMは世界的にも導入が進められています。

  • 2021年:米国大統領令においてSBOMが言及され、サイバーセキュリティの重要性が強調されました
  • 2023年:Quadにおいて、ソフトウェアセキュリティの共同原則としてSBOM利用が明記されました
  • 2023年:日本でも、経済産業省がSBOM導入に関する手引きを公開しました
こうした世界的な動向を踏まえると、SBOMは今後ますます、ソフトウェアの安全性や透明性を支える基盤の一つになると考えられます。

8. まとめ

SBOM導入による運用の変化

SBOMを導入することで、従来の手作業による管理から、自動化されたリアルタイムな脆弱性管理へと移行できます。

  • SBOMが整備されていない場合

    • 影響範囲の特定に時間がかかり、対応が後手に回りやすい

    • 脆弱性を含んだまま運用してしまうリスクが残る

    • 構成情報を手作業で管理する必要があり、負荷が大きい

  • SBOMが整備されている場合

    • ツールを用いて脆弱性をリアルタイムで検出できる

    • 問題発覚から対応までの時間を短縮できる

    • 脆弱性の残留リスクを低減できる

    • 構成情報を自動的に管理でき、運用コストを抑えやすい

導入における留意点と今後の展望

SBOMは非常に有効な手段ですが、運用にあたっては以下の点に注意が必要です。

  • 導入工数やコスト:ツールの費用や学習コストが発生するほか、サプライチェーンが大規模なほど運用設計が複雑になります。
  • 管理範囲の指標:すべての部品を100%管理することは現実的でない場合もあり、適切な管理範囲の設定が求められます。
  • ツールの精度:ツールによって性能にばらつきがあるため、最終的な目視確認が必要になるケースもあります。

このように、運用面の注意点はいくつか存在しますが、世界的な標準化の流れもあり、SBOMはソフトウェアの安全性と透明性を支える重要な基盤へと発展していく見込みです。

参考リンク

SBOMとは?セキュリティ・脆弱性対策としての義務化の動きと管理運用フォーマットの具体例
https://staff.persol-xtech.co.jp/hatalabo/mono_engineer/629.html
 
【初心者向け】SBOM(Software Bill of Materials)を解説
https://staff.persol-xtech.co.jp/corporate/security/article.html?id=225

技術ブログ「VEGA Scope」で他の記事も読む

私たちの技術ブログでは、今回のSBOMのようなセキュリティの話から、最新の開発手法まで幅広く発信しています。エンジニアの知見を詰め込んだ記事を多数掲載していますので、併せてご覧ください。

最新の技術記事一覧はこちら