parlayでSBOMの出力結果に脆弱性情報を出力してみた
おはようございます。
ゲームソリューション部のきだぱんです。
今回は、SBOMを、さらに情報で豊かにしてくれるSnykのオープンソースツール「parlay」を試してみたいと思います。
SBOMとは
こちらの記事に詳しく書かれています。
Snyk CLIとparlayのインストール
まずはじめに、必要なツールをインストールします。
※今回は、macOSで行なっていきます。
parlayはSnykの脆弱性情報を付与する機能があるため、先にSnykのコマンドラインツール(CLI)をインストールしておきましょう。
brew install snyk
次に、parlayをインストールします。
brew install parlay
- バイナリファイルをダウンロードする場合
GitHubリポジトリから、お使いのOS(Windows, macOS, Linuxなど)に合った実行ファイルをダウンロードしてパスの通った場所に配置します。
Snykとの連携設定
parlayがSnykの脆弱性情報を利用できるように、Snykアカウントと連携させる必要があります。
まずはSnyk CLIをSnykアカウントに接続します。以下のコマンドを実行すると、ブラウザが起動して認証を求められます。
snyk auth
APIトークンの取得
Snykのアカウント設定ページにアクセスします。
Auth Token
のセクションにあるKEYをコピーします。
コピーしたAPIトークンを、SNYK_TOKEN
という環境変数に設定します。
# "ここに取得したAPIトークンを貼り付け"の部分を書き換えて実行してください
export SNYK_TOKEN="ここに取得したAPIトークンを貼り付け"
parlayを使ってみる
Snyk CLIでSBOMをCycloneDX形式(JSON)で生成します。
# --formatで形式を指定し、>でファイルに出力します
snyk sbom --format=cyclonedx1.4+json > sbom test.json
プロジェクトの依存関係が記述されたsbom test.json
ファイルが作成されました。
この時点では、パッケージ名やバージョンといった基本的な情報しか含まれていません。
# 出力結果
{
"name": "snapdragon",
"SPDXID": "SPDXRef-60-snapdragon-0.8.2",
"versionInfo": "0.8.2",
"supplier": "NOASSERTION",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "MIT",
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
"referenceLocator": "pkg:npm/snapdragon@0.8.2"
}
]
},
...
いよいよparlayの出番です!
Snykの脆弱性情報を付与してみます。
parlay snyk enrich sbom-test.json > snyk-enriched-test.json
# 出力結果
{
"name": "snapdragon",
"SPDXID": "SPDXRef-60-snapdragon-0.8.2",
"versionInfo": "0.8.2",
# 省略
"downloadLocation": "NOASSERTION",
},
"vulnerabilities": [
{
"bom-ref": "",
"id": "SNYK-JS-SUBTEXT-81359",
"ratings": [
{
"source": {
"name": "Snyk",
"url": "https://security.snyk.io"
},
"score": 5.6,
"severity": "high",
"method": "CVSSv78",
"vector": "CVSS:3.4/AV:N..."
}
],
"cwes": [
400
],
vulnerabilities
という項目が追加され、各パッケージに存在する脆弱性の情報(深刻度や詳細へのリンクなど)が記載されていることがわかります。
まとめ
parlayを使えば最小限の情報しか持たないSBOMが、ライセンスや脆弱性情報を含むようになります。
SBOMは作成するだけでなく、そこに書かれた情報を基に「このライセンスは使って良いのか?」「深刻な脆弱性はないか?」といった意思決定に活用することが重要です。
Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。