CLOVER🍀

That was when it all began.

SBOM(Software Bill of Materials)について少し調べてみる

これは、なにをしたくて書いたもの?

SBOM(Software Bill of Materials)という言葉をよく目にするようになってきましたが、ちゃんと調べたことがなかったので
1度見ておこうかなと思いまして。

ツールなどはまた今度使ってみようと思います。

SBOM(Software Bill of Materials)とは?

SBOM(Software Bill of Materials)については経済産業省が導入の手引を出しているので、こちらを見るのがよいのかなと思います。

「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引」を策定しました (METI/経済産業省)

サイバー攻撃への備えを!「SBOM」(ソフトウェア部品構成表)を活用してソフトウェアの脆弱性を管理する具体的手法についての改訂手引を策定しました (METI/経済産業省)

現在の手引は改訂されてver 2.0になっています。

ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver 2.0

「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver2.0」の概要について

経済産業省がなぜ手引を作っているかというと、セキュアなソフトウェアの流通を促進するためだそうです。

セキュアなソフトウェアの流通を促進するため、経済産業省では、ソフトウェアの部品構成表であるSBOM(Software Bill of Materials)の企業による活用を推進。

「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver2.0」の概要について

ソフトウェアサプライチェーンが複雑化し、オープンソースソフトウェアの利用が一般化する中で、ソフトウェアにおける脆弱性管理やライセンス管理の重要性が高まっている。ソフトウェア管理の一手法として、Software Bill of Materials(SBOM:エスボム)を用いた管理手法が注目を集めている。
⚫ 複数の産業分野における実証を通じ、SBOM活用の効果が確認できた。一方、SBOM導入・活用に際しては様々な課題(例:脆弱性管理の効率化、分野や用途に応じたSBOMの適切な範囲、ソフトウェアの調達者と供給者の立場間の取り決め)が存在することが明らかとなった。
⚫ 本手引では、SBOMに関する「基本的な情報」や「誤解と事実」を提供し、企業のSBOM導入を支援するために、SBOM導入に向けた主な実施事項及び認識しておくべきポイントを示す。(ver1.0)
⚫ 加えて、ソフトウェアの脆弱性を管理する一連プロセスにおいてSBOMを効果的に活用するための具体的な手順と考え方、SBOM導入の効果及びコストを勘案してSBOMを導入することが妥当な範囲を検討するためのフレームワーク、ソフトウェアの受発注において、調達者と供給者の間でSBOMに関して契約に規定すべき事項(要求事項、責任、コスト負担、権利等)について参考例を示す。(ver2.0)

「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver2.0」の概要について

ではSBOMとはなにかというと、ソフトウェアを構成するコンポーネント(依存関係も含む)の情報を含めた機械処理可能なフォーマットで
リスト化されたものだそうです。

SBOM とは、ソフトウェアコンポーネントやそれらの依存関係の情報も含めた機械処理可能な一覧リストである。SBOM には、ソフトウェアに含まれるコンポーネントの名称やバージョン情報、コンポーネントの開発者等の情報が含まれ、OSS だけではなくプロプライエタリソフトウェアに関する情報も含めることができる。また、SBOM をソフトウェアサプライチェーンの上流から下流に向かって組織を越えて相互共有することで、ソフトウェアサプライチェーンの透明性を高めることが期待されており、特に、コンポーネント脆弱性管理の課題に対する一つの解決策として期待されている。

SBOMには以下の3つのフォーマットがあるようです。

  • SPDX(Software Package Data Exchange)
    • Linux Foundation傘下のプロジェクトで開発されたSBOMフォーマット
    • コンポーネントやライセンス、コピーライト等の情報を含む
    • ライセンスコンプライアンスに関する情報を効果的に扱うことを目的に開発された
    • ISO/IEC5962:2021として標準化されている(2021年)
  • CycloneDX
    • OWASPコミュニティのプロジェクトで開発された、セキュリティに特化したSBOMフォーマット
    • コンポーネントやライセンス、コピーライト等の情報を含む
    • セキュリティに特化しており、「Vulnerabilities」が含まれSBOMに含まれるサードパーティーソフトウェアやOSSに存在する既知の脆弱性やその悪用可能性を記述できるフォーマットになっている
  • SWIDタグ(Software Identification タグ)
    • 組織が管理対象とするデバイスにインストールされたソフトウェアを追跡することを目的として開発された
    • 2012年にISOで定義され、2015年にISO/IEC 19770:2015として更新された
    • ソフトウェアライフサイクルに沿ったソフトウェアのインストールプロセスの一環として、デバイスにソフトウェアがインストールされるとタグと呼ばれるインストールされたソフトウェアの情報がデバイスに付与され、アンインストールされるとタグが削除される

「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引ver2.0」の概要について

基本的には、SPDXかCycloneDXのどちらかを使うことになりそうですね。

参考)

SBOMとは?必要性・導入メリットを解説 | LAC WATCH

SBOM(Software Bill of Materials)とは(前編)~ SBOM の基礎知識から詳しく解説 ~|BLOG| サイバートラスト

SPDX(Software Package Data Exchange)

SPDX(Software Package Data Exchange)のWebサイトはこちら。

SPDX – Linux Foundation Projects Site

概要。

Overview – SPDX

SPDXに関するツール。

SPDX Tools – SPDX

OWASP CycloneDX(ECMA-424)

Webサイト。

CycloneDX Bill of Materials Standard | CycloneDX

概要。

Software Bill of Materials (SBOM) | CycloneDX

CycloneDXに関するツール。

CycloneDX Capabilities | CycloneDX

OWASP側のページ。

OWASP CycloneDX (ECMA-424) | OWASP Foundation

GitHubにorganizationがあり、こちらでもツールが提供されています。

CycloneDX SBOM Standard · GitHub

おわりに

SBOM(Software Bill of Materials)について少し調べてみました。

今までざっくりとしか見てこなかったので、フォーマットや目的などを知れて良かったのと、ちゃんとSBOMに向き合う場合は
経済産業省の導入の手引を読むのがよいのかなと思いました。

またSPDXもCycloneDXもツールが大量にあるので、さてどれを使ったらいいのか…という感じですね。

近いうちに、CycloneDXをまずは使ってみようかなと思います。