LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

Snykのポイントを解説。どんな機能があるのか調べてみた

「安全なソフトウェア開発を、迅速に」を掲げているSnyk(スニーク)というサービスをご存じですか?

昨今注目を浴び始めているDevSecOpsに貢献する、セキュリティ対策ソリューションです。
実際のところSnykなるものはどんなものか、アジャイル開発センターのメンバーが調べてみました。

Snykとは?

まずは、Snykというサービスについて、公式サイトで確認してみましょう。
Snyk社の公式サイトのトップページで早速説明してくれています。

Find and automatically fix vulnerabilities in your code, open source dependencies, containers, and infrastructure as code -- all powered by Snyk's industry-leading security intelligence.

出典: Snyk | Developer security | Develop fast. Stay secure.

そういえば、Snyk社は日本にも支社がありました。頑張って翻訳しなくてOKですね。
ということで、日本語のSnyk社公式サイトのトップページに記載されている説明を確認してみましょう。

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

出典:【公式】Snyk株式会社のウェブサイトです

Snyk社が提供しているサービスは何ができるのか?

Snyk社は何かしらの脆弱性を検知するサービスを提供してくれていることはわかりましたが、実際に何ができるのかはまだよくわかりません。もう少し調べていきましょう。

どんな脆弱性が検知できるのか

Snyk社の英語サイトのトップページにある「Products」のプルダウンを見てみました。
どうやら、製品が4つあるようです。

それぞれ、提供されている製品の内容を掘り下げて確認してみると、下記エリアにおける脆弱性が検知できると記載されていました。結構すごいですね。

  • A.IaCで構築した/構築するインフラ
  • B.構築したコンテナイメージ
  • C.依存しているオープンソースライブラリ
  • D.案件向けにコーディングしたソースコード

どうやって導入するのか

やれることがわかったら、早速導入してみたくなりますよね?
ただ、こういうサービスはえてして新規に立ち上げる案件の最初の段階で、ここにこの手順を入れるといった段取りを考えないといけないものが多いです。絶賛開発中の案件やリリース済みのシステムへ導入しようとすると、最初に戻って全ての運用を考え直した方が早い、という判断になってしまう対応が必要なこともあります。

ところがSnyk社が提供している製品の場合、コマンドを提供していたりCI/CDツールの拡張機能を提供していたりするので、今の運用フローに組み込めるということだそうです。

実際、アジャイル開発センターでは、構築していたJenkinsにSnyk社が提供している拡張機能をインストールして、拡張機能を実行するジョブを定期実行することでSnykの特定コマンドを実行することができています。
後は、脆弱性が発見された時の対応フローを整備するだけで済みますね。
結局、運用フローが追加されていることにはそっと目をつぶります......。

検査結果はどのように確認するのか

検査というからには、当然のことながら結果が出力されます。
検査結果を確認する方法は、2022年6月7日現在、下記の2つを確認しています。

  • 指定したフォーマット(SARIF or JSON)もしくはデフォルトのフォーマットで出力される結果を確認する
  • レポート機能で確認する(※契約によっては確認不可)

今後、確認方法が追加されるかもしれませんが、特定のフォーマットで出力された結果であれば、契約を気にせず確認できる、ということですね。

Snyk社の製品で提供されている機能は?

脆弱性を検知する機能が提供されています。
脆弱性を検知するのがSnyk社の製品でしょう、ということでもう少し掘り下げましょう。

下記4つの機能が提供されています。

  1. Snyk Open Source
  2. Snyk Container
  3. Snyk Infrastructure as Code
  4. Snyk Code

Snyk Open Source

プロジェクト(≒システム)が依存しているオープンソースライブラリの脆弱性を検知する機能です。
上記「どんな脆弱性が検知できるのか」のうち、C.依存しているオープンソースライブラリのエリアに存在する脆弱性を検知します。

機能

  1. 依存しているオープンソースライブラリで、公開された脆弱性を含むバージョンを使用していないかをチェック
  2. 脆弱性を含むバージョンを使用している場合は検知する
  3. 検知されたライブラリに対して(公開されていれば)修正案を提供
    GitHub連携をしている場合は、修正した内容でのプルリクエストをボタン2つで作成可能

Snyk Container

公開しているシステムをデプロイしたり、開発環境・テスト環境として構築したりしたコンテナの脆弱性を検知する機能です。
上記「どんな脆弱性が検知できるのか」のうち、B.構築したコンテナイメージのエリアに存在する脆弱性を検知します。

機能

  1. コンテナイメージを構築する指示ファイル(DockerであればDockerfile)を対象に脆弱性をチェック
  2. イメージを作成した際に利用するベースイメージも含めて、脆弱性を検知
  3. 検知された脆弱性に対して(公開されていれば)修正案を提供
    環境を大きく変えてしまう可能性もあるため、修正案が複数ある場合は選択できるようになっている
    GitHub連携をしている場合は、選択した修正内容でのプルリクエストをボタン2つで作成できる

Snyk Infrastructure as Code

Terraformなどで作成した環境の脆弱性を検知する機能です。
上記「どんな脆弱性が検知できるのか」のうち、A.IaCで構築した/構築するインフラのエリアに存在する脆弱性を検知します。

機能

  1. 環境構築をする指示ファイル(Terraformであればtfファイル)を対象に脆弱性をチェック
  2. 「脆弱性を含む構築になっているか」や、「シークレットキーなど漏れたら影響が大きい情報が記載されている可能性がないか」などを検知
  3. 検知された内容に対して、修正案を提供

Snyk Code

案件ごとにコーディングしているソースの脆弱性を検知する機能です。
上記「どんな脆弱性が検知できるのか」のうち、D.案件向けにコーディングしたソースコードのエリアに存在する脆弱性を検知します。

機能

  1. コーディング中のプロジェクトを対象に脆弱性をチェック
  2. 脆弱性のある実装をしている箇所や、シークレットキーなど漏れたら影響が大きい情報が記載されている箇所を検知
  3. 検知された内容に対して、修正案を提供

残念ながら、Snyk Codeは自動修正をしてくれません。残念です。
ただ、できてしまうと、AIがコーディングできることになってしまいますから、仕方ないかもしれません。

脆弱性をチェックできるタイミング

4つの機能が提供されていることはわかりました。
となると、次は提供されている機能を利用して、脆弱性をチェックするタイミングを確認する必要がありますね。

IDE(統合開発環境)

Eclipseや、MSが提供しているVS CodeやVisual Studio、JetBrainsが提供しているIDEにプラグインが提供されています。
プラグインをインストールした後、意図的にチェックを実行することでSnyk CodeとSnyk Open Sourceのチェックが可能です。

CI/CD

JenkinsなどのCI/CDツールに拡張機能が提供されています。
拡張機能を導入して実行タスクとして組み込めば、ジョブとして実行が可能です。
実際に、アジャイル開発センターでも、構築していたJenkinsでジョブ実行を行っています。

リポジトリ

ソースコード管理のGitHubやコンテナ管理のDockerHubなどのリポジトリと連携が可能です。
アジャイル開発センターではまだ確認していませんが、リポジトリに反映したタイミングでGitHub Actionsの仕組みを利用して連携させれば、Snyk CodeやSnyk Open Sourceのチェックを自動化できるものと思われます。

最後に

保守開発しているソースコードであっても、IDEにプラグインを導入し、単体テスト実施前など特定のタイミングでSnyk Codeのチェックを行えば、今まで後続フェーズで検知していた脆弱性の早期検知が可能となりそうです。
また、今運用しているCI/CDフローに設定を追加していけば、脆弱性のチェックをしながらシステム運用することも可能になりそうです。

実際、本番稼働中のシステムに対して、Snyk Open Source(依存ライブラリの脆弱性チェック)をモニタリングする設定をすると、Snykの脆弱性DBが更新されて新しい脆弱性が検知されたら、脆弱性が検知されました!対応してください!とメールで連絡してくれ(Business契約ならメール通知は設定済みでした)、ダッシュボードで確認ができます。
2021年末に大きな話題となったLog4jで発覚した脆弱性も、Snyk Open Sourceのモニタリング機能でいち早く検知してくれて、メールで連絡を受け取ることができ、ダッシュボードでの確認も可能になります。

Snykで気になることがありましたら、下記「お問い合わせ」ボタンから、お気軽にお問い合わせください。

「Snyk(スニーク)」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ
関連サービス
Snyk(スニーク)