なぜ最近「SBOM」が注目されているのか

今回は脆弱性管理についてお話ししたいと思います。
最近、「SBOM(エスボム)」というキーワードが大変話題になっています。実際に導入したという声もよく聞きますし、2023年に経済産業省から『ソフトウェア管理に向けたSBOMの導入に関する手引き』というものが発表され、より話題になる機会が増えているように思います。
SBOMとは「Software Bill of Materials(ソフトウェア部品表)」の略でして、要はソフトウェアの構成ですね。このアプリケーションや機器、サイトにはどのようなソフトウェアのどのバージョンが使われていますよ、というものの一覧です。
なぜこうした取り組みが必要なのか。それは、どんなソフトウェアが入っているかがわからなければ、そのアプリケーションや機器などにどういった脆弱性があるのか調べようがないからです。逆に、どのソフトウェアのどのバージョンが入っているかがわかれば、どういう脆弱性があるかも調べられます。

[画像クリックで拡大]
これだけでは非常に単純な話のようにも思えますが、実際はそうではありません。ソフトウェアというのは、様々なライブラリやコンポーネントの組み合わせでなっているわけですから、たとえばWordPressを使おうとすると、WordPressを構成するPHPなどのプログラム言語や、その言語向けの様々なソフトウェアライブラリが使われています。あるいはOSのソフトといいますか、ちょっと前に話題になったLog4jという、これはJava向けのライブラリですが、著名なライブラリに非常に危険な脆弱性があるということで大騒ぎになったわけです。
これがなぜ問題になったかというと、Javaで書かれたアプリケーションの多くにこのライブラリが使われているというのが一つ。また、多く使われてはいるのですが、「じゃあ実際にこの環境にLog4jが使われているか」というのは簡単にはわからないというのが一つです。たとえば「Minecraft」というゲームでは、ゲーム内サーバーを個人で運用しているような方もいるわけですが、MinecraftサーバーはJavaで書かれていて、実はLog4jも使われていると。ですから、そういったものまで影響があるかもしれないということで、大きな騒ぎになったのです。
もう一つ騒ぎになったポイントがあります。それは、脆弱性の種類性質として、外部インターネットに公開していないサーバーでも影響があり得るということが早くからわかっていた点です。ここからSBOM、あるいは脆弱性管理というものをちゃんとやらなきゃいけないという議論が高まったような気がします。

[画像クリックで拡大]
また、もう少し最近の話題では「curl(カール)」ですね。これの脆弱性が問題になりました。curlは、インターネットからファイルなどをダウンロードするための著名なコマンドですが、コマンドだけでなくソフトウェアから利用するためのライブラリとしても広く使われています。こちらは「libcurl(リブカール)」と、ソフトウェアとしてはまあcurlと同じものといいますか、共通のものですね。こちらも非常に多くのソフトウェアで使われています。ただ、「このソフトウェアは何と何と何を使っているか」っていうのは簡単にはわからないわけです。じゃあ一体どうすれば……ということで、SBOMが注目されているわけです。