SnykOpenSourceで始めるセキュリティチェック #Snyk

SnykOpenSourceで始めるセキュリティチェック #Snyk

SnykでOpenSourceの脆弱性をチェックしよう!
Clock Icon2025.03.21

おはようございます( ◜◡◝ )
ゲームソリューション部/業務効率化ソリューション部のきだぱんです。

脆弱性管理ツールのSnykというSaas製品をご存知でしょうか。
近年、サプライチェーン攻撃が増加する中、オープンソースの依存関係管理は重要性を増しています。
本記事では、開発者向けセキュリティツールSnykのOpenSource機能について書いていきたいと思います。

Snykとは

そもそもSnykとは、何なのか。 Snyk(スニーク)はデベロッパーファーストのセキュリティプラットフォームです。
Snykは、コードやオープンソースとその依存関係、コンテナやIaC(Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。 Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベロッパーが簡単に使うことができます。
Snyk は、Java、.NET、JavaScript、Python、Golang、PHP、C/C++、Ruby、Scalaなど、多くの言語とツールをサポートしています。

また、Docker、Terraform、k8s、Infrastructure as Codeのファイルスキャンもサポートしています。
https://snyk.io/jp/

SnykOpenSourceとは

私たちが日々開発しているアプリケーションの実に90%が、オープンソースコードで構成されています。
開発者がオープンソースを活用することで開発スピードは確かに加速しますが、それと同時に気付かないうちにセキュリティの脆弱性や法的リスクを組織内に持ち込んでしまう可能性があります。
このジレンマを解決するツールとして注目を集めているのが、開発者視点で設計されたSCA(Software Composition Analysis)ツール「Snyk」です。
Snykは、開発ライフサイクルの早期段階から、オープンソースコードの脆弱性を自動検出し、効率的な修正を支援する画期的なプラットフォームとして、多くの組織で採用されています。

Snykには、Snyk Open Source、Snyk Container、Snyk Infrastructure as Code、Snyk Codeの 4つの製品があります。

SnSCAkdpn031

その中の一つがOpenSourceを対象とした機能です。
他のSCAソリューションとは異なり、Snyk Open Sourceは開発者を念頭に置いて構築されており、開発者の ワークフローにシームレスに統合することができます。

他の機能についての記事はこちら。
https://dev.classmethod.jp/articles/snyk-code-kdpn-241204/
https://dev.classmethod.jp/articles/snyk-iac-visual-studio-code-avaiable-overview/
https://dev.classmethod.jp/articles/snyk-container-dockerfile/

SnykOpenSourceの対象

対象パッケージは以下です。

Language Snyk Open Source
C/C++
Dart and Flutter
Elixir
Go
Java and Kotlin
JavaScript
.NET
PHP
Python
Ruby
Rust
Scala
Swift and Objective-C
TypeScript

https://docs.snyk.io/supported-languages-package-managers-and-frameworks

Snykに連携していく

脆弱性結果を見る前に、パッケージを連携していきます。
Snykではさまざまな連携が可能です。
snyk-score  2024-10-24

今回は、GitLabと連携しまして、脆弱性を多く含むものをスキャン対象とします。

https://gitlab.com/gitlab236/juice-shop

脆弱性を確認する

実際に、Snyk UI上で、脆弱性をチェックしてみましょう。

まずは脆弱性スキャン対象のプロジェクトを表示する画面[project]で確認していきましょう。

  • パッケージ名
  • CWE(共通脆弱性タイプ)
  • CVSSのスコア※
  • 問題のあるバージョン番号
  • Fixされたバージョン
    が表示されます。

SnSCAkdpn038

※CVSSについて
https://www.ipa.go.jp/security/vuln/scap/cvss.html

それぞれの脆弱性情報もチェックできます。
SnSCAkdpn039

https://security.snyk.io/vuln/SNYK-JS-BODYPARSER-7926860

そして、Snyk OSSでは脆弱性の自動修正機能を提供します。
具体的には、脆弱性が検出された依存パッケージに対して、セキュアなバージョンへの更新を自動提案します。
「Fix these vulnerabilities」ボタンを選択することで、安全なバージョンへの更新を含むMarge requestが自動生成されます。

SnSCAkdpn032
SnSCAkdpn033

今回は連携先がGitLabでしたので、MargeRequestが作成されました。

SnSCAkdpn034

また、CLIのSnyk testコマンドでも、詳細を確認出来ます。(以下結果は一部です。)

# 主要なコマンド
$ snyk test        # 脆弱性スキャン
$ snyk monitor     # 継続的なモニタリング
$ snyk ignore      # 特定の脆弱性を無視

以下は、Snyk testの結果です。

が表示されます。

$ snyk test

Testing /.../goof...

Tested dependencies for known issues, found 98 issues, 279 vulnerable paths.

Issues to fix by upgrading:

  Upgrade body-parser@1.19.1 to body-parser@1.20.3 to fix
  ✗ Asymmetric Resource Consumption (Amplification) [High Severity][https://security.snyk.io/vuln/SNYK-JS-BODYPARSER-7926860] in body-parser@1.19.1
    introduced by body-parser@1.19.1 and 1 other path(s)
  ✗ Prototype Poisoning [High Severity][https://security.snyk.io/vuln/SNYK-JS-QS-3153490] in qs@6.9.6
    introduced by body-parser@1.19.1 > qs@6.9.6 and 2 other path(s)

  Upgrade check-dependencies@1.1.0 to check-dependencies@2.0.0 to fix
  ✗ Prototype Pollution [Low Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMIST-2429795] in minimist@0.2.1
    introduced by check-dependencies@1.1.0 > bower-config@1.4.3 > minimist@0.2.1 and 18 other path(s)
  ✗ Excessive Platform Resource Consumption within a Loop [High Severity][https://security.snyk.io/vuln/SNYK-JS-BRACES-6838727] in braces@2.3.2
    introduced by check-dependencies@1.1.0 > findup-sync@2.0.0 > micromatch@3.1.10 > braces@2.3.2 and 1 other path(s)
  ✗ Denial of Service (DoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-DECODEURICOMPONENT-3149970] in decode-uri-component@0.2.0
    introduced by check-dependencies@1.1.0 > findup-sync@2.0.0 > micromatch@3.1.10 > 
/// (以下省略)

おわりに

今回は、SnykOpenSourceを使用した脆弱性管理について解説してきました。
JavaScript、Python、Javaをはじめとする14以上のプログラミング言語をサポートし、GitLabなどの主要なバージョン管理システムとも簡単に連携できることが分かりました。

SnykOpenSourceの導入により、開発者は日々の開発作業の中で自然とセキュリティ対策を実施できるようになり、より安全で効率的な開発プロセスを実現できることが期待できまそうですね。

Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
https://dev.classmethod.jp/tags/snyk/

この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.