1
0

AWSのInspectorでSBOM Exportしてみた 後編

Last updated at Posted at 2023-10-15

導入

Athenaでの分析手順

SBOMフォーマットの確認

  • 前回の記事ではCyclonedX 1.4 SBOM フォーマットでSBOMファイルをExportしています。
  • CyclonedX 1.4 SBOM フォーマットはメタデータ、コンポーネント、脆弱性情報を含んでいます。
{
  "bomFormat": "CycloneDX",
  "specVersion": "1.4",
  "version": 1,
  "metadata": {
    "timestamp": "2023-06-02T01:17:46Z",
    "component": null,
    "properties": [
      {
        "name": "imageId",
        "value": "sha256:c8ee97f7052776ef223080741f61fcdf6a3a9107810ea9649f904aa4269fdac6"
      },
      {
        "name": "architecture",
        "value": "arm64"
      },
      {
        "name": "accountId",
        "value": "111122223333"
      },
      {
        "name": "resourceType",
        "value": "AWS_ECR_CONTAINER_IMAGE"
      }
    ]
  },
  "components": [
    {
      "type": "library",
      "name": "pip",
      "purl": "pkg:pypi/pip@22.0.4?path=usr/local/lib/python3.8/site-packages/pip-22.0.4.dist-info/METADATA",
      "bom-ref": "98dc550d1e9a0b24161daaa0d535c699"
    },
    {
      "type": "application",
      "name": "libss2",
      "purl": "pkg:dpkg/libss2@1.44.5-1+deb10u3?arch=ARM64&epoch=0&upstream=libss2-1.44.5-1+deb10u3.src.dpkg",
      "bom-ref": "2f4d199d4ef9e2ae639b4f8d04a813a2"
    },
    {
      "type": "application",
      "name": "liblz4-1",
      "purl": "pkg:dpkg/liblz4-1@1.8.3-1+deb10u1?arch=ARM64&epoch=0&upstream=liblz4-1-1.8.3-1+deb10u1.src.dpkg",
      "bom-ref": "9a6be8907ead891b070e60f5a7b7aa9a"
    },
    {
      "type": "application",
      "name": "mawk",
      "purl": "pkg:dpkg/mawk@1.3.3-17+b3?arch=ARM64&epoch=0&upstream=mawk-1.3.3-17+b3.src.dpkg",
      "bom-ref": "c2015852a729f97fde924e62a16f78a5"
    },
    {
      "type": "application",
      "name": "libgmp10",
      "purl": "pkg:dpkg/libgmp10@6.1.2+dfsg-4+deb10u1?arch=ARM64&epoch=2&upstream=libgmp10-6.1.2+dfsg-4+deb10u1.src.dpkg",
      "bom-ref": "52907290f5beef00dff8da77901b1085"
    },
    {
      "type": "application",
      "name": "ncurses-bin",
      "purl": "pkg:dpkg/ncurses-bin@6.1+20181013-2+deb10u3?arch=ARM64&epoch=0&upstream=ncurses-bin-6.1+20181013-2+deb10u3.src.dpkg",
      "bom-ref": "cd20cfb9ebeeadba3809764376f43bce"
    }
  ],
  "vulnerabilities": [
    {
      "id": "CVE-2022-40897",
      "affects": [
        {
          "ref": "a74a4862cc654a2520ec56da0c81cdb3"
        },
        {
          "ref": "0119eb286405d780dc437e7dbf2f9d9d"
        }
      ]
    }
  ]
}
              

(Amazon Inspector の CyclonedX 1.4 SBOM フォーマットの例からフォーマット例を抜粋)

Athenaテーブルの作成

  • AWSコンソールにログインし、Athenaサービス画面を開きます。
  • CyclonedX 1.4 SBOM フォーマットに沿う形式でAthenaテーブルを作成します。1
CREATE EXTERNAL TABLE IF NOT EXISTS `sbom_cyclone` (
  bomFormat string,
  specVersion string,
  version int,
  `metadata` struct<
    timestamp:string,
    component:struct<
      type:string,
      name:string,
      version:string
    >,
    properties: array<
      struct<
        name:string,
        value:string
      >
    >
  >,
  components array<
    struct<
      type:string,
      name:string,
      purl:string,
      version:string
    >
  >,
  vulnerabilities array<
    struct<
      id:string,
      affects: array<
        struct<
          ref:string
        >
      >
    >
  >
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://[bucket]/[prefix]/';

検索クエリの実行

  • コンポーネントの一覧化
SELECT 
  component.type AS type,
  component.name AS name,
  component.purl AS purl,
  component.version AS version
FROM sbom_cyclone, UNNEST(components) AS t (component);
  • CVEの一覧化2
SELECT 
  vulnerability.id AS CVE
FROM sbom_cyclone, UNNEST(vulnerabilities) AS t (vulnerability);

注意事項

  • 本記事は万全を期して作成していますが、お気づきの点がありましたら、ご連絡よろしくお願いします。
  • なお、本記事の内容を利用した結果及び影響について、筆者は一切の責任を負いませんので、予めご了承ください。
  1. Athenaのサービス仕様上、カラムにハイフンを指定することができなかったため、本記事ではbom-refはテーブルから除外しています。bom-refの値も取得したい場合、S3配置をトリガにJSON内のbom-refbom_refに加工するLambda関数を実行した上で、テーブル作成時のカラムにbom_refを指定する等の工夫が必要になりそうです。 2

  2. 脆弱性の影響を受けるコンポーネントを特定できるよう、vulnerabilitiesaffects配列内にbom-refの値が記載されます。脆弱性情報の確認はInspectorコンソールで充足できるとは思いつつ、Athena上からも分析したい場合は注釈1を参考にした実装が必要かと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0