1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snykを使ってコードをセキュアにした記事を投稿しよう! by SnykAdvent Calendar 2023

Day 20

Snyk と脆弱性だらけのアプリケーションを使ってセキュリティの勉強を始める

Last updated at Posted at 2023-12-25

はじめに

普段 Web アプリケーションを開発する上でセキュリティの知識は必須ですが、(個人的に)とっつきづらい領域です。
かと言って「とりあえず動くと思うからリリースしようぜ」とはいきません。

そこで脆弱性だらけのアプリケーションを診断して、出てきた問題を解決していけばゲーム感覚で力がつくのではと思いやってみました。

脆弱性診断には Snyk を、脆弱性だらけのアプリケーションには ockeghem/badtodo を使用します。

Snyk とは

Snyk とは Google、Salesforce、Atlassian など多くの企業で採用されている脆弱性管理ツールです。

image.png

私の推しポイントは以下4つです。

ポイント1:脆弱性に優先順位を付けてくれる

限られたリソースの中で、セキュリティリスクの高い脆弱性を優先的に修正するためにもこの機能は非常にありがたいです。

スクリーンショット 2023-12-14 15.26.19.png

ポイント2:コードの脆弱性も指摘してくれる

使用しているライブラリの脆弱性を見つけてくれるサービスはいくつか知っていましたが、コードの脆弱性まで対応しているサービスを知ったのは Snyk が初めてでした。

スクリーンショット 2023-12-14 15.27.50.png

また修正方法も教えてくれます。
イメージやライブラリのバージョンアップの場合は PR の自動作成も行えます。

スクリーンショット 2023-12-14 15.28.49.png

ポイント3:リアルタイムに脆弱性を指摘してくれる

VS CODE と JetBrains のプラグインが提供されており、CI/CD 上だけではなくコードを書きながらリアルタイムで脆弱性をしてくれます。

開発者体験最高です。

image.png

ポイント4:IaC のチェックもしてくれる

blog-iac-terraform-remediation.png

試してみると S3 のバケットの未暗号化も検出できていました。

[Medium] Non-encrypted S3 Bucket

脆弱性だらけのアプリケーション

あとは脆弱性だらけのアプリケーションがあればいけるぞと思いきや、そもそもセキュリティの知識がないと脆弱性だらけのアプリケーションは作れないことに気づきました。

いろいろと探してみると、EGセキュアソリューションズ株式会社がセキュリティを学びたい人向けに脆弱性だらけのアプリケーションを公開してくれていました。

【EGセキュアソリューションズ株式会社】Webセキュリティを学びたい人向けにCTO徳丸浩制作、脆弱性診断実習用Webアプリケーション「BadTodo」を無償公開

今回はこちらを使用します。

ockeghem/badtodo

badtodo では IPA が公開している安全なウェブサイトの作り方第7版の脆弱性をすべて網羅しています。

参照:ockeghem/badtodo: 対応している脆弱性

まさに今回の記事のためにあるようなアプリケーションです。

試してみる

期待通りとんでもない数の脆弱性が見つかりました。

スクリーンショット 2023-12-14 15.25.23.png

学習手順は以下の繰り返しです。

  1. 脆弱性を修正
  2. 動作確認
  3. PR をマージ

動作確認部分は e2e テストを書いて自動化したいところですが。

いくつか検出された脆弱性を紹介します。

ベースイメージの変更

ベースイメージを変えるだけでだいぶ減らせますね。

スクリーンショット 2024-01-04 0.40.07.png

「Open a fix PR」を押すと自動で PR を作成できます。

スクリーンショット 2024-01-04 4.28.27.png

SQL インジェクション

これは定番ですね。

スクリーンショット 2024-01-04 4.43.49 1.png

他にも XSS やコマンドインジェクションが検出されていました。

おわりに

検出された脆弱性と badtodo が対応している脆弱性を照らし合わせたところ、すべては検出できてなさそうです。

検出された脆弱性をすべてゼロにするところまで行きたかったのですが間に合いませんでした。
badtodo を goodtodo にするべく、年末年始は家に篭ろうと思います。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?