オープンソースのSBOMツールには、汎用型と言語特化型の両方があり、利用している技術スタックに合わせて選べます。
SBOMツールを選ぶ際は、以下のポイントを確認することが重要です。
SBOMツール選定のポイント
SPDXやCycloneDXなどの標準フォーマットに対応しているか
ビルドプロセスやCI/CDパイプラインへ統合できるか
使用している言語や開発環境に適しているか
SBOM生成をどこまで自動化できるか
WizはSecurity Graphを活用し、実際の運用環境に基づいて脆弱性の優先順位を判断しながら、クラウド環境全体に対してエージェントレスでSBOMを生成します。
オープンソースの依存関係は開発スピードを大きく向上させる一方で、新たなセキュリティリスクも生み出します。
例えば、JavaScriptとPythonでは合計100万件を超えるパッケージが公開されています。これにより、開発者はゼロから実装することなく、迅速にプロダクトを構築できます。
その一方で、外部依存関係を追加するたびに潜在的なリスクも増加します。サードパーティ製コンポーネントには脆弱性が含まれている可能性があり、依存関係が増えるほど、バージョンや利用状況の管理は複雑になります。
こうした課題への対応策として活用されているのが、Software Bill of Materials(SBOM)です。SBOMは、パッケージ名やバージョン情報を含む、ソフトウェア構成要素の一覧です。依存関係を一元的に可視化できるようになることで、利用者側・提供者側の双方が、脆弱性やライセンス上の問題を迅速かつ効率的に確認できるようになります。
本記事では、SBOMの基本を整理したうえで、主要なオープンソースSBOMツールを紹介します。
SBOMとは
SBOM(Software Bill of Materials)は、ソフトウェアを構成するコンポーネントや依存関係を、人間と機械の両方が読み取れる形式で一覧化したものです。
アプリケーションのビルド時に利用されるサードパーティ製の依存関係を追跡できるほか、各コンポーネントについて以下のような情報を確認できます。
コンポーネント名
バージョン
リリース日
チェックサム
ライセンス情報
関連メタデータ
なぜSBOMが必要なのか
SBOMを利用することで、エンジニアリングチームは、サードパーティ製コンポーネントの名称・バージョン・ライセンス情報を含む、完全かつ最新のインベントリを把握できます。
これにより、コード変更やライセンス変更の影響を評価しやすくなるほか、Common Weakness Enumerations(CWE)やCommon Vulnerabilities and Exposures(CVE)といったセキュリティ上の問題も迅速に特定できます。
運用面では、SBOMはソフトウェア資産管理にも役立ちます。利用中のソフトウェアやライセンスを一覧化できるため、GPLライセンスの回避など、社内ポリシーの適用にも有効です。
さらに、依存関係によって持ち込まれるサプライチェーンリスクも迅速に把握できます。
SBOMは、コンプライアンス要件としても重要性が高まっています。例えば、米国の「Executive Order on Improving the Nation's Cybersecurity」では、対象ソフトウェアについて、米国政府向けベンダーにSBOMの提供を求めています。
そのため、連邦政府向けにソフトウェアを提供する企業にとって、SBOM対応は事実上必須となっているのです。
SBOMツールの仕組み
SBOMツールは、アプリケーション内のソフトウェアコンポーネントを自動的に検出し、一覧化します。多くのSoftware Composition Analysis(SCA)ツールにはSBOM生成機能が含まれており、コードベースをスキャンして包括的なインベントリを作成します。
主なスキャン方式は以下のとおりです。
Manifest scanning
package.jsonやCargo.tomlなどのマニフェストファイルを解析し、記載された依存関係を抽出します。
Binary scanning
コンパイル済みバイナリを解析し、特定のライブラリに由来するサードパーティコードを検出します。
Hybrid scanning
Manifest scanningとBinary scanningを組み合わせることで、依存関係の検出漏れを減らします。
前述のとおり、SBOMには、人間と機械の両方が読み取れるさまざまなフォーマットがあります。
こうしたフォーマットにより、自動分析と手動確認の両方に対応できるほか、特定ライブラリの利用有無も迅速に確認できます。
代表的なSBOMフォーマットは以下のとおりです。
ソフトウェアライセンス情報に重点を置いたフォーマット
セキュリティ脆弱性の管理に重点を置いたフォーマット
特定分野に特化せず、ソフトウェア識別を目的としたフォーマット
WizのエージェントレスSBOMでは、エージェントをデプロイすることなく、パッケージ、オープンソースライブラリ、ネストされた依存関係を含むアプリケーションコンポーネントを可視化できます。
SBOMツールを選ぶポイント
SBOMツールを選定する際は、以下のポイントを確認してください。
対応フォーマット
SPDXやCycloneDXなどの形式でSBOMを生成できるかを確認します。他ツールとの連携やコンプライアンス対応において重要です。
対応言語・対応環境
汎用型のツールもあれば、特定の言語やエコシステム向けに設計されたツールもあります。利用している技術スタックに適したものを選ぶ必要があります。
統合性
SBOMを常に最新の状態に保つには、CI/CDパイプラインやビルドプロセスへ組み込めるツールが適しています。
解析の深さ
マニフェストファイルだけでなくバイナリもスキャンできるツールであれば、パッケージファイルに記載されない依存関係も検出できます。
自動化対応
SBOM生成を自動化できれば、手動実行の漏れを防げます。
コミュニティとメンテナンス状況
活発なコミュニティを持つオープンソースツールは、継続的に更新され、新しい言語やフォーマットへの対応も進みやすい傾向があります。
チームのワークフローを踏まえ、SBOM管理を最も効率化できる要件を整理することが重要です。
複数言語を横断して利用したい場合や、エージェントのインストールを避けたい場合は、柔軟性が高く導入しやすいツールが適しています。
オープンソースのSBOMツール
ここまでで、SBOMの概要・用途・仕組みを確認しました。ここからは、SBOMを生成できるオープンソースツールを紹介します。
| 汎用SBOMツール | 言語特化型SBOMツール |
|---|---|
|
|
汎用SBOMツール
まずは、特定のプログラミング言語に依存しない汎用SBOMツールを紹介します。
1. Syft
SyftはコンテナイメージやファイルシステムからSBOMを生成できるオープンソースのCLIツールです。
主な特徴
OCI、Docker、Singularityなどのコンテナフォーマットに対応
利用中のLinuxディストリビューションを検出可能
SPDX、CycloneDX、独自フォーマットをサポート
2. The SBOM tool
The SBOM toolは、Microsoftが提供するオープンソースのSBOM生成ツールです。
主な特徴
大規模プロジェクト向けに設計
高いスケーラビリティを提供
NuGet、Go、npm、pip、Cargoなどのパッケージマネージャーに対応
ビルド時にSPDX形式のSBOMを生成
3. Tern
Ternは、コンテナイメージやDockerfileからSBOMを生成できるSCAツールです。
主な特徴
ライセンス情報の収集に重点を置いた設計
各依存関係が追加されたイメージレイヤーを可視化
SPDX、CycloneDX、HTML、YAMLなど複数形式で出力可能
4. CycloneDX Generator
CycloneDX Generator(cdxgen)は、OWASP公式のSBOMツールです。
主な特徴
C/C++、JavaScript、Java、Python、Haskellなど多数の言語をサポート
CLIによるローカルスキャンに対応
CI/CDパイプラインへの組み込みが可能
/bom エンドポイントを提供するAPIサーバー機能を搭載
CycloneDX形式でSBOMを出力
5. SPDX SBOM Generator
SPDX SBOM Generatorは、多言語対応のSBOMツールです。
主な特徴
pip、Cargo、npm、Go、Composer、RubyGemsなど多数のパッケージマネージャーをサポート
SPDX形式のSBOM生成に対応
CLIベースで利用可能
6. DISTRO2SBOM
DISTRO2SBOMは、Linux環境内のインストール済みパッケージを解析してSBOMを生成するツールです。
主な特徴
利用中のLinuxディストリビューションを自動検出
インストール済みパッケージを一覧化
SPDXおよびCycloneDX形式でエクスポート可能
言語特化型SBOMツール
続いて、特定のプログラミング言語に特化した代表的なSBOMツールを紹介します。
7. Retire.js
Retire.jsは、JavaScript向けの脆弱性スキャナーで、SBOM生成にも対応しています。
主な特徴
JavaScript依存関係の脆弱性を検出
CLIとしてローカル環境で利用可能
CI/CDパイプラインへの組み込みに対応
WebサイトをスキャンできるChrome拡張機能を提供
CycloneDX形式でSBOMを生成
8. bom
bomは、Kubernetes(k8s)プロジェクトの一部として提供されているSBOMツールです。
主な特徴
Kubernetesクラスター定義内のGo依存関係を解析
SPDX形式のSBOMを生成
400種類以上のライセンスを識別可能
9. Jake
Jakeは、Python環境の脆弱性検査とSBOM生成を行うCLIツールです。
主な特徴
Python依存関係の脆弱性を検出
CycloneDX形式でSBOMを生成
Sonatypeサーバー(商用版・オープンソース版)を利用
10. rebar3_sbom
rebar3_sbomは、Erlang向けのSBOM生成ツールです。
主な特徴
Erlangビルドツール「Rebar」と連携
CycloneDX形式でSBOMを生成
Erlangプロジェクト向けに最適化
11. sbom-rs
sbom-rsは、Rust向けに提供されているSBOMツール群です。
主な特徴
SPDXおよびCycloneDX形式をサポート
Rustプロジェクト向けに設計
OSV(Open Source Vulnerabilities)データベースベースの脆弱性スキャン機能を搭載
WizによるSBOM管理と可視化
Wizでは、SBOMを継続的に活用できるセキュリティアセットとして管理できます。
クラウド、コンテナ、Kubernetes、VM、イメージ環境全体にわたってソフトウェアコンポーネントを自動検出し、セキュリティ、コンプライアンス、顧客向け保証に活用できる包括的なSBOMを生成可能です。
Wizで実現できること
エージェントレス設計
エージェントをデプロイすることなく継続的なインベントリ管理を実現し、環境変化に合わせてSBOMを常に最新の状態に維持できます。
標準フォーマット対応と高い可搬性
パッケージ、OS、推移的依存関係の詳細を含め、CycloneDXまたはSPDX形式でエクスポート可能です。
大規模運用への対応
環境全体を対象にSBOMレポートをスケジュール実行できるほか、Amazon S3などのクラウドストレージへのエクスポートやAPI経由での取得にも対応しています。
開発から運用までを横断的に可視化
SBOMを脆弱性、ライセンス、公開されたシークレット情報と関連付けることで、ビジネスへの影響が大きいリスクを優先的に把握できます。
開発・デリバリープロセスへの統合
ビルド時のSBOM生成、レジストリ内イメージのスキャン、リリース間のSBOM比較による構成ドリフト追跡を実現します。
コンプライアンス対応
EO 14028やソフトウェアサプライチェーン監査向けの監査可能なアーティファクトを生成できます。
WizのエージェントレスSBOM機能について詳しく知りたい方は、デモをご予約ください。エンドツーエンドのSBOM生成をどのように効率化できるか確認できます。
Catch code risks before you deploy
Learn how Wiz Code scans IaC, containers, and pipelines to stop misconfigurations and vulnerabilities before they hit your cloud.

関連記事