マイクロソフト、ビルド時にソフトウェアの部品表(SBOM)を自動生成する「SBOM Tool」、オープンソースで公開

マイクロソフトは、ビルド時にそのソフトウェアがどのようなソフトウェア部品から構成されているかを示すデータ「SBOM」を生成してくれるツール「SBOM Tool」を、オープンソースで公開しました

SBOMによるサプライチェーンリスクの解決

SBOMとはSoftware Bill Of Materialsの頭文字をとったもので、日本語では「ソフトウェア部品表」とされます。あるソフトウェアがどのようなソフトウェア部品によって構成されているのかを示す情報がまとまったデータのことです。

ほとんどのソフトウェアは単独で成立しているわけではなく、多数のライブラリやコンポーネントなどのソフトウェア部品に依存しています。そのなかのいずれかに脆弱性が発見されればドミノ倒しのように他のさまざまなソフトウェアに影響することは必至です。

例えば昨年(2021年)末に発覚したJavaライブラリ「Log4j」の脆弱性は、非常に幅広いJavaのソフトウェアに深刻な影響を与えた例として記憶に新しいでしょう。広く使われているソフトウェア部品に深刻な脆弱性が発見された場合、その影響はときに甚大なものになるのです。

参考:広く使われているJavaライブラリ「Log4j」に深刻な脆弱性。速やかに確認と対策を

こうしたソフトウェアの開発工程において発生するリスクのことを「サプライチェーンリスク」と呼ぶことがあります。

そして、このサプライチェーンリスクを低減するための方法の1つとして期待されているのが「SBOM」です。

Log4jの脆弱性が発覚したときに、どのソフトウェアがLog4jに依存しているのかどうかが分からず、あのソフトウェアは依存している、いや依存していないらしい、といった不確実な情報が数多く流れて多くの混乱や対応への遅延が生じました。

SBOMによって、そのソフトウェアがどのようなソフトウェア部品によっていつ構築されたのかが判別できれば、脆弱性の判断と対応も迅速に行えます。

米国政府はこのサプライチェーンリスクの解決に数年前から真剣に取り組んでおり、2021年5月に米国のバイデン大統領が署名した大統領令「Executive Order on Improving the Nation’s Cybersecurity」(サイバーセキュリティ強化のための大統領令)には、米国政府がSBOMに取り組むことも記されています。

fig

今後、少なくとも社会的に重要と見なされるソフトウェアの流通に対して、SBOMは必須になっていくことになるとみられます。

ビルド時にSBOMを生成、SPDXフォーマットを採用

マイクロソフトがオープンソースで公開した「SBOM Tool」は、このSBOMをビルド時に自動生成してくれる機能を提供してくれます。

具体的には、ソフトウェア名やライセンス、作成者、バージョン、個々のファイルのハッシュ値などの情報を、SBOMのフォーマットとしての標準の1つである「SPDX」(Software Package Data Exchange)形式で出力してくれます。

また、ビルドの対象となるソフトウェアにSBOMが用意されている場合、新たに生成されるSBOMにはそのSBOMの情報をきちんととりまとめて生成することが可能。

fig

SBOM ToolsはWindows、Linux、Macに対応し、NPM、NuGet、PyPI、CocoaPods、Maven、Golang、Rust Crates、RubyGems、Gradle、Ivy、GithHubパブリックリポジトリ、コンテナ内のLinuxパッケージなど、さまざまなソフトウェアの自動検出機能も備えているとのことで、今後さらに自動検出機能を強化するとしています。

米国政府によるSBOMの推進は、日本にも影響を及ぼすことになるのは間違いないでしょう。すでに日本国内でも経済産業省がSBOMの採用検討について議論を進めているとされています。

企業向け、公共機関向けのソフトウェア開発に関連する仕事をしているITエンジニアの方々にとって、このSBOM Toolは情報収集が求められる分野のソフトウェアになるのではないでしょうか。