2021年末、Javaライブラリ「Log4j」に発見されたLog4Shell脆弱性は世界中のIT部門を震撼させました。被害の深刻さもさることながら、多くの情シスを最も困惑させたのは「自社のどのシステムがLog4jを使っているか、把握できていない」という現実でした。依存ライブラリの把握不足が、影響範囲の特定を何日も遅らせたのです。
その反省から世界的に注目を集めるようになったのが、SBOM(Software Bill of Materials:ソフトウェア部品表)です。この記事では、SBOMの基本概念から主要フォーマットの比較、具体的な脆弱性管理への活用手順、中小企業の情シスが今日から始められる第一歩まで、現場で使える情報を整理します。
SBOMとは?ソフトウェアの「成分表示ラベル」
食品には「原材料名」の表示が義務づけられています。アレルギーのある人が購入前に確認できるよう、何が含まれているかを明示する仕組みです。SBOMは、これと同じ発想をソフトウェアに適用したものです。
具体的には、あるソフトウェアを構成する要素——OSS(オープンソースソフトウェア)、外部ライブラリ、商用コンポーネント——のバージョン・ライセンス・依存関係を一覧化した文書を指します。記録する主な情報は以下のとおりです。
・コンポーネント名: 使用しているOSSや外部ライブラリの名称(例: log4j-core、openssl)
・バージョン: 使用中の具体的なバージョン番号(例: 2.14.1)
・サプライヤー: 開発元・提供元の組織名
・ライセンス: Apache License 2.0、MIT、GPLなどのライセンス種別
・ハッシュ値: 改ざん検知のためのチェックサム(SHA-256など)
・依存関係: コンポーネント間の依存ツリー(どのコンポーネントが何を必要とするか)
これらが一覧化されていれば、新たな脆弱性が公表されたときに「自社のシステムはどこに影響があるか」を数時間以内に調べられます。Log4Shellのような事態で慌てず対応するための基盤がSBOMです。
なぜ今SBOMが急浮上したのか
SBOMという概念自体は2010年代から存在していましたが、ここ数年で一気に実務レベルの重要語になりました。その背景を整理します。
1. Log4Shell(2021)が現実の痛みを見せた
Log4Shellはサプライチェーン攻撃の代表例です。Log4jを直接使っていなくても、利用しているフレームワークやミドルウェアがLog4jに依存していれば影響を受けます。「何を使っているか把握できていない」状態が脆弱性対応を数日以上遅延させました。SBOMがあれば影響範囲の特定を数時間以内に完了できたはずです。
2. 米国大統領令 EO 14028(2021)
バイデン政権は2021年5月に署名した大統領令で、連邦政府に納品するソフトウェアベンダーに対してSBOMの提供を義務づけました。米国市場にソフトウェアを提供する企業は事実上、SBOMの作成・管理能力が必須になったのです。
3. EU サイバーレジリエンス法(CRA)
EUのサイバーレジリエンス法は、デジタル要素を持つ製品のメーカーに対してSBOMの作成を求めています。IoT機器・産業用制御システム・ソフトウェアを欧州市場で販売する企業は、段階的な対応が必要です。
4. 国内でも大手調達基準に組み込まれ始めた
経済産業省は「OSSの利用に関するセキュリティ管理の手引き」でSBOMの活用を推奨しています。国内大手企業が調達先・取引先にSBOMの提出を求めるケースも増えており、中小企業もサプライチェーンの一員として無関心でいられない状況です。
SBOMの主要フォーマット──SPDXとCycloneDXを理解する
SBOMには共通の「様式」があります。乱立を避けるため業界標準フォーマットが整備されており、主要な2つを比較します。
| フォーマット | 管理団体 | 主な特徴 | 向いている用途 |
|---|---|---|---|
| SPDX | Linux Foundation(ISO/IEC 5962:2021) | ライセンスコンプライアンスに強い。国際標準規格として採用済み | OSS管理・法的コンプライアンス重視 |
| CycloneDX | OWASP | セキュリティ用途に特化。脆弱性データとの連携が容易。バージョンアップが速い | 脆弱性管理・CI/CD統合重視 |
セキュリティ目的で脆弱性管理に活用する場合はCycloneDXが扱いやすく、ライセンス管理・法的コンプライアンスを重視する場合はSPDXが適しています。主要なOSSツールはどちらのフォーマットも出力できるため、まずはどちらかで始めることをお勧めします。
SBOMを活用した具体的な脆弱性管理手順
SBOMは「作るだけ」では意味がありません。継続的に活用する仕組みを整えることが重要です。
1. SBOMを生成・収集する
自社でソフトウェアを開発・運用している場合、SBOMはツールで自動生成できます。代表的なOSSツールとコマンド例を紹介します。
# Syft(Anchore)でコンテナイメージのSBOMをSPDX形式で生成 syft my-app:latest -o spdx-json > sbom.spdx.json # Trivy でコンテナイメージのSBOMをCycloneDX形式で生成 trivy image --format cyclonedx --output sbom.cdx.json my-app:latest # Syft でローカルディレクトリのSBOMを生成 syft dir:./my-project -o cyclonedx-json > sbom.cdx.json
自社開発がない場合は、利用しているソフトウェアベンダーやSaaSプロバイダーにSBOMの提供を要求することが現実的な第一歩です。調達時の評価項目に「SBOM提供可否」を加えるだけでも、ベンダーのセキュリティ意識を測るフィルタになります。
2. 既知の脆弱性データベースと突き合わせる
SBOMが手元にあれば、そこに含まれるコンポーネントを脆弱性データベースと照合できます。CVSSスコアで優先度を判定し、高スコアのものから対応順序を決めることが基本的な進め方です。
・Grype(Anchore): SyftのSBOMファイルを直接読み込んで脆弱性スキャン。CLIで扱いやすい
・OWASP Dependency-Track: WebUIでSBOMを継続管理。CycloneDX/SPDX両対応
・Trivy: コンテナ・ファイルシステム・SBOMファイルすべてに対応するオールインワンツール
# GrypeでSBOMファイルから脆弱性スキャン grype sbom:sbom.spdx.json # 重大度Criticalのみ表示してCI/CDで失敗させる例(ビルドゲート) grype sbom:sbom.cdx.json --fail-on critical
3. パッチサイクルに組み込む
SBOMは一度作ったら終わりではありません。ソフトウェアが更新されるたびにSBOMも更新し、差分を管理する運用が必要です。パッチ管理のサイクルにSBOMの更新タイミングを組み込むことで、「気づいたら古いバージョンを使い続けていた」という状態を防げます。
CI/CDパイプラインでSBOM生成→脆弱性スキャン→アラートを自動化しておけば、新しい脆弱性が公開されたときに即座に影響を検知できます。人手でスキャンするより数十倍速い対応が可能になります。
中小企業でも今日からできること
「SBOMって、大企業やソフトウェア開発会社の話では?」と感じた方も多いかもしれません。確かに本格的な自動化には工数がかかります。しかし、中小企業の情シスでも取り組める現実的な入口があります。
・ベンダーにSBOMを要求する: 業務用パッケージソフト・SaaSを新規導入する際の評価項目に「SBOM提供可否」を加える。提供できないベンダーはセキュリティ対応力が低い可能性があります
・主要なOSSのバージョンを棚卸しする: WordPressのプラグイン・PHPバージョン・オンプレのミドルウェアを一覧化するだけでも、部分的なSBOMとして機能します
・JVN・NVDのアラートを活用する: 使用しているOSSの名前をJVN(Japan Vulnerability Notes)のRSSフィードやNVDのキーワードアラートに登録し、脆弱性情報を自動受信する仕組みを作る
・小さく始めるなら自社Webサーバーから: Webサーバー(Apache/nginx)・言語ランタイム(PHP/Python)・CMSのバージョンを書き出すだけでも立派な部分SBOMの第一歩です
Linuxサーバーのパッケージ管理やバージョン確認コマンドについては、姉妹サイトLinuxMaster.JPで詳しく解説しています。
よくある誤解と注意点
【誤解1】「SBOMがあれば安全」
SBOMは「何が含まれているかを把握するための道具」です。脆弱性を自動的に排除するものではありません。SBOMと脆弱性データベースの照合、発見した問題への対処——この一連のプロセスを継続して回して初めて価値を発揮します。作っただけで満足してはいけません。
【誤解2】「一度作れば終わり」
ソフトウェアの依存関係は、ライブラリのアップデートや機能追加のたびに変化します。SBOMは「生き物」です。CI/CDに組み込むか、定期的な再生成のスケジュールを定めておかなければ、SBOMはすぐに実態と乖離し、存在しないも同然になります。
【誤解3】「自社はソフトウェアを開発していないから関係ない」
SBOMは開発者だけのものではありません。購入・利用するパッケージソフトやSaaSのリスクも含め、「自社はどのソフトウェアコンポーネントに依存しているか」を把握することが目的です。調達・契約の観点からSBOMを要求する立場こそ、中小企業の情シスが取るべき現実的なアプローチです。
本記事のまとめ
| ポイント | 内容 |
|---|---|
| SBOMとは | ソフトウェアを構成するコンポーネント・バージョン・ライセンスを一覧化した文書(ソフトウェア部品表) |
| なぜ重要か | Log4Shellのような依存ライブラリ脆弱性の影響範囲を即座に特定できる。米国EO14028・EU CRAで規制化が進む |
| 主要フォーマット | SPDX(ライセンス管理重視・ISO/IEC 5962:2021標準)、CycloneDX(セキュリティ重視・OWASP管理) |
| 活用ツール | 生成: Syft・Trivy 照合: Grype・OWASP Dependency-Track |
| 中小企業の第一歩 | ベンダーへのSBOM要求・使用中OSSのバージョン棚卸し・JVN/NVDアラート設定 |
SBOMは「完璧に整備してから使う」ものではなく、「できるところから始める」ものです。自社Webサーバーのミドルウェアバージョンを書き出す小さな一歩が、次の脆弱性対応を何時間も速くするかもしれません。まず今日、使っているソフトウェアを一つ書き出してみましょう。
PR
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版(徳丸浩/SBクリエイティブ)
SBOMで検出した依存ライブラリの脆弱性が実際のシステムにどう影響するかを理解するための定番書。インジェクション・認証不備・XSSなど、コンポーネント評価の判断軸を現場目線で身に付けられます。
