0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】Snykで脆弱性診断を試してみた(snyk test / snyk code test でSCA / SAST)

0
Last updated at Posted at 2026-03-28

はじめに

ライブラリの依存関係やソースコードの脆弱性を診断するSCA$^{※1}$/SAST$^{※2}$ツールとして Snyk Open Source/Snyk Code を試してみたので、その備忘録

  • 必要プログラム(Snyk以外)の確認とSnykのインストール
  • Snyk-labで提供されている被検知用プログラム(Node.js)のフォーク
  • CLIでのテスト実行
  • Webでのテスト実行
  • Workflowでのテスト実行

※1 SCA(Software Composition Analysis) とは、アプリケーションが利用しているライブラリや依存関係の脆弱性を検査する手法
※2 SAST(Static Application Security Testing) とは、プログラムを実行せずに、ソースコードを解析して脆弱性を見つける手法
※今回使用したサンプルは、意図的に脆弱な依存関係を含んでいる為、多数の脆弱性が検出される
※本記事では脆弱性の検出と基本的な対応手順の確認が目的


対象読者

  • Snyk の初学者(自分も含めて)

使用環境、アプリケーション、サービス

  • Windows 11 (25H2)
  • Powershell 7
  • git
  • github
  • snyk$^{※1}$
  • node/npm$^{※2}$

※1 事前のアカウント作成が必要(Freeプランあり、今回Freeプラン利用)
※2 被検知環境の構築で必要


手順

1. Powershell のバージョン確認

Powershell
$PSVersionTable.PSVersion

バージョン5 でも後続の操作は可能と思われるが、今回は最新のPowershellを利用する。
バージョン7 は以下の備忘を参照。

2. 必要プログラムの確認(Snyk以外)

Powershell上で以下コマンドにて必要なプログラムがインストールされているかを確認して、最新のバージョンをインストールしておく
※インストールされていない場合はコマンドエラーとなる

Powershell
git --version  #git のバージョン確認
node --version #node.js のバージョン確認
npm --version  #npm のバージョン確認

git1
node および npm2 ←被検知プログラムにて必要

3. Snykのインストール

npmコマンドにてSnykのインストールを実行

Powershell
npm install -g snyk

実行すると以下のような出力となる。
warnは今回のとは関係がないので無視
snyk1.png

Synkインストールバージョンの確認
今回のは1.1301.2

Powershell
snyk --version

snyk2.png

4. Snyk-labで提供している被検知プログラム(Node.js)のフォーク

i. ブラウザで以下URLを開き、Forkをクリック(githubログイン済であれば iii.へ)
https://github.com/snyk-labs/nodejs-goof

snyk_20260328_01.png

ii. githubにログイン
image.png

iii. Create a new Forkを選択
snyk_20260328_02.png

iv. リポジトリやオプションはデフォルトで作成
snyk_20260328_03.png

v. 作成完了
snyk_20260328_04.png

5. リポジトリのクローンと依存関係インストール

Snyk用のフォルダを作成し、forkしたリポジトリのcloneを作成し、必要なライブラリを取得する
xxxxx は自分のgithubアカウント

Powershell
mkdir c:\snyk
cd c:\snyk
git clone https://github.com/xxxxx/nodejs-goof.git
cd nodejs-goof
npm install

フォルダ作成 ~ npm installまで
snyk_20260328_05.png

snyk_20260328_06.png

6. Snyk CLIの実行

Snykへの認証を行い、脆弱性テストを実行する

Powershell
snyk auth       #認証
snyk test       #SCA
snyk code test  #SAST

snyk auth コマンド実行後にgithubとのOAuth連携が始まる
GitHubアカウントの権限をSnykに許可するための認可処理(OAuth)が実行される
snyk_20260328_07.png

Grant app accessをクリック
snyk_20260328_08.png

認証完了
snyk_20260328_09.png

snyk auth コマンド実行後のPowershell画面
snyk_20260328_10.png

snyk test コマンド実行後のPowershell画面
多数のパッケージに脆弱性が検知された結果が出力されている。
snyk_20260328_11.png
snyk_20260328_12.png

snyk code test コマンド実行後のPowershell画面
コードの脆弱性が22件(High:3/Medium:12/Low:7)指摘されている
snyk_20260329_05.png
snyk_20260329_06.png

7. 脆弱性の対応(ライブラリ更新)

snyk auth の脆弱性結果の先頭にあった adm-zip@0.5.2 について対応してみる
snyk_20260328_13.png

Powershell
cd C:\snyk\nodejs-goof
cat package.json

snyk auth で脆弱性の検知されたライブラリ adm-zip@0.4.7 が指定されている
snyk_20260328_14.png

依存関係の確認とライブラリの更新

Powershell
npm ls adm-zip
npm install adm-zip@0.5.2

実行結果

snyk_20260328_15.png

ライブラリ更新の確認と snyk test コマンドの再実行

Powershell
npm ls adm-zip
snyk test

実行結果
ライブラリは adm-zip@0.5.2 が出力されて正常に更新されている
テスト結果はadm-zip が消えて、2番目に表示されていた body-parser が先頭の脆弱性になっている
image.png

今回はnpm installで直接更新したが、実際はpackage.jsonを直接編集し、
変更内容を明示した上でnpm installする方が望ましい

8. Snyk Webでの実行

Snyk ログイン後、5 にて フォークしたgithub リポジトリをプロジェクトへインポートする
snyk_20260329_01.png

snyk_20260329_02.png

プロジェクトにリポジトリ追加した場合はsnyk test/snyk code test以外の Dockerfile のチェックも行われていた
snyk_20260329_03b.png

package.jsonのリンクをクリックすると CLIと同様に adm-zip@0.4.7 が指摘されている
snyk_20260329_04b.png

Code analysisのリンクをクリックすると CLIと同様に 22件の脆弱性 がコード付きで指摘されている
snyk_20260329_07.png

9. Personal Access Token の発行

githubworkflowと連携させるためのtokenを作成する
左下のアカウントをクリックし、Account settings をクリックする
snyk_20260330_01.png

Personal Access Token ボタンをクリック
snyk_20260330_02.png

token名期限を入力し、Generate new token ボタンををクリック
snyk_20260330_03.png

発行されたtokenはメモしておく
snyk_20260330_04.png

tokenは後から見ることができないので注意

今回作成したtokenが表示されている
snyk_20260330_05.png

10.github workflow の設定

nodejs-goof リポジトリの workflow には以下の4本のyamlが入っていた

  1. codeql-analysis.yml     GitHub公式の静的解析(CodeQL)
  2. snyk-code-manual.yml   Snyk Code による手動ソースコードスキャン
  3. snyk-code.yml       Snyk Code による自動ソースコードスキャン
  4. snyk-test-sarif.yml      Snyk test による依存関係の脆弱性チェック

※2 ~ 4の Snykworkflow を動かすには環境変数(SNYK_TOKEN)の登録が必要となり、Setting で設定を進めていく
snyk_20260330_05.5.png

Settings をクリック
snyk_20260330_06.png

Secrets and variablesActionsNew repository secret をクリック
snyk_20260330_07.png

Name:SNYK_TOKEN
Secret:9で取得したtoken情報を入力する
snyk_20260330_08.png

SNYK_TOKEN で登録されている
snyk_20260330_09.png

Actions をクリックし、workflow を有効化する
snyk_20260330_10.png

今回は snyk test のみ試すので、それ以外は Disable にする
snyk_20260330_11.png

package.json を1行だけ書き換えて commitpush
snyk_20260330_12.png

workflow が完了している
snyk_20260330_13.png

▼test snyk をクリックするとsnyk test結果が出力され、146件の脆弱性が検知されている。
errorwarning については調べてから更新
snyk_20260330_14.png

SecutityCode scanning で146件の脆弱性の詳細が確認できる
snyk_20260331_01.png

68 でも取り上げたadm-zipについて確認すると、Web画面で表示されていたScoreがなかったが同様の内容が出力されていた。
snyk_20260331_02.png

今後のステップ

  • IDEとの連携(VSCode等)
  • CI/CDへの組み込み(snyk monitor)
  1. https://qiita.com/takeru-hirai/items/4fbe6593d42f9a844b1c

  2. https://qiita.com/gahoh/items/8444da99a1f93b6493b4

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?