WEB & SYSTEMS

SBOM(ソフトウェアの部品表)とは。発注者が知っておきたいこと

SBOMとは、ソフトウェアを構成する部品とその依存関係を、機械で読める形で一覧にしたものです。経済産業省の手引ver2.0をもとに、最小限の項目、形式、作成と運用の流れ、脆弱性への対応での使い方、発注のときの求め方を説明します。

Webとシステム開発(WEB & SYSTEMS)のコラム

この記事の要点

  • SBOM(Software Bill of Materials)とは、ソフトウェアに含まれる部品と、その依存関係を、機械で読める形で一覧にしたものです。
  • 新しい脆弱性が公表されたとき、SBOMがあれば、自社のどのシステムが影響を受けるかを早く調べられます。
  • 発注するときは、作る範囲、形式、渡す時期、更新の頻度、費用の負担を、契約の前に開発会社と決めておきます。

SBOM(エスボム。Software Bill of Materials)とは、ソフトウェアを構成する部品(コンポーネント)と、その依存関係を、機械で読める形で一覧にしたものです。新しい脆弱性が公表されたときに、自社のどのシステムがその部品を使っているかをすぐ調べられることが、分かりやすい役割の一つです。経済産業省は「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引」のver2.0を2024年8月29日に公表しています。用語としての短い説明は、用語集のSBOMにあります。

SBOMとは、何の一覧か

SBOMとは、ソフトウェアの「部品表」です。いまのソフトウェアは、自社で書いたプログラムだけでなく、多くのOSS(オープンソースソフトウェア)や市販の部品を組み合わせて作られています。その部品が、さらに別の部品を使っていることも珍しくありません。

経済産業省の手引ver2.0は、SBOMを、ソフトウェアのコンポーネントや依存関係の情報を含む、機械で処理できる一覧として説明しています。OSSだけでなく、市販の部品なども対象にでき、ソフトウェアのサプライチェーンの透明性を高めるためのものと位置づけています。

出典:ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引 ver2.0(経済産業省、2024年8月29日)

工場の製品の部品表と同じように、何が、どの版で入っているかが分かれば、問題のある部品が見つかったときに、使っている製品を早く特定できます。

SBOMには、何が書かれるか

SBOMには、部品ごとに、誰が作ったか、何という部品か、どの版か、ほかの部品とどうつながっているかが書かれます。手引ver2.0は、米国の電気通信情報庁(NTIA)が示した最小要素として、次のデータの項目を紹介しています。

項目内容
サプライヤー名部品を作った、または提供している者
コンポーネント名部品の名前
バージョン部品の版
その他の一意な識別子部品を見分けるための識別子
依存関係部品と部品のつながり
SBOMの作成者SBOMを作った者
タイムスタンプSBOMを作った日時

出典:ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引 ver2.0(経済産業省、2024年8月29日)

形式としては、手引ver2.0は、SPDX(Linux Foundation の傘下のプロジェクトが開発し、ISO/IEC 5962:2021 として国際標準化された形式)、CycloneDX(セキュリティに特化した形式を目標に、OWASP のコミュニティのプロジェクトが開発した形式)などを紹介しています。どちらを使うかは、使う道具と、SBOMを渡す相手の求めに合わせて決めることが多いです。

SBOMは、何に役立つか

SBOMは、主に脆弱性への対応と、ライセンスの管理に役立ちます。

  • 脆弱性への対応:部品に新しい脆弱性が公表されたとき、SBOMを検索すれば、影響を受けるシステムをすぐに洗い出せます。SBOMがないと、システムごとに担当者や開発会社に問い合わせることになり、調べるだけで日数がかかることがあります
  • ライセンスの管理:部品ごとのライセンスが分かるため、守るべき条件(表示の義務など)を見落としにくくなります。OSSのライセンスの考え方は、オープンソースのライセンスと、発注者が確かめることで扱っています
  • 開発の効率:部品の問題に早く気づけ、過去に使った部品の情報を次の開発の部品選びに使えます

手引ver2.0は、こうした脆弱性の管理、ライセンスの管理、開発の生産性の向上を、SBOMを導入するメリットとして挙げています。

脆弱性の情報の集め方と、急ぐものの見極め方は、脆弱性の情報を、どう集めて優先順位をつけるか。JVN・KEV・CVSSの使い方で説明しています。SBOMで「どこに使われているか」が分かり、脆弱性の情報で「どのくらい急ぐか」が分かる、という組み合わせで使います。

SBOMは、どう作り、どう使い続けるか

手引ver2.0は、SBOMの導入を、環境の構築と体制の確立、SBOMの作成と共有、SBOMの運用と管理の3つの段階で示しています。

  1. 環境の構築と体制の確立:どのソフトウェアを対象にするか、誰が作り、誰が使うかを決め、SBOMを作る道具を選んで使い方に慣れる
  2. SBOMの作成と共有:道具で部品を調べ、誤って拾ったものや漏れがないかを確かめてSBOMを作り、使う人や顧客に渡す
  3. SBOMの運用と管理:SBOMをもとに脆弱性とライセンスを管理し、ソフトウェアを更新したらSBOMも更新して保管する

出典:ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引 ver2.0(経済産業省、2024年8月29日)

道具は部品を自動で調べてくれますが、結果をそのまま信じず、人が確かめる段階を入れておくことが大切です。また、ソフトウェアを更新すると部品も変わるため、一度作って終わりにせず、リリースのたびに作り直す流れを開発の手順に組み込んでおくと、古いSBOMを見て判断を誤ることを防げます。

発注するとき、何を求めればよいか

開発を外部に頼むときは、SBOMを納品物に含めるかどうか、含めるならどのような形かを、契約の前に開発会社と決めておきます。手引ver2.0にも、契約で要件、責任、費用の分担を決めるための取引のモデルが示されています。

決めておきたいことの例です。

  • 範囲:自社で書いた部分だけか、使っている部品をすべて含むか。どのくらい深い依存関係まで書くか
  • 形式:SPDX か CycloneDX か、またはほかの形式か
  • 渡す時期:初めての納品のときだけか、修正や機能追加のたびに渡すか
  • 更新と保守:保守の契約の中で、SBOMの更新と、脆弱性が見つかったときの調査と報告をどう扱うか
  • 費用:作成と更新にかかる費用を、誰がどのように負担するか

すでに動いているシステムでSBOMがない場合は、いまの保守の会社に作成を頼むか、道具を使って自社で作るところから始めます。開発会社を替えるときにも、SBOMがあると、新しい会社が中身を把握する助けになります。システムの部品の一覧と脆弱性の管理は、サプライチェーンのセキュリティ。取引先を経由する攻撃への備えとも深く関わっています。

当社のご支援

アメリア・テクノロジーは、Webシステム開発やソリューション提供で、システムの開発と保守をお受けしています。SBOMを納品物に含めるかどうかや、更新の進め方も、ご依頼の際にご相談ください。すでに動いているシステムの脆弱性の診断と、見つかった問題を直す順番の決め方は、セキュリティ診断と対策でご支援しています。PHPで動くシステムについては、無料のPHPバージョン診断で、サイトのPHPの版を確かめられます。

  • SBOM
  • 脆弱性
  • オープンソース
  • サプライチェーン

この記事に出てくる用語

この記事を書いた人

石田 誠 グループCTO

インターネットの黎明期から、ホスティング事業の立ち上げや、インフラ・セキュリティのプロジェクトに携わってきました。現在は、AWS・Azure へのクラウド移行の支援と、業務アプリケーションの要件定義から実装までを担っています。

このコラムは一般的な情報の提供を目的としたもので、個別の状況への助言ではありません。製品・サービスの名前と内容は、記事の更新日の時点のものです。

あわせて読みたい

Webとシステム開発のコラムを見る コラムの一覧に戻る

無料で相談する無料の診断