依存関係管理・SBOM いぞんかんけいかんり・えすぼむ
SBOM依存関係オープンソース脆弱性サプライチェーンライブラリ管理
依存関係管理・SBOMについて教えて
簡単に言うとこんな感じ!
現代のソフトウェアは「外部ライブラリ」の積み木でできているんだけど、どのライブラリをどのバージョン使ってるか一覧にしたのがSBOM(ソフトウェア部品表)だよ! 食品の原材料表示みたいなもので、「このシステムに危険な材料が含まれていないか」を確認するために使うんだ!
依存関係管理・SBOMとは
現代のソフトウェアは、ゼロから全てを自作するのではなく、様々なオープンソースライブラリや外部コンポーネントを組み合わせて開発されています。この「外部コンポーネントへの依存関係」を適切に把握・管理することを依存関係管理といいます。
SBOM(Software Bill of Materials:ソフトウェア部品表)は、あるソフトウェアが使用している全コンポーネント(ライブラリ・フレームワーク・ツール等)の名称・バージョン・ライセンス・出所を一覧にした文書です。製造業における「部品表(BOM)」のソフトウェア版と考えると理解しやすいです。
2021年のLog4Shell(Log4j脆弱性)の事件では、世界中の企業が「自社システムにLog4jが含まれているか」を把握するのに数日〜数週間を要しました。SBOMが整備されていれば、影響範囲を数時間で特定できます。
依存関係の種類とリスク
| 種類 | 内容 | リスク |
|---|---|---|
| 直接依存 | 自分のコードが直接インポートするライブラリ | 把握しやすいが多数になりがち |
| 間接依存(推移的依存) | 依存ライブラリがさらに依存するライブラリ | 気づきにくく、膨大な数になる |
| 開発依存 | テスト・ビルドツールなど開発時のみ必要 | 本番環境には含まれないが管理必要 |
SBOMの主要フォーマット
| フォーマット | 管理組織 | 特徴 |
|---|---|---|
| SPDX | Linux Foundation | ISO/IEC国際標準。ライセンス管理に強い |
| CycloneDX | OWASP | セキュリティ用途に特化。JSON/XML対応 |
| SWID Tags | NIST | ISO/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管理の仕組み
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| SPDX(ISO/IEC 5962) | SBOM標準フォーマット。国際規格として認定済み |
| CycloneDX | OWASP管理のSBOMフォーマット。セキュリティ用途に最適化 |
| NIST SSDF(SP 800-218) | セキュアなソフトウェア開発フレームワーク。SBOM要件含む |
| EO 14028 | 米国大統領令。連邦政府調達ソフトへのSBOM義務化 |
関連用語
- セキュリティテスト(SAST/DAST) — コードの脆弱性を自動検出する手法
- ペネトレーションテスト — 実際の攻撃手法でシステムを検証
- ソフトウェアサプライチェーンセキュリティ — 開発から配布までの全工程のセキュリティ
- セキュリティシフトレフト — 早期からセキュリティを組み込む考え方
- DevSecOps — 開発・セキュリティ・運用の統合
- CI/CD — SBOMはCIパイプラインに組み込んで自動生成