コンテンツにスキップ

CycloneDX仕様のSBOMインポート#

FutureVuls における、CycloneDX 仕様の SBOM インポート機能について詳細を説明します。

CycloneDX#

OWASP の CycloneDX(v1.x)は、以下の情報を取り入れます。

metadata#

  "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 により生成されたツールを検知します。
  • componenttype: operating-system の場合、OS 情報として取り入れるケースがあります。

components#

  "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#

  "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 が依存する dependsOncomponent は OS パッケージとして取り入れます。
  • ref がアプリケーションの場合、アプリケーションが依存する dependsOncomponent は依存ライブラリとして取り入れます。
  • dependsOn が別の dependency を参照する場合、それを再帰的に取り入れます。
  • dependencies に存在しない components は、PURL を参照し、OS パッケージと依存ライブラリに分けて取り入れます。