ビジネス

SnykのSBOMツールを全部試してみた

oyuchan

健康のために1日2食生活を始めましたoyuchanです!

最近、「SBOM」というワードをよく耳にしませんか?

本記事では今注目のSBOMとは何か?何で注目されているのか?をご説明します!
また、セキュリティプラットフォームであるSnykが提供しているSBOMツールも
全部試してみたので合わせてご紹介します!

SBOMについて

会社でPCの資産管理するときは、Excelなどにまとめる事が多いかと思いますが
そのOSSライブラリバージョン版がSBOMです。
自社がOSSライブラリでどんなものを使ってるかまとめた棚卸しリストのようなものです。

米国大統領令でSBOMが注目された

米国では「ソフトウェアのサプライチェーンセキュリティの強化」として
「各製品のソフトウェア部品表(SBOM(Software Bill of Materials))を購入者に
直接または公開Webサイトで提供すること」が求められています。

ソフトウェアサプライチェーン攻撃がトレンドになっている

そもそも ソフトウェアサプライチェーン攻撃とは、
本来侵入が難しいセキュリティレベルの高いターゲット組織に侵入するために、
比較的セキュリティレベルの低い取引先や子会社などの中小企業を経由して
ターゲット組織へ侵入する攻撃方法です。
経由元が使用しているOSSライブラリの脆弱性を利用して侵入をします。

IPA(独立行政法人 情報処理推進機構)の「情報セキュリティ10大脅威 2022」では、
ソフトウェアサプライチェーン攻撃は3位になっています!

スクリーンショット 2023-02-07 17.49.41.png (202.1 kB)

参照:情報セキュリティ10大脅威 2022:IPA 独立行政法人 情報処理推進機構


トレンドになっている背景としては、以下の要因があります。

  • 効率的な開発を行うためにOSSなどの既存のプログラムやパッケージを利用してケースが多い
  • セキュリティの重要性が提唱される中で、中小企業はリソースをセキュリティ対策に
    十分に当てることができず、大企業とのセキュリティ格差が発生している

国内では、SBOM活用に向けて実証が進められている

日本では、経済産業省より今後の取り組みが発表され、効果が大きいと見込まれる
医療機器分野、⾃動⾞分野、ソフトウェア分野での実証が進められています。

image.png (1.1 MB)

参照:サイバー・フィジカル・セキュリティ確保に向けたソフトウェア管理⼿法等検討タスクフォースの検討の⽅向性



ソフトウェアサプライチェーン攻撃の対策として、今後更にSBOMの注目度は高まっていくと予想されています!

2つのSBOMフォーマット

フォーマットも知っておきたいポイントです。
フォーマットの主流は2つあります。

SPDX

ISO/IEC JTC 1に、ISO/IEC 5962というバージョンでISO化(国際オープン標準)されたSBOMのフォーマットです。
SPDX WorkGroupが提供しています。
SPDXが標準とされているので、使用率が高いです。
※ISO/IEC JTC 1は独立した非政府標準化団体

Cyclone DX

xml/json形式の比較的軽量のSBOMフォーマットです。
アプリケーションのセキュリティの背景やサプライチェーンのコンポーネント分析に使用するために設計されており、
SPDXやSWIDタグと同様の目的を果たせるよう構成されています。

SnykのSBOMツール

SnykのSBOM関連のサービスは4つです。
SBOMの生成、脆弱性スキャンと役割に分けてご紹介します。

SBOMの生成

Snyk の開発者ファーストの API および CLI ツールで SBOM を生成し、
直接的な依存関係や推移的な依存関係を文書化できます。
有料版のみ使用可能です。

SBOM API

APIを使用して、ブラウザ or cURLからSBOMを出力できます。

SBOM CLI

Public Beta版が提供されており、CLIからSBOMを出力できます。

SBOMの脆弱性スキャン

SBOM チェッカー

  • SBOM の脆弱性をチェックする無料の Web ツール
  • Snyk のアカウントは不要で、 Snyk 脆弱性データベースで脆弱性情報を検索することができる
  • 連続したスキャンの回数制限あり
  • スキャン結果をダウンロードする事はできない

Bomber

  • SBOM の脆弱性をスキャンするSCAツール(ソフトウェア構成分析 Software Composition Analysis)
  • Snyk はプロバイダーとしてサポートされているため、
    Bomber を使いながらも Snyk 脆弱性データベースで脆弱性情報を検索することができる。
  • オープンソース、クローズドソースのどちらのSBOMもスキャンできる
  • スキャン結果はファイル出力可能

※2023年3月現在、SBOM APIはBeta版、SBOM CLIはPublic Beta版、SBOMチェッカー/Bomberはリリースされています。

参考:Snyk Launch 2022 のまとめ: Snyk Cloud、SBOM とレポート機能、およびカスタマーソリューションリソース - Qiita

フォーマット対応有無

すべてのツールが主要フォーマットに対応しています!

ツール名SPDXCyclone DX
SBOM API
SBOM CLI
SBOM チェッカー
Bomber ※Syftにも対応

SnykのSBOMツールを試してみる

今回では、脆弱性をわざと盛り込んでいるsnyk-labsのnodejs-goofを使用して、SBOMの作成と脆弱性チェックを行っています。

SBOM API

ブラウザからSBOMを生成

① SnykでAPI Keyを設定します。
設定方法: Authentication for API - Snyk User Docs

SnykAPIにアクセスして、①で設定したAPI Key を入力します
頭にToken をつけないと、401 Unauthorizedが返ってくるので注意してください。

スクリーンショット 2023-02-08 9.41.17.png (39.5 kB)
スクリーンショット 2023-02-08 9.40.21.png (91.4 kB)

③SnykにSBOMを生成したいプロジェクトを登録します。

登録方法:Import a Project - Snyk User Docs

④必要項目を入力してTRYします。

スクリーンショット 2023-02-17 18.37.44.png (227.1 kB)

※org_idはOrganization IDを使用
※project_idは対象ファイルのProject IDを使用

スクリーンショット 2023-02-08 9.30.36.png (658.3 kB)

⑤エラーにならずにjsonが返ってきていれば成功です!

スクリーンショット 2023-02-08 9.50.23.png (339.9 kB)

curlコマンドも生成してくれます

スクリーンショット 2023-02-08 9.51.33.png (200.5 kB)

curlでSBOMを生成

①ブラウザと同じ情報をシェル変数に入れます

ORG_ID="your-organization-id"
PROJECT_ID="your-project-id"
SNYK_TOKEN="your-api-token"
VERSION="2022-12-15%7Ebeta"

※APIトークン(SNYK_TOKEN)の頭にToken は不要です

②SBOMを出力します

curl -X GET "https://api.snyk.io/rest/orgs/${ORG_ID}/projects/${PROJECT_ID}/sbom?version=${VERSION}&format=cyclonedx%2Bjson" \
 -H "Accept: application/vnd.api+json" \
 -H "Authorization: Token ${SNYK_TOKEN}" \
 -H "Accept: application/vnd.cyclonedx+json"

エラーが出ず、jsonが出力されたら成功です!

SBOM CLI

事前準備

SBOMを生成

スキャン対象のフォルダに移動し、snyk test --json | npx snyk2spdx | jq を実行して出力します

※ファイル出力したい時はsnyk test --json | npx snyk2spdx --output=spdx.jsonを実行します

nodejs-goof % snyk test --json | npx snyk2spdx | jq
{
  "id": "SPDXRef-goof",
  "name": "goof",
  "specVersion": "SPDX-3.0",
  "profile": [
    "base",
    "vulnerabilities"
  ],
  "dataLicense": "CC0-1.0",
  "creator": "Organization: Snyk Ltd",
  "documentNamespace": "spdx.org/spdxdocs/goof-5179fa21-0fc2-498b-96f7-7f2f52f400eb",
  "description": "Snyk test result for project goof in SPDX SBOM format",
  "created": "2023-01-00T18:17:17Z",
  "vulnerabilities": [
    {
      "id": "SNYK-JS-ADMZIP-1065796",
      "name": "SNYK-JS-ADMZIP-1065796",
      "summary": "Directory Traversal",
      "details": "## Overview\n[adm-zip](https://www.npmjs.com/package/adm-zip) is a JavaScript implementation for zip data compression for NodeJS.\n\nAffected versions of this package are vulnerable to Directory Traversal. It could extract files outside the target folder.\n\n## Details\n\nA Directory Traversal attack (also known as path traversal) aims to access files and directories that are stored outside the intended folder. By manipulating files with \"dot-dot-slash (../)\" sequences and its variations, or by using absolute file paths, it may be possible to access arbitrary files and directories stored on file system, including application source code, configuration, and other critical system files.\n\nDirectory Traversal vulnerabilities can be generally divided into two types:\n\n- **Information Disclosure**: Allows the attacker to gain information about the folder structure or read the contents of sensitive files on the system.\n\n`st` is a module for serving static files on web pages, and contains a [vulnerability of this type](https://snyk.io/vuln/npm:st:20140206). In our example, we will serve files from the `public` route.\n\nIf an attacker requests the following URL from our server, it will in turn leak the sensitive private key of the root user.\n\n```\ncurl http://localhost:8080/public/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/root/.ssh/id_rsa\n```\n**Note** `%2e` is the URL encoded version of `.` (dot).\n\n- **Writing arbitrary files**: Allows the attacker to create or replace existing files. This type of vulnerability is also known as `Zip-Slip`. \n\nOne way to achieve this is by using a malicious `zip` archive that holds path traversal filenames. When each filename in the zip archive gets concatenated to the target extraction folder, without validation, the final path ends up outside of the target folder. If an executable or a configuration file is overwritten with a file containing malicious code, the problem can turn into an arbitrary code execution issue quite easily.\n\nThe following is an example of a `zip` archive with one benign file and one malicious file. Extracting the malicious file will result in traversing out of the target folder, ending up in `/root/.ssh/` overwriting the `authorized_keys` file:\n\n```\n2018-04-15 22:04:29 .....           19           19  good.txt\n2018-04-15 22:04:42 .....           20           20  ../../../../../../root/.ssh/authorized_keys\n```\n\n## Remediation\nUpgrade `adm-zip` to version 0.5.2 or higher.\n## References\n- [GitHub Commit](https://github.com/cthackers/adm-zip/commit/119dcad6599adccc77982feb14a0c7440fa63013)\n",
      "relationships": [
        {
          "affect": {
            "to": [
              "goof@1.0.1",
              "adm-zip@0.4.7"
            ],
            "type": "AFFECTS"
          },
          "foundBy": {
            "to": [
              "cthackers"
            ],
            "type": "FOUND_BY"
          },
          "suppliedBy": {
            "to": [
              "cthackers"
            ],
            "type": "SUPPLIED_BY"
          },
          "ratedBy": {
            "cwes": [
              22
            ],
            "rating": [
              {
                "method": "CVSS_3",
                "score": [
                  {
                    "base": 7.4,
                    "exploitability": null,
                    "impact": null
                  }
                ],
                "severity": "High",
                "vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N"
              }
            ],
            "to": [
              "cthackers"
            ],
            "type": "RATED_BY"
          }
        }
      ],
      "externalReferences": [
        {
          "category": "ADVISORY",
          "locator": "https://github.com/cthackers/adm-zip/commit/119dcad6599adccc77982feb14a0c7440fa63013"
        }
      ],
      "modified": "2021-02-15T17:04:18.111270Z",
      "published": "2021-02-15T17:04:18.109270Z"
    },

SBOM チェッカー

脆弱性スキャン

SBOM チェッカーにアクセスして、SBOMの情報を入力欄へ入れます
※SBOM CLIで出力したSBOMはSPDXバージョンがスキャン対象外だったので、SBOM APIで出力した Cyclone DX形式のSBOMを使用します

image.png (13.7 kB)

Snyk脆弱性データベースを使用したスキャン結果がすぐ出力されます

image.png (13.7 kB)

Bomber

bomber

事前準備

脆弱性スキャン

スキャンを実行します

bomber scan --provider snyk --token $SNYK_TOKEN nodejs-goof_sbom.json

ファイル出力する場合は、こちらのコマンドを実行します

bomber scan --provider snyk --token $SNYK_TOKEN nodejs-goof_sbom.json --output=json > filename.json`

 ██▄ ▄▀▄ █▄ ▄█ ██▄ ██▀ █▀▄
 █▄█ ▀▄▀ █ ▀ █ █▄█ █▄▄ █▀▄

DKFM - DevOps Kung Fu Mafia
https://github.com/devops-kung-fu/bomber
Version: 0.4.0

■ Ecosystems detected: npm
■ Scanning 565 packages for vulnerabilities...
■ Vulnerability Provider: Snyk (https://security.snyk.io) 

■ Files Scanned
    nodejs-goof_sbom.json (sha256:5a5896fafcd18bbcc69dcfcf15b8f1ca0b893989997971740aa3c0460fc5ee8b)
╭──────┬──────────────────────┬─────────┬──────────┬────────────────────────────────────┬────────╮
│ TYPE │ NAME                 │ VERSION │ SEVERITY │ VULNERABILITY                      │ EPSS % │
├──────┼──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│ npm  │ yargs-parser         │ 9.0.2   │ MODERATE │ SNYK-JS-YARGSPARSER-560381         │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 8.1.0   │ MODERATE │ SNYK-JS-YARGSPARSER-560381         │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ y18n                 │ 4.0.0   │ HIGH     │ SNYK-JS-Y18N-1021887               │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 3.2.1   │ HIGH     │ SNYK-JS-Y18N-1021887               │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ validator            │ 13.5.2  │ MODERATE │ SNYK-JS-VALIDATOR-1090599          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 13.5.2  │ MODERATE │ SNYK-JS-VALIDATOR-1090600          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 13.5.2  │ MODERATE │ SNYK-JS-VALIDATOR-1090602          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 13.5.2  │ MODERATE │ SNYK-JS-VALIDATOR-1090601          │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ unset-value          │ 1.0.0   │ HIGH     │ SNYK-JS-UNSETVALUE-2400660         │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ underscore           │ 1.9.1   │ MODERATE │ SNYK-JS-UNDERSCORE-1080984         │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ uglify-js            │ 3.13.9  │ MODERATE │ SNYK-JS-UGLIFYJS-1727251           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.8.29  │ MODERATE │ SNYK-JS-UGLIFYJS-1727251           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ typeorm              │ 0.2.24  │ HIGH     │ SNYK-JS-TYPEORM-590152             │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ st                   │ 0.2.4   │ MODERATE │ npm:st:20171013                    │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.2.4   │ MODERATE │ npm:st:20140206                    │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ set-value            │ 2.0.0   │ HIGH     │ SNYK-JS-SETVALUE-1540541           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.0.0   │ HIGH     │ SNYK-JS-SETVALUE-450213            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.4.3   │ HIGH     │ SNYK-JS-SETVALUE-450213            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.4.3   │ HIGH     │ SNYK-JS-SETVALUE-1540541           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ semver               │ 1.1.4   │ MODERATE │ npm:semver:20150403                │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ qs                   │ 6.5.2   │ HIGH     │ SNYK-JS-QS-3153490                 │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.4.2   │ HIGH     │ SNYK-JS-QS-3153490                 │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.4.2   │ HIGH     │ npm:qs:20170213                    │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.2.4   │ HIGH     │ SNYK-JS-QS-3153490                 │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.2.4   │ HIGH     │ npm:qs:20170213                    │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ path-parse           │ 1.0.5   │ MODERATE │ SNYK-JS-PATHPARSE-1077067          │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ npmconf              │ 0.0.24  │ HIGH     │ npm:npmconf:20180512               │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ negotiator           │ 0.4.9   │ HIGH     │ npm:negotiator:20160616            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.2.8   │ HIGH     │ npm:negotiator:20160616            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.5.3   │ HIGH     │ npm:negotiator:20160616            │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ ms                   │ 0.6.2   │ MODERATE │ npm:ms:20151024                    │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.6.2   │ LOW      │ npm:ms:20170412                    │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.7.3   │ LOW      │ npm:ms:20170412                    │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.7.1   │ LOW      │ npm:ms:20170412                    │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mquery               │ 1.6.3   │ HIGH     │ SNYK-JS-MQUERY-1089718             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.6.3   │ HIGH     │ SNYK-JS-MQUERY-1050858             │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mpath                │ 0.1.1   │ MODERATE │ SNYK-JS-MPATH-1577289              │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mongoose             │ 4.2.4   │ MODERATE │ npm:mongoose:20160116              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.2.4   │ MODERATE │ SNYK-JS-MONGOOSE-472486            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.2.4   │ MODERATE │ SNYK-JS-MONGOOSE-1086688           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.2.4   │ HIGH     │ SNYK-JS-MONGOOSE-2961688           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mongodb              │ 2.0.46  │ HIGH     │ SNYK-JS-MONGODB-473855             │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ moment               │ 2.15.1  │ MODERATE │ npm:moment:20161019                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.15.1  │ LOW      │ npm:moment:20170905                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.15.1  │ HIGH     │ SNYK-JS-MOMENT-2440688             │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mixin-deep           │ 1.3.1   │ HIGH     │ SNYK-JS-MIXINDEEP-450212           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ minimist             │ 0.0.10  │ MODERATE │ SNYK-JS-MINIMIST-559764            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.2.0   │ MODERATE │ SNYK-JS-MINIMIST-559764            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.8   │ MODERATE │ SNYK-JS-MINIMIST-559764            │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.2.0   │ LOW      │ SNYK-JS-MINIMIST-2429795           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.10  │ LOW      │ SNYK-JS-MINIMIST-2429795           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.2.5   │ LOW      │ SNYK-JS-MINIMIST-2429795           │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.8   │ LOW      │ SNYK-JS-MINIMIST-2429795           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ minimatch            │ 3.0.4   │ MODERATE │ SNYK-JS-MINIMATCH-3050818          │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mime                 │ 1.3.4   │ LOW      │ npm:mime:20170907                  │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.2.11  │ LOW      │ npm:mime:20170907                  │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ mem                  │ 1.1.0   │ MODERATE │ npm:mem:20180117                   │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ marked               │ 0.3.5   │ MODERATE │ SNYK-JS-MARKED-2342082             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ MODERATE │ npm:marked:20170815-1              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ MODERATE │ SNYK-JS-MARKED-174116              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ MODERATE │ SNYK-JS-MARKED-451540              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ MODERATE │ SNYK-JS-MARKED-584281              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ MODERATE │ SNYK-JS-MARKED-2342073             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ HIGH     │ npm:marked:20180225                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ HIGH     │ npm:marked:20150520                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ HIGH     │ npm:marked:20170112                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ HIGH     │ npm:marked:20170907                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.3.5   │ HIGH     │ npm:marked:20170815                │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ lodash               │ 4.17.4  │ MODERATE │ SNYK-JS-LODASH-1018905             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ MODERATE │ SNYK-JS-LODASH-73639               │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ MODERATE │ npm:lodash:20180130                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ MODERATE │ SNYK-JS-LODASH-1018905             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ MODERATE │ SNYK-JS-LODASH-73639               │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ HIGH     │ SNYK-JS-LODASH-73638               │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ HIGH     │ SNYK-JS-LODASH-567746              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ HIGH     │ SNYK-JS-LODASH-608086              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ HIGH     │ SNYK-JS-LODASH-73638               │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ HIGH     │ SNYK-JS-LODASH-450202              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ HIGH     │ SNYK-JS-LODASH-567746              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ HIGH     │ SNYK-JS-LODASH-608086              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.4  │ HIGH     │ SNYK-JS-LODASH-1040724             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ HIGH     │ SNYK-JS-LODASH-450202              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.17.10 │ HIGH     │ SNYK-JS-LODASH-1040724             │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ kind-of              │ 6.0.2   │ LOW      │ SNYK-JS-KINDOF-537849              │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ kerberos             │ 0.0.24  │ HIGH     │ SNYK-JS-KERBEROS-568900            │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ json-schema          │ 0.2.3   │ HIGH     │ SNYK-JS-JSONSCHEMA-1920922         │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ jquery               │ 2.2.4   │ MODERATE │ SNYK-JS-JQUERY-567880              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.2.4   │ MODERATE │ SNYK-JS-JQUERY-565129              │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.2.4   │ MODERATE │ npm:jquery:20150627                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.2.4   │ MODERATE │ SNYK-JS-JQUERY-174006              │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ istanbul-reports     │ 1.4.0   │ MODERATE │ SNYK-JS-ISTANBULREPORTS-2328088    │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ ini                  │ 1.1.0   │ HIGH     │ SNYK-JS-INI-1048974                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.3.5   │ HIGH     │ SNYK-JS-INI-1048974                │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ hosted-git-info      │ 2.6.0   │ MODERATE │ SNYK-JS-HOSTEDGITINFO-1088355      │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ highlight.js         │ 9.18.1  │ MODERATE │ SNYK-JS-HIGHLIGHTJS-1048676        │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 9.18.1  │ MODERATE │ SNYK-JS-HIGHLIGHTJS-1045326        │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ hbs                  │ 4.0.4   │ LOW      │ SNYK-JS-HBS-1566555                │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ handlebars           │ 4.0.11  │ MODERATE │ SNYK-JS-HANDLEBARS-567742          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ MODERATE │ SNYK-JS-HANDLEBARS-1279029         │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ MODERATE │ SNYK-JS-HANDLEBARS-1279029         │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ MODERATE │ SNYK-JS-HANDLEBARS-567742          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ HIGH     │ SNYK-JS-HANDLEBARS-534478          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-534478          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ HIGH     │ SNYK-JS-HANDLEBARS-469063          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ HIGH     │ SNYK-JS-HANDLEBARS-480388          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-173692          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-174183          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-469063          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-480388          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ HIGH     │ SNYK-JS-HANDLEBARS-1056767         │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ HIGH     │ SNYK-JS-HANDLEBARS-1056767         │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.11  │ CRITICAL │ SNYK-JS-HANDLEBARS-534988          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.0.14  │ CRITICAL │ SNYK-JS-HANDLEBARS-534988          │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ fresh                │ 0.2.4   │ HIGH     │ npm:fresh:20170908                 │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ file-type            │ 8.1.0   │ HIGH     │ SNYK-JS-FILETYPE-2958042           │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ express-fileupload   │ 0.0.5   │ MODERATE │ SNYK-JS-EXPRESSFILEUPLOAD-2635697  │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.5   │ MODERATE │ SNYK-JS-EXPRESSFILEUPLOAD-2635946  │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.5   │ HIGH     │ SNYK-JS-EXPRESSFILEUPLOAD-595969   │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.0.5   │ HIGH     │ SNYK-JS-EXPRESSFILEUPLOAD-473997   │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ ejs                  │ 0.8.8   │ MODERATE │ SNYK-JS-EJS-1049328                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.8.8   │ MODERATE │ npm:ejs:20161130-1                 │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.0.0   │ MODERATE │ npm:ejs:20161130-1                 │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.0.0   │ MODERATE │ npm:ejs:20161130                   │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.8.8   │ MODERATE │ npm:ejs:20161130                   │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.0.0   │ MODERATE │ SNYK-JS-EJS-1049328                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.0.0   │ HIGH     │ npm:ejs:20161128                   │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 1.0.0   │ HIGH     │ SNYK-JS-EJS-2803307                │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.8.8   │ HIGH     │ npm:ejs:20161128                   │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.8.8   │ HIGH     │ SNYK-JS-EJS-2803307                │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ dustjs-linkedin      │ 2.5.0   │ HIGH     │ SNYK-JS-DUSTJSLINKEDIN-1089257     │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 2.5.0   │ HIGH     │ npm:dustjs-linkedin:20160819       │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ dicer                │ 0.3.0   │ HIGH     │ SNYK-JS-DICER-2311764              │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ decode-uri-component │ 0.2.0   │ HIGH     │ SNYK-JS-DECODEURICOMPONENT-3149970 │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ debug                │ 2.2.0   │ LOW      │ npm:debug:20170905                 │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ bl                   │ 2.2.0   │ HIGH     │ SNYK-JS-BL-608877                  │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ async                │ 2.6.3   │ HIGH     │ SNYK-JS-ASYNC-2441827              │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ ansi-regex           │ 2.1.1   │ HIGH     │ SNYK-JS-ANSIREGEX-1583908          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 5.0.0   │ HIGH     │ SNYK-JS-ANSIREGEX-1583908          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 3.0.0   │ HIGH     │ SNYK-JS-ANSIREGEX-1583908          │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 4.1.0   │ HIGH     │ SNYK-JS-ANSIREGEX-1583908          │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ ajv                  │ 6.10.2  │ HIGH     │ SNYK-JS-AJV-584908                 │ N/A    │
│      ├──────────────────────┼─────────┼──────────┼────────────────────────────────────┼────────┤
│      │ adm-zip              │ 0.4.7   │ HIGH     │ SNYK-JS-ADMZIP-1065796             │ N/A    │
│      │                      ├─────────┼──────────┼────────────────────────────────────┼────────┤
│      │                      │ 0.4.7   │ CRITICAL │ npm:adm-zip:20180415               │ N/A    │
╰──────┴──────────────────────┴─────────┴──────────┴────────────────────────────────────┴────────╯

Total vulnerabilities found: 143

╭──────────┬───────╮
│ RATING   │ COUNT │
├──────────┼───────┤
│ CRITICAL │     3 │
├──────────┼───────┤
│ HIGH     │    72 │
├──────────┼───────┤
│ MODERATE │    55 │
├──────────┼───────┤
│ LOW      │    13 │
╰──────────┴───────╯

NOTES:

1. The list of vulnerabilities displayed may differ from provider to provider. This list
   may not contain all possible vulnerabilities. Please try the other providers that bomber
   supports (osv, ossindex, snyk)
2. EPSS Percentage indicates the % chance that the vulnerability will be exploited. This
   value will assist in prioritizing remediation. For more information on EPSS, refer to
   https://www.first.org/epss/

SBOMに含まれる脆弱性の一覧が出力されました!

まとめ

最後まで読んでいただきありがとうございました!
Snykを使用してSBOMの生成・脆弱性スキャンを簡単に行うことが出来ました!
SBOMの具体的なイメージを掴んだり、Snyk SBOMツールの操作方法の参考にして頂けたら幸いです。

AUTHOR
oyuchan
oyuchan
記事URLをコピーしました