SBOMスキャンの仕様#
ここでは、SBOM 管理機能を脆弱性管理と組み合わせた際のスキャン仕様について説明します。
サポートするSBOMツール#
2025年2月時点では、以下の SBOM 仕様のスキャンをサポートします。
- CycloneDX 〜v1.6 (JSON/XML)
- SPDX 〜v2.3 (JSON/tag:value)
また、2024年12月時点では以下のツールから生成された SBOM のスキャンをサポートします。
- Vuls / FutureVuls (CycloneDX のみ)
- Trivy
- Syft
- SBOM Tool (SPDX のみ)
- CycloneDX Generator (cdxgen) (CycloneDX のみ)
- Amazon Inspector
他ツールから出力された SBOM の対応の依頼はお問い合わせください。
SBOMファイルをスキャンする際に利用する情報#
PURL#
SBOM に含まれる各ソフトウェア情報は PURL (PackageURL) を含めてください。 PURL は、ソフトウェアの名前、バージョン、種類、およびその他の情報を一意に識別するための標準的な方法の1つです。 PURL は FutureVuls が脆弱性を検知するためのキー として使用されるため、PURL が含まれていないソフトウェア情報は、FutureVuls にインポートできません。
OS情報#
サーバ SBOM の場合、OS 情報が含まれていると FutureVuls にインポートできます。 (例:amazon linux 2, ubuntu 20.04, centos 7 など)
- インポートされた OS 情報は、サーバ詳細の「サーバ情報:OS」で確認できます。
- OS 名とバージョン情報を含むことが推奨されます。
- OS 情報が複数含まれている場合、インポートエラーとなります。
- OS 情報が含まれていない場合、Pseudo OS として登録されます。
- アプリケーション SBOM の場合、OS 情報はインポートされません。
OSパッケージ情報#
サーバ SBOM の場合、OS パッケージ情報が含まれていると FutureVuls にインポートできます。 (例:RPM パッケージ、deb パッケージ、apk パッケージなど)
- インポートされた OS パッケージ情報は、サーバ詳細 > ソフトウェアタブに
ソフトウェア種別:pkg
として一覧表示されます。 - OS パッケージ情報の種別は、OS 情報とマッチすることが推奨されます。 (例:RedHat 系 OS と RPM パッケージ、Debian 系 OS と deb(dpkg)パッケージ)
- OS 情報がなく、OS パッケージ情報のみが含まれている場合はインポートエラーとなります。
- OS パッケージの種別が複数含まれている場合もインポートエラーです。 (例:deb パッケージと apk パッケージが混在)
- アプリケーション SBOM の場合、OS パッケージ情報はインポートされません。
依存ライブラリ情報#
Java、Python、Node.js、Go などの依存ライブラリ情報が含まれている場合、FutureVuls にインポートされます。
- インポートされた依存ライブラリ情報は、サーバ詳細 > ソフトウェアタブで
ソフトウェア種別:library
として一覧表示されます。 - 依存ライブラリの PURL にある
type
は purl-spec に準拠していることが推奨されます。 - 各依存ライブラリ情報は、アプリケーション としてまとめられ、
location
に表示されます。 - アプリケーション SBOM をサーバに追加することで、依存ライブラリ情報も新たにインポートできます。
アプリケーション#
SBOM の中に、複数の依存ライブラリをまとめた(依存する)アプリケーション(もしくは pom.xml などマニフェストファイルや Lockfile)が明示的に存在している場合、FutureVuls にインポートできます。 しかし、多くの SBOM は依存ライブラリのみで構成されることが多いため、アプリケーション情報が含まれていない場合は、(pip・npm などのエコシステム)に応じて FutureVuls で任意のアプリケーションとしてまとめられます。
- SBOM からインポートされたアプリケーションは、アプリケーション名の後に SBOM ファイルの UUID が追記されます。
(例:
opt/vuls-saas/vuls | 12345678-1234-1234-1234-123456789012
) - この UUID はアプリケーションの一意性を保つために使用され、同じ UUID を持つアプリケーションは同じ SBOM ファイルからインポートされたものとして扱われます。
- 各アプリケーションは SBOM と独立して削除が可能で、脆弱性検知の対象外にもできます。
アプリケーションのまとめ方#
SBOM の中にアプリケーション情報が含まれていない場合、FutureVuls では複数の依存ライブラリを任意のアプリケーション としてまとめてインポートします。
- アプリケーションのまとめ方は、SBOM 生成ツールごとに異なるメカニズムで行われます。
- ほとんどの場合、依存ライブラリの PURL にある
type
によってエコシステム毎にアプリケーションとしてまとめます。 (例:type
がmaven
の場合、Java application
としてまとめられる) - SBOM の中にある各依存ライブラリのファイルパス属性が Lockfile やマニフェストファイルを指す場合、そのパスをアプリケーションとしてインポートします。
(例:
path/to/composer.lock
が存在する場合、path/to/composer.lock
をアプリケーションとして認識)
その他#
各フォーマットの詳細な取り込み条件については下記をご参照ください。
インポートされた SBOM ファイルと、それにより登録されたソフトウェア、脆弱性✕タスクの関係性については、SBOMとソフトウェアの関連付けをご参照ください。
SBOMファイルをスキャンする際に利用されない情報#
脆弱性情報#
SBOMファイル内に記載されてある脆弱性情報はFutureVulsに取り込まれず 、FutureVuls の脆弱性データベースを用いた スキャンによって改めて脆弱性を検知 します。
SBOM 内の脆弱性情報を使わない理由
SBOM に記載された脆弱性情報は、SBOM が生成された時点(過去)の情報であり、既に古くなっている可能性があります。 一方、FutureVuls の脆弱性データベースは常に最新の情報が反映されるため、SBOM の情報に依存せず独自のスキャンを実行することで、より正確かつ最新の脆弱性を把握できます。
CPE#
CPE のみが定義されたソフトウェア情報は FutureVuls に取り込まれず、PURL 付きのソフトウェア情報を優先的に取り込む仕組みになっています。
SBOM 内の CPE で定義されたソフトウェア情報をインポートしない理由
CPE(Common Platform Enumeration)は脆弱性識別の1つの方法として主に NVD で利用されていますが、「OS パッケージ情報」や「OSS 依存ライブラリ」を示すには情報が不足しがちで、誤検知の可能性が高いという課題があります。 また、CVE(脆弱性)が発番されていないソフトウェアには CPE が定義されないことが多く、OSS の大部分をカバーできないケースもあります。
一方、PURL (PackageURL) は言語・パッケージ管理システムとの連携を前提としており、パッケージ名やバージョン、エコシステム情報など具体的なメタデータが含まれるため、OSパッケージやOSS依存ライブラリの脆弱性検知に最適です。FutureVuls ではこの PURL を主要キーとすることで、より正確かつ広範な脆弱性スキャンを実現しています。
そのため、CPE のみが定義されたソフトウェア情報はインポートせず、PURL 付きのソフトウェア情報を優先的にインポートする仕組みになっています。
SBOMファイルのスキャンが上手くいかない場合#
SBOM ファイルのスキャンがうまく行かない場合は、以下の点を参考にしてください。
ファイル登録時にエラーが発生したとき#
SBOMを生成したツールがサポート対象か#
FutureVuls では正確な脆弱性検知のため、SBOM 生成ツール特有の仕様に個別対応しています。 登録しようとした SBOM ファイルが現時点でサポート対象であるかをご確認ください。
サーバ SBOM として登録する場合、OS情報が適切に記載されているか#
SBOM ファイルを サーバ SBOM として登録する場合、SBOM ファイル内に OS 情報が含まれていないと登録に失敗する場合があります。 登録に失敗するのは「SBOM ファイル内に OS パッケージ情報がある」一方で「SBOM ファイル内に OS 情報が存在しない」ケースです。
OS情報なし | OS情報あり | |
---|---|---|
OSパッケージ情報なし | Pseudo OSとしてインポート可 | インポート可 |
OSパッケージ情報あり | インポートエラー | インポート可 |
また、以下のようなケースもファイル登録時にエラーが発生します。
- OS 情報が複数含まれている場合
- OS パッケージの 種別が複数 含まれている場合 (例:deb パッケージと apk パッケージの混在)
スキャンには成功したが、SBOMファイル内の情報が正しくインポートされなかったとき#
- アプリケーションSBOM として追加した場合、SBOM 内の OS 情報と OS パッケージ情報はインポートされません。
- PackageURL(PURL) が含まれていないソフトウェア情報はインポートされません。
- SBOM ファイル内の 脆弱性情報 は登録されません。FutureVuls のスキャンで改めて脆弱性を検知しています。