システム開発

依存関係管理・SBOM いぞんかんけいかんり・えすぼむ

SBOM依存関係オープンソース脆弱性サプライチェーンライブラリ管理
依存関係管理・SBOMについて教えて

簡単に言うとこんな感じ!

現代のソフトウェアは「外部ライブラリ」の積み木でできているんだけど、どのライブラリをどのバージョン使ってるか一覧にしたのがSBOM(ソフトウェア部品表)だよ! 食品の原材料表示みたいなもので、「このシステムに危険な材料が含まれていないか」を確認するために使うんだ!


依存関係管理・SBOMとは

現代のソフトウェアは、ゼロから全てを自作するのではなく、様々なオープンソースライブラリや外部コンポーネントを組み合わせて開発されています。この「外部コンポーネントへの依存関係」を適切に把握・管理することを依存関係管理といいます。

SBOM(Software Bill of Materials:ソフトウェア部品表)は、あるソフトウェアが使用している全コンポーネント(ライブラリ・フレームワーク・ツール等)の名称・バージョン・ライセンス・出所を一覧にした文書です。製造業における「部品表(BOM)」のソフトウェア版と考えると理解しやすいです。

2021年のLog4Shell(Log4j脆弱性)の事件では、世界中の企業が「自社システムにLog4jが含まれているか」を把握するのに数日〜数週間を要しました。SBOMが整備されていれば、影響範囲を数時間で特定できます。


依存関係の種類とリスク

種類内容リスク
直接依存自分のコードが直接インポートするライブラリ把握しやすいが多数になりがち
間接依存(推移的依存)依存ライブラリがさらに依存するライブラリ気づきにくく、膨大な数になる
開発依存テスト・ビルドツールなど開発時のみ必要本番環境には含まれないが管理必要

SBOMの主要フォーマット

フォーマット管理組織特徴
SPDXLinux FoundationISO/IEC国際標準。ライセンス管理に強い
CycloneDXOWASPセキュリティ用途に特化。JSON/XML対応
SWID TagsNISTISO/IEC 19770標準。エンタープライズ向け

歴史と背景

  • 2014年SPDX(Software Package Data Exchange)がLinux Foundationで誕生。SBOM概念の先駆け
  • 2017年CycloneDXがOWASPプロジェクトとして開始
  • 2020年 — SolarWindsサプライチェーン攻撃発生。ソフトウェア部品管理の重要性が世界的に認識される
  • 2021年5月 — 米国バイデン大統領が大統領令14028号に署名。連邦政府調達ソフトウェアへのSBOM提供を義務化
  • 2021年12月Log4Shell脆弱性発覚。SBOMがあれば即座に影響特定できたと話題に
  • 2022年 — EUのサイバーレジリエンス法でSBOM要件が議論される
  • 2023年 — 日本でも経産省がSBOM活用を推奨。国内企業での整備が加速

SBOM管理の仕組み

SBOMを活用した脆弱性管理の流れ ① SBOM生成 ビルド時に自動生成 全コンポーネント一覧化 (Syft、trivy等) ② 脆弱性照合 CVEデータベースと照合 既知の脆弱性を検出 (Grype、Snyk等) ③ 対応・更新 脆弱性のある ライブラリを更新 または代替 定期的に繰り返す(継続的監視) Log4Shell発覚時の対応スピード比較 SBOM未整備:数日〜数週間で影響範囲を特定 SBOM整備済:数時間で影響範囲を特定

関連する規格・RFC

規格・RFC番号内容
SPDX(ISO/IEC 5962)SBOM標準フォーマット。国際規格として認定済み
CycloneDXOWASP管理のSBOMフォーマット。セキュリティ用途に最適化
NIST SSDF(SP 800-218)セキュアなソフトウェア開発フレームワーク。SBOM要件含む
EO 14028米国大統領令。連邦政府調達ソフトへのSBOM義務化

関連用語