SBOMスキャンの仕様

サポートするSBOMツール

2025年2月時点では、以下のSBOM仕様のスキャンをサポートします。

  • CycloneDX 〜v1.6 (JSON/XML)
  • SPDX 〜v2.3 (JSON/tag:value)

また、2024年12月時点では以下のツールから生成されたSBOMのスキャンをサポートします。

他ツールから出力されたSBOMの対応の依頼はお問い合わせください。

SBOMファイルをスキャンする際に利用する情報

PURL

SBOMに含まれる各ソフトウェア情報は PURL (PackageURL) を含めてください。
PURLは、ソフトウェアの名前、バージョン、種類、およびその他の情報を一意に識別するための標準的な方法の一つです。PURLはFutureVulsが脆弱性を検知するためのキーとして使用されるため、PURLが含まれていないソフトウェア情報は、FutureVulsにインポートできません。

OS情報

サーバSBOMの場合、OS情報が含まれているとFutureVulsにインポートできます。
(例:amazon linux 2, ubuntu 20.04, centos 7 など)

インポートされたOS情報

  • インポートされたOS情報は、サーバ詳細の「サーバ情報:OS」で確認できます。
  • OS名とバージョン情報を含むことが推奨されます。
  • OS情報が複数含まれている場合、インポートエラーとなります。
  • OS情報が含まれていない場合、Pseudo OSとして登録されます。
  • アプリケーションSBOMの場合、OS情報はインポートされません。

OSパッケージ情報

サーバSBOMの場合、OSパッケージ情報が含まれているとFutureVulsにインポートできます。 (例:RPMパッケージ、debパッケージ、apkパッケージなど)

インポートされたOSパッケージ情報一覧

  • インポートされた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にある typepurl-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 によってエコシステム毎にアプリケーションとしてまとめます。
    (例:typemaven の場合、Java applicationとしてまとめられる)
  • SBOMの中にある各依存ライブラリのファイルパス属性がLockfileやマニフェストファイルを指す場合、そのパスをアプリケーションとしてインポートします。
    (例:path/to/composer.lock が存在する場合、path/to/composer.lock をアプリケーションとして認識)

その他

各フォーマットの詳細な取り込み条件については下記をご参照ください。

インポートされたSBOMファイルと、それにより登録されたソフトウェア、脆弱性✕タスクの関係性については、SBOMとソフトウェアの関連付けをご参照ください。

SBOMファイルをスキャンする際に利用されない情報

脆弱性情報

SBOMファイル内に記載されてある脆弱性情報はFutureVulsに取り込まれず、FutureVulsの脆弱性データベースを用いたスキャンによって改めて脆弱性を検知します。

CPE

CPE のみが定義されたソフトウェア情報はFutureVulsに取り込まれず、PURL 付きのソフトウェア情報を優先的に取り込む仕組みになっています。

SBOMファイルのスキャンが上手くいかない場合

SBOMファイルのスキャンがうまく行かない場合は、以下の点を参考にしてください。

ファイル登録時にエラーが発生したとき

SBOMを生成したツールがサポート対象か

FutureVuls では正確な脆弱性検知のため、SBOM 生成ツール特有の仕様に個別対応しています。
登録しようとした 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のスキャンで改めて脆弱性を検知しています。