FutureVulsにおける、SPDX仕様のSBOMインポート機能について詳細を説明します。
Linux FoundationのSPDX(v2.x)は、以下の情報を取り入れます。
"creationInfo": {
"creators": [
"Organization: aquasecurity",
"Tool: trivy-0.43.0"
],
"created": "2023-08-08T08:01:33Z"
}
creators
により生成されたツールを検知します。
"packages": [
{
"name": "ami-xxxxxxxxxxxxxxxxx",
"SPDXID": "SPDXRef-Vm-888578fefc6f6735",
"primaryPackagePurpose": "SOURCE"
},
{
"name": "amazon",
"SPDXID": "SPDXRef-OperatingSystem-541077021f563a3e",
"versionInfo": "2023",
"primaryPackagePurpose": "OPERATING-SYSTEM"
},
{
"name": "bash",
"SPDXID": "SPDXRef-Package-2a97fe8298d3deed",
"versionInfo": "4.2.46-34.amzn2023",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
"referenceLocator": "pkg:rpm/amazon/bash@4.2.46-34.amzn2023?arch=x86_64"
}
],
"primaryPackagePurpose": "LIBRARY"
},
{
"name": "opt/vuls-saas/vuls",
"SPDXID": "SPDXRef-Application-d72df2bc81701c51",
"attributionTexts": [
"Type: gobinary"
],
"primaryPackagePurpose": "APPLICATION"
},
{
"name": "github.com/vulsio/go-exploitdb",
"SPDXID": "SPDXRef-Package-59634f967256ffb1",
"versionInfo": "v0.4.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
"referenceLocator": "pkg:golang/github.com/vulsio/go-exploitdb@v0.4.2"
}
],
"primaryPackagePurpose": "LIBRARY"
},
...
]
SPDXのソフトウェア一覧を表すpackages
には種類を表す必須項目がないため、SPDXID
により種類を判別します。
(e.g. "SPDXID": "SPDXRef-Package-xxxxxxxx"
)
OperatingSystem
の場合、OS情報として取り入れます。Package
の場合、OSパッケージ、もしくは言語ライブラリ情報として取り入れます。Application
の場合、アプリケーション情報として取り入れます。 "relationships": [
{
"spdxElementId": "SPDXRef-DOCUMENT",
"relatedSpdxElement": "SPDXRef-Vm-888578fefc6f6735",
"relationshipType": "DESCRIBES"
},
{
"spdxElementId": "SPDXRef-Vm-888578fefc6f6735",
"relatedSpdxElement": "SPDXRef-OperatingSystem-541077021f563a3e",
"relationshipType": "CONTAINS"
},
{
"spdxElementId": "SPDXRef-OperatingSystem-541077021f563a3e",
"relatedSpdxElement": "SPDXRef-Package-2a97fe8298d3deed",
"relationshipType": "CONTAINS"
},
{
"spdxElementId": "SPDXRef-Vm-888578fefc6f6735",
"relatedSpdxElement": "SPDXRef-Application-d72df2bc81701c51",
"relationshipType": "CONTAINS"
},
{
"spdxElementId": "SPDXRef-Application-d72df2bc81701c51",
"relatedSpdxElement": "SPDXRef-Package-59634f967256ffb1",
"relationshipType": "CONTAINS"
},
...
]
relationshipType: DEPENDS_ON
かrelationshipType: CONTAINS
の場合のみ、依存関係として取り入れます。CONTAINS
)、依存する(DEPENDS_ON
)場合は、OSパッケージとして取り入れます。CONTAINS
)、依存する(DEPENDS_ON
)場合は、依存ライブラリとして取り入れます。relationships
に存在しないSPDXID
は、PURLを参照し、OSパッケージと依存ライブラリに分けて取り入れます。