Snykで特定の脆弱性(Issue)を無視してみた

2022.06.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

Snykは、ソースコードをスキャンしてOSSやコードなどに含まれる脆弱性を独自のデータベースやインテリジェンスをもとに検出することができるセキュリティプラットフォームです。

今回は、Snykで特定の脆弱性(Issue)を無視してみました。

特定の脆弱性を無視したい

Snykでは検出されたOSSなどの脆弱性はIssueとして扱われ、バージョンアップなどにより対応されるまで解決されません。下記のように脆弱性が検出されたままとなります。

しかし開発/運用をしているシステムへの影響が大きくない脆弱性の場合には、この脆弱性を一時的または恒久的に無視したい場合があります。そこで特定の脆弱性(Issue)を無視する方法を確認してみました。

やってみた

Ignore Typeには3種類ある

対象のプロジェクト詳細を開き、無視したい脆弱性で[Ignore]をクリックします。

するとダイアログが開き、Ignore Typeを次の3種類から選びます。

  • Not vulnerable(脆弱性ではない)
  • Ignore temporarily(一時的に無視する)
  • Ignore permanently(恒久的に無視する)

Not vulnerableでは、[Ignore for (days)]で無視する日数とコメントを指定します。

Ignore temporarilyでは、コメントに加えて、いつまで無視するかを、日数指定または[Until fix is available](修正が利用可能になるまで)のいずれかから選べます。

[Until fix is available]をチェックした場合は日数が必要です。

[Until fix is available]をチェックした場合は日数指定は不要です。

Ignore permanentlyでは、日数指定は不要です。

このうちIgnore temporarilyの[Until fix is available]は、脆弱性の修正をウォッチする手間が省け、とても便利だと思いました。

Ignoreしてみる

Not vulnerable14日間でIgnoreしてみました。するとIssueの一覧に表示されなくなりました。

[STATUS]で[Ignored]にチェックを入れます。するとIgnoreした脆弱性が再度表示されるようになりました。また[Unignore]および[Edit Ignore]というボタンからIgnoreの変更や解除もできるようです。

[Edit Ignore]をクリックすると先ほどと同じダイアログから変更できます。

脆弱性をIgnoreした状態で、Snyk Node Actionで該当プロジェクトをスキャンしてみます。下記のようなWorkflowを使用します。(詳細は前回エントリ参照)

.github/workflows/ci.yml

name: Example workflow for Node using Snyk
on: push
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: Run Snyk to check for vulnerabilities
        uses: snyk/actions/node@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

Workflowを実行すると、IgnoreしたIssue以外に脆弱性が無かったため、Successしました。

ここで[Unignore]をクリックしてIgnoreを解除します。

再度Workflowを実行すると、今度はIgnore解除した脆弱性が検出されてCIが落ちました。想定通りの動きです。

おわりに

Snykで特定の脆弱性(Issue)を無視してみました。

Snyk Node ActionなどによりCI WorkflowにSnykのチェックを導入している場合に、特定の脆弱性をどうしても無視したい場合があると思うのでそのような場合に便利ですね。

以上