FutureVulsにおける、CycloneDX仕様のSBOMインポート機能について詳細を説明します。
OWASPのCycloneDX(v1.x)は、以下の情報を取り入れます。
"metadata": {
"timestamp": "2023-08-08T08:22:10+00:00",
"tools": [
{
"vendor": "aquasecurity",
"name": "trivy",
"version": "0.43.0"
}
],
"component": {
"bom-ref": "__ROOT_COMPONENT_REF__",
"type": "container",
"name": "ami-xxxxxxxxxxxxxxxxx"
}
}
tools
により生成されたツールを検知します。component
がtype: operating-system
の場合、OS情報として取り入れるケースがあります。 "components": [
{
"bom-ref": "__OPERATING_SYSTEM_COMPONENT_REF__",
"type": "operating-system",
"name": "amazon",
"version": "2023"
},
{
"bom-ref": "pkg:rpm/amazon/bash@4.2.46-34.amzn2023?arch=x86_64",
"type": "library",
"name": "bash",
"version": "4.2.46-34.amzn2023",
"purl": "pkg:rpm/amazon/bash@4.2.46-34.amzn2023?arch=x86_64"
},
{
"bom-ref": "__APPLICATION_COMPONENT_REF__",
"type": "application",
"name": "opt/vuls-saas/vuls",
"properties": [
{
"name": "aquasecurity:trivy:Type",
"value": "gobinary"
}
]
},
{
"bom-ref": "pkg:golang/github.com/vulsio/go-exploitdb@v0.4.2",
"type": "library",
"name": "github.com/vulsio/go-exploitdb",
"version": "v0.4.2",
"purl": "pkg:golang/github.com/vulsio/go-exploitdb@v0.4.2"
},
...
]
CycloneDXのソフトウェア一覧を表すcomponents
は、以下のようにインポートされます。
type: operating-system
の場合、OS情報として取り入れます。type: library
の場合、OSパッケージ、もしくは言語ライブラリ情報として取り入れます。type: application
の場合、アプリケーション情報として取り入れます。(例外あり) "dependencies": [
{
"ref": "__ROOT_COMPONENT_REF__",
"dependsOn": [
"__OPERATING_SYSTEM_COMPONENT_REF__",
"__APPLICATION_COMPONENT_REF__"
]
},
{
"ref": "__OPERATING_SYSTEM_COMPONENT_REF__",
"dependsOn": [
...
"pkg:rpm/amazon/bash@4.2.46-34.amzn2023?arch=x86_64",
...
]
},
{
"ref": "__APPLICATION_COMPONENT_REF__",
"dependsOn": [
...
"pkg:golang/github.com/vulsio/go-exploitdb@v0.4.2",
...
]
},
...
]
ref
がOSの場合、OSが依存するdependsOn
のcomponent
はOSパッケージとして取り入れます。ref
がアプリケーションの場合、アプリケーションが依存するdependsOn
のcomponent
は依存ライブラリとして取り入れます。dependsOn
が別のdependency
を参照する場合、それを再帰的に取り入れます。dependencies
に存在しないcomponents
は、PURLを参照し、OSパッケージと依存ライブラリに分けて取り入れます。