SBOM (Software Bill of Materials)
ソフトウェアを構成する全てのコンポーネント(ライブラリ、モジュール等)を網羅した一覧リスト。ソフトウェアサプライチェーンの透明性を確保し、脆弱性管理を迅速化する。
SBOMは、一つのソフトウェア製品を構成している、全ての部品のリストだ。正式名称は「Software Bill of Materials」、ソフトウェア部品表と訳される。
食品のパッケージに記載されている「原材料名一覧」をイメージすると分かりやすい。どのメーカーの、どの部品(ライブラリ、フレームワーク)が、どのバージョンで使われているのかを正確に記録したものだ。
なぜ必要なのか
現代のソフトウェアは、ゼロから手作りされることは稀で、その多くがオープンソースなどの既存の部品を組み合わせて作られている。これは効率的だが、部品に欠陥(脆弱性)が見つかると、その部品を使っている全ての製品が影響を受けるというリスクを伴う。
2021年に発覚したLog4jの脆弱性問題は、このリスクを明確に示した。多くの組織が、自社のシステムでLog4jが使われているかどうかすら把握できず、対応に追われた。SBOMがあれば、この確認は一瞬で終わる。
つまり、SBOMはソフトウェアにおける「サプライチェーン管理」の根幹だ。どの部品がどこで使われているかを把握できなければ、リスク管理など不可能だ。
SBOMに含まれる情報
SBOMには、コンポーネントに関する以下のような情報が含まれる。
- 部品名
- 部品のバージョン
- 開発元(ベンダー名)
- ライセンス情報
- 部品を特定するための一意な識別子
これらの情報は、SPDXやCycloneDXといった標準化されたフォーマットで記述され、機械的な処理を容易にしている。
もはやSBOMの作成と管理は、安全なソフトウェアを開発・運用する上での当然の責務と言える。