既存の Web アプリに脆弱性診断を実施するために必要になった実装上の工夫
はじめに
弊社では、定期的に脆弱性診断ツールを使用し、Webアプリケーション(以下Webアプリ)に脆弱性がないか診断しています。
脆弱性診断ツールを導入した際、ツール実行対象のWebアプリに対して一部改修を入れる必要があったため、その際の対応に関して記載します。
脆弱性診断ツールとは
脆弱性診断ツールとは、こちらの記事で以下のように定義されています。
脆弱性診断ツール(サービス)とは、サイバー攻撃を受けやすいウェブシステムに対し、スキャンや模擬攻撃などを行い、そのシステムにセキュリティ上の欠陥がないかを診断することのできるサービスです。
ツールにもよりますが、画面遷移を何らかの方法で記録し、その画面遷移の中でさまざまなリクエストを実行して脆弱性があれば検知してくれます。
なぜ改修が必要なのか
上記に記載しましたが、脆弱性診断ツールは脆弱性を検出するために、Webアプリに対してさまざまなリクエストを実行します。
その結果、不必要なデータが大量に作成されたり、特定の機能が意図しない形で大量に実行される可能性があります。
また、使用している外部サービスや機能、システム構成によっては脆弱性診断ツールの実行ができなくなり、中断してしまう場合があるため、その辺りの対応も検討する必要があります。
改修したこと
reCAPTCHAの無効化
脆弱性診断ツールでは、基本的にreCAPTCHAが設定されているとログインできず、
実行が中断してしまう可能性があります。
そのため、脆弱性診断を実行する環境ではreCAPTCHAが無効になるように対応を行いました。
メール送信処理の無効化
脆弱性診断ツールはさまざまなリクエストを実行するため、診断対象にメール送信を行う機能が含まれていると、大量にメールが送られる可能性があります。
脆弱性診断ツール実行の度にメールが送られると煩わしいので、
実行する環境では無効になるように対応を行いました。
外部サービス連携の無効化
弊社Webアプリでは外部サービスと連携する機能を持つ画面があります。
脆弱性診断ツールの実行により、意図せず外部サービスに連携されるのを防ぐため、
実行する環境では無効になるように対応を行いました。
DBへのコミット無効化
脆弱性診断ツールの実行により、大量の不要なデータが登録される可能性があります。
これを防ぐために、実行する環境ではDBへのコミットを行わず、全てロールバックするように対応しました。
今回はこのように対応しましたが、大量の不要なデータが登録されるのを防ぐのが目的のため、
別の方法も検討できるかと思います。
改修しなかったこと
ログ出力の無効化
脆弱性診断ツールによるリクエストでログが大量に出力され、ログファイルのサイズが大きくなりすぎるのではないかといった懸念がありました。
ただ、検証時にログファイルのサイズはそこまで大きくならなかったため、今回は対応を見送りました。
さいごに
脆弱性診断ツールを導入する際にWebアプリで対応したことを記載しました。
対応することはWebアプリの構成や脆弱性診断ツールによって異なるとは思いますが、参考になれば幸いです。
Discussion