Snykは、Snyk株式会社が提供するデベロッパーファーストのセキュリティプラットフォームである。

Snyk(スニーク)は、安全な開発を迅速に行うことを支援しています。コードやオープ
ンソースとその依存関係、コンテナやIaC(Infrastructure as Code)における脆弱性を見
つけるだけでなく、優先順位をつけて自動的に修正します。
Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベ
ロッパーが簡単に使うことができます。

無償版でどの程度利用できるのかの確認も含めて使ってみる。

導入

ユーザ登録

https://app.snyk.io/login

外部サービスのアカウントを利用して利用することができる。

外部サービスは、GitHub、Google、BitBucket、Azure AD、Docker ID、SSO が選択可能。

今回は、GitHubのリポジトリ内のコードの脆弱性検知をしたい目的があったので、GitHubを選択した。

img.png

リポジトリ選択

画面に沿って各種設定を選択していくと、GitHub上のリポジトリを選択する画面が表示される。

脆弱性検知したい対象のリポジトリを選択する。(あとからも追加可能)

img_6.png

今回は、Synkを試す用のリポジトリを新規作成しておいたのでそちらを選択。

https://github.com/masahosono/snyk_demo

Snyk Web UI

ヘッダーからダッシュボードを開くと、脆弱性のあるプロジェクトの一覧が表示される。

img_9.png

プロジェクトページを開くと、検知された脆弱性の一覧が表示される。

重大度は、4段階あって、Criticalが一番高い。

  • Critical
  • High
  • Medium
  • Low

また、プロジェクトの設定や脆弱性検知のスナップショットの確認もこの画面から行える。

img_10.png

脆弱性ページでは、脆弱性の詳細や修正方法が確認できる。

https://security.snyk.io/vuln/SNYK-JS-NTHCHECK-1586032

img_11.png

Snyk CLI

CLIでプロジェクトの脆弱性テストを行うことができる。

インストール

インストール手順に沿って、インストールする。

macOSやlinuxの場合、homebrewを利用してインストールすることが可能。

$ brew tap snyk-free-trial/tap
$ brew install snyk-free-trial

認証

初回のみ、CLIでSnykアカウントを利用するための認証が必要。

コマンド実行後、ブラウザページに遷移するのでCLIで利用認証を行う。

$ snyk-free-trial auth

テスト

オープンソースの脆弱性とライセンスについてテストが行える。

$ snyk-free-trial test                        

Testing snyk_demo...

Tested 1173 dependencies for known issues, found 1 issue, 1 vulnerable path.


Issues with no direct upgrade or patch:
  ✗ Regular Expression Denial of Service (ReDoS) [High Severity][https://security.snyk-free-trial.io/vuln/SNYK-JS-NTHCHECK-1586032] in [email protected]
    introduced by [email protected] > @svgr/[email protected] > @svgr/[email protected] > [email protected] > [email protected] > [email protected]
  This issue was fixed in versions: 2.0.1

Organization:      masahosono
Package manager:   npm
Target file:       package-lock.json
Project name:      snyk_demo
Open source:       no
Project path:      ****
Licenses:          enabled

GitHub PullRequest

プルリクエストを作成すると、Snykによる脆弱性チェックが行われる。

修正した内容に脆弱性が含まれていた場合、Snykによるtestが失敗となる。

img_1.png

修正して脆弱性が解消されると、Snykによるtestは成功となる。

img_2.png