Snykは、Snyk株式会社が提供するデベロッパーファーストのセキュリティプラットフォームである。
Snyk(スニーク)は、安全な開発を迅速に行うことを支援しています。コードやオープ
ンソースとその依存関係、コンテナやIaC(Infrastructure as Code)における脆弱性を見
つけるだけでなく、優先順位をつけて自動的に修正します。
Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベ
ロッパーが簡単に使うことができます。
無償版でどの程度利用できるのかの確認も含めて使ってみる。
導入
ユーザ登録
外部サービスのアカウントを利用して利用することができる。
外部サービスは、GitHub、Google、BitBucket、Azure AD、Docker ID、SSO が選択可能。
今回は、GitHubのリポジトリ内のコードの脆弱性検知をしたい目的があったので、GitHubを選択した。
リポジトリ選択
画面に沿って各種設定を選択していくと、GitHub上のリポジトリを選択する画面が表示される。
脆弱性検知したい対象のリポジトリを選択する。(あとからも追加可能)
今回は、Synkを試す用のリポジトリを新規作成しておいたのでそちらを選択。
https://github.com/masahosono/snyk_demo
Snyk Web UI
ヘッダーからダッシュボードを開くと、脆弱性のあるプロジェクトの一覧が表示される。
プロジェクトページを開くと、検知された脆弱性の一覧が表示される。
重大度は、4段階あって、Criticalが一番高い。
- Critical
- High
- Medium
- Low
また、プロジェクトの設定や脆弱性検知のスナップショットの確認もこの画面から行える。
脆弱性ページでは、脆弱性の詳細や修正方法が確認できる。
https://security.snyk.io/vuln/SNYK-JS-NTHCHECK-1586032
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が失敗となる。
修正して脆弱性が解消されると、Snykによるtestは成功となる。