ロード・トゥ・ザ・ホワイトハッカー

ホワイトハッカーはじめました

SBOM

SBOMについて

最近、SBOM(えすぼむ)という言葉をよく見る。

Software Bill of Materialsの頭文字をとっている。

BOM=Bill of Materialsは、製造現場で部品表とか呼ばれて、製造物はどんな部品から構成されているかを示すもの。

それをソフトウェアの世界でやる場合、ソフトウェアがどのようなモジュールで構成されているのかを明らかにするものになる。

log4j脆弱性が見つかった際、自分自身が明示的にlog4jを利用していれば利用の有無は分かる。しかし、他のオープンソースlog4jを組み込んでいる場合、それを見つけ出すのは大変になる。これを推移的依存、と呼ぶらしい。

推移的依存では、脆弱性への対応に時間が掛かったり、対応が不十分になりやすい。

ソフトウェアで、どんなライブリの、どのバージョンを使用しているか一目で分かるようにするのがSBOMの役割。

最近の動向

アメリカでは、大統領令で政府機関と取引する企業にSBOMの提出を義務付けている。

www.jetro.go.jp

 

日本では、経済産業省で検討されているようです。

https://www.meti.go.jp/shingikai/mono_info_service/sangyo_cyber/wg_seido/wg_bunyaodan/software/pdf/006_03_00.pdf

 

マイクロソフトからも、SBOMを出力するツールが無償提供されています。

devblogs.microsoft.com

Dockerも、docker sbom コマンドでコンテナのSBOMを出力できるようになったようです。

 

SBOMの詳細

一口にSBOMと言っても、4パターン程あるようです。

・CycloneDX・・・OWASP
・SPDX・・・Linux fundation
GitHub SBOM・・・GitHub
・SWID

出力されたSBOMを使用して、脆弱性の検知をする流れのようです。

 

OWASPにDependency Trackというプロジェクトがあり、これにSBOMを食わせると脆弱性などを表示してくれます。

dependencytrack.org

 

今後、SBOMによるソフトウェアの構成の透明化は促進されると思われます。

ただ、べてのコンポーネントをもれなく抽出してSBOMに出力するには、課題もあるようで、開発者の制約にならないのか、気になるところです。