SBOMのエクスポート#
サーバの構成と脆弱性情報を含む SBOM ファイルをエクスポートできます。
SBOM ファイルは、CycloneDX v1.6 形式でエクスポートされます。
含まれる情報は以下の通りです。
- OS、および OS パッケージ情報
- アプリケーション、および言語ライブラリ情報
- 脆弱性情報
複数 SBOM がインポートされたサーバでも、一枚の SBOM ファイルとしてエクスポートされます。 SBOM サーバだけではなく、スキャナ・疑似サーバ・Paste サーバ・インスタンスもエクスポート可能です。
複数のサーバを選択してSBOMエクスポート#
サーバ一覧のチェックリストから複数のサーバを選択して SBOM をエクスポートできます。 これにより、各サーバの SBOM がマージされた1つの SBOM ファイルとしてエクスポートできます。
SBOMマージの仕様#
各サーバの SBOM は、以下のような構造に並列の依存関係としてマージされます。
以下、各項目の詳しい仕様については、CycloneDX v1.6 もご参照ください。
metadata.component
#
マージされた SBOM の metadata.component
には、下記のような component
が新しく作成されます。
{
"bom-ref": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "application",
"name": "Merged-SBOM",
"version": "YYYY-mm-dd"
}
components
#
各サーバの components
配列は、それぞれの bom-ref
をキーとして重複が排除された上で統合されます。
bom-ref
の重複が発生するケース
FutureVuls で登録されたソフトウェアは、 PackageURL を bom-ref
として使用しています。
そのため、同じソフトウェアが異なるサーバにインストールされている場合、bom-ref
が重複することがあります。
この場合、統合後の components 配列では bom-ref の重複は排除されますが、dependencies 配列内に含まれる各依存関係エントリの dependsOn 配列には、重複している各 bom-ref がそのまま追加されます。
各サーバにおける OS 情報(単一サーバとして SBOM 出力する際は metadata.component
に記載される情報)は、マージされた SBOM の components
配列に追加されます。
dependencies
#
各サーバの dependencies
配列は、内部の ref
をキーとして統合されます。
各サーバにおける OS 情報は、上記新しく作成される metadata.component
の依存関係として、マージされた SBOM の dependencies
配列に追加されます。
{
"ref": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // Merged-SBOM
"dependsOn": [
"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy", // OS component for server A
"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz", // OS component for server B
...
]
}
compositions
#
各サーバの OS 情報を持つ component の bom-ref
が、下記のような composition の assemblies
配列に追加されます。
{
"aggregate": "complete",
"assemblies": [
"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy", // OS component for server A
"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz", // OS component for server B
...
]
}
vulnerabilities
#
脆弱性情報は id
をキーとして統合されます。
ratings
, advisories
, affects
の各フィールドはそれぞれ以下をキーとして統合されます。
ratings
:source.name
advisories
:url
affects
:ref
cwes
の配列は、重複が排除された上でそのまま統合されます。
description
は、ベースとなるサーバでの情報が優先されます。