LoginSignup
4
2

More than 1 year has passed since last update.

5分で始めるSnykによるSASTとSCA、Log4Shellの検知をためしてみた

Last updated at Posted at 2021-12-22

先日、はじめてSnykを使ったのですが、SAST1とSCA2が、簡単に始められましたので、記録として残しておきます。

ユーザ登録をする

ユーザ登録をします。

Free利用は、クレジットカードの登録が不要であり、GitHubアカウントでサインアップ可能です。

image.png

GitHubリポジトリを登録する

GitHubリポジトリを登録します。

Integrationsから、対象を選択します。今回は、GitHubにあるリポジトリに対してSASTとSCAを実施するためGitHubを選択します。

image.png

対象のリポジトリを選択します。事前にOWASP Juice shop3をクローンしていますので、こちらを選択します。

image.png

Import and scanをクリックするとインポートとスキャンが始まりますので、スキャンが終わるまでしばらく待ちます。

image.png

結果を確認する

結果を確認します。Projectsから結果をインポートしたプロジェクトのスキャン結果を確認することができます。

image.png

この一覧画面でも、スキャン件数の概要を知ることができますので、複数のプロジェクトに携わっている場合に、スキャン結果を確認する優先度付に一役買いそうです。

SASTの結果を確認する

SASTの結果はCode analysisをクリックすると見ることができます。脆弱性の名称や脆弱性があるコードのが表示されているため、ひと目で脆弱性を認識することができます。

image.png

脆弱性の詳細を確認するには、Full detailsをクリックします。入出力が追えるようになっているため、脆弱性の影響を把握しやすいです。

image.png

Fix analysisをクリックすると、脆弱性の詳細情報が表示されます。また、一般的な修正方法を記載されますので、脆弱性の修正に迷うことも少なくなると思います。

image.png

SCAの結果を確認する

SCAの結果はpackage.jsonをクリックすると見ることができます。

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

image.png

SCAの場合、SASTと異なり半自動で修正することができます。Fix these vulnerabilitiesをクリックするとPRを作成することができます。

image.png

このように、SnykがPRを発行してくれます。

image.png

修正内容を確認すると、バージョンが更新されていることがわかります。

image.png

ここまで自動で対応してくれるので、エンジニアが脆弱性の修正にかけるコストを最小限にでき、本来のタスクに集中しやすくなると思いました。

Log4Shellが検知できるか試してみる(OWASP ZAP)

Log4Shellが検知できるかをOWASP ZAP4試してみました。すでに、mainリポジトリは2.17.0にバージョンアップ済みでしたが、masterブランチが残されていましので、masterを対象にスキャンします。

実施をしたのですが、スキャン結果にbuild.gradle.ktsがありません。

image.png

マニュアルを調べてみたのですが、Gitではbuild.gradle.ktsをサポートしていないようです。

build.gradle.kts files are not currently supported in Git.

ただし、CLIツールでは、サポートされているようなので今後のサポートに期待したいところです。

Snyk CLI with Gradle: To build the dependency graph, Snyk integrates with Gradle and inspects the dependencies returned by the build. The following manifest files are supported: build.gradle and build.gradle.kts

Log4Shellが検知できるか試してみる(Logstash)

OWASP ZAPはうまく検知ができなかったので、今後はLogstash5で試してみます。Logstashも最新版はすでに2.17.0バージョンアップ済みでしたが、7.15のブランチがありましたので、こちらを対象にスキャンします。

build.gradleがしっかり認識されていますが、Critical/Highが0件となっています。(対象: logstash-core/build.gradle)

image.png

詳細を確認すると、以下の2件しか検出がされていません。

image.png

Dependenciesを確認して認識をしている、ライブラリを確認したところorg.apache.logging.log4j:log4j-core@$のように、バージョンを認識できていないことがわかりました。

image.png

ソースを確認したところ、以下のように変数が使用されおり、どうやら変数の展開がうまくできていないため、Dependenciesで認識ができていないようです。

    implementation "org.apache.logging.log4j:log4j-api:${log4jVersion}"

バージョンの変更漏れを防ぐために変数の利用の利用をしている所も多いともいますので、改善されることを期待しています。

まとめ

特別な知識がなくても簡単に始められ、SCAではPRを自動生成するなど、セキュリテ対策コストを最小限にする仕組みが具備されていると感じました。

ただし、Log4Shellの脆弱性検知を試した限りうまく認識ができない部分があるため、機能改善に期待したいところです。


  1. Static Application Security Testingの略で、ソースコードを対象にしたセキュリティテストです。 

  2. Software Composition Analysisの略で、使用してるライブラリの脆弱性を検査します。 

  3. OWASP Juice ShopはOWASPが提供する脆弱性てんこ盛りのやられWebアプリケーションで、Express・Typescriptで実装されています。 

  4. OWASPが提供するJavaのオープンソースの脆弱性診断ツールです。 

  5. Elastic社が提供するログ収集管理ツールでオープンソースで提供されてます。 

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2