SnykのSBOMツールを全部試してみた
健康のために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位になっています!
参照:情報セキュリティ10大脅威 2022:IPA 独立行政法人 情報処理推進機構
トレンドになっている背景としては、以下の要因があります。
- 効率的な開発を行うためにOSSなどの既存のプログラムやパッケージを利用してケースが多い
- セキュリティの重要性が提唱される中で、中小企業はリソースをセキュリティ対策に
十分に当てることができず、大企業とのセキュリティ格差が発生している
国内では、SBOM活用に向けて実証が進められている
日本では、経済産業省より今後の取り組みが発表され、効果が大きいと見込まれる
医療機器分野、⾃動⾞分野、ソフトウェア分野での実証が進められています。
参照:サイバー・フィジカル・セキュリティ確保に向けたソフトウェア管理⼿法等検討タスクフォースの検討の⽅向性
ソフトウェアサプライチェーン攻撃の対策として、今後更に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
フォーマット対応有無
すべてのツールが主要フォーマットに対応しています!
ツール名 | SPDX | Cyclone 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
が返ってくるので注意してください。
③SnykにSBOMを生成したいプロジェクトを登録します。
登録方法:Import a Project - Snyk User Docs
④必要項目を入力してTRYします。
※org_idはOrganization ID
を使用
※project_idは対象ファイルのProject ID
を使用
⑤エラーにならずにjsonが返ってきていれば成功です!
curlコマンドも生成してくれます
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
事前準備
- Snyk CLIをインストール
- Snyk CLIのユーザー認証
- snyk2spdxをインストール(npmが必要)
npm install snyk2spdx
- jsonデータの加工, 整形をするjqのインストール
brew install jq
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を使用します
Snyk脆弱性データベースを使用したスキャン結果がすぐ出力されます
Bomber
事前準備
- Bomberをインストール
- Snyk CLIをインストール
- Snyk CLIのユーザー認証
- SBOM APIかSBOM CLIで生成したSBOMをフォルダ名
nodejs-goof_sbom.json
で保存 - トークンを出力してシェル変数に入れます
snyk config get api SNYK_TOKEN="your-api-token"
脆弱性スキャン
スキャンを実行します
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ツールの操作方法の参考にして頂けたら幸いです。