🛡️

Webアプリケーションの脆弱性診断:導入から成果まで

2024/12/09に公開

はじめに

Webアプリケーションのセキュリティは、顧客データの保護や企業ブランドの維持に直結する重要な要素です。
近年、サイバー攻撃によるセキュリティインシデントが増加しており、弊社のWebアプリケーションもサイバー攻撃の脅威にさらされる可能性があります。そのため、弊社では脆弱性診断を導入しました。
本記事では、脆弱性診断の導入背景や手法、成果について紹介します。これから脆弱性診断を始めたい方々の参考になれば幸いです。

脆弱性診断とは

脆弱性診断とは、システムやネットワーク、Webアプリケーションなどに潜む弱点(脆弱性)を検出し、セキュリティの状態を評価するプロセスです。

脆弱性診断導入の背景

弊社が脆弱性診断を導入した背景には、主に以下の理由が挙げられます。

  1. サービスの成長
    • 弊社サービスが拡大する中で、セキュリティ統制の観点から診断の実施は必ず要求される要素となった
  2. 顧客からの要求
    • 弊社サービスに関わる顧客からセキュリティ対策の証明を求められるケースがある
  3. 基本的な必要性
    • Webアプリケーションのセキュリティ確保は、サービスの信頼性を支えるためにそもそも必要不可欠

脆弱性診断の手法と選択基準

診断を効果的に実施するためには、自社のサービスや運用体制に適した手法を選ぶことが重要です。このセクションでは、脆弱性診断の主な手法と、弊社が選択した基準について説明します。

まず、脆弱性診断には、主に2つの手法があります。

  1. 手動診断
    • 特徴:セキュリティエンジニアが自らの知見を駆使して診断を行う
    • 利点:機械的には検出が難しい脆弱性を発見でき、自動診断(ツール診断)に比べて検査精度が高い
    • 欠点:時間とコストがかかる
  2. 自動診断(ツール診断)
    • 特徴:専用ツールを使用して、自動的に脆弱性を検出する
    • 利点:迅速でコストが比較的低く、柔軟に診断を実施できる
    • 欠点:手動診断に比べて一部の脆弱性を見逃す可能性がある
    • その他:有料・無料、ソフトウェア型・クラウド型など様々な種類のツールがある [1]

弊社では、定期的な診断の実施と診断プロセスの内製化を目指し、クラウド型の自動診断ツールを選定しました。
選定したツールは、独立行政法人 情報処理推進機構(IPA)が提唱する「安全なウェブサイトの作り方」[2] で紹介されているすべての脆弱性の診断に対応しているので、代表的な脆弱性の診断が行えるものとなっています。

診断実施までのプロセス

診断を実施するには、診断環境の準備から診断内容の設定、そして診断結果の分析まで、いくつかのステップを踏む必要があります。このセクションでは、弊社が行った具体的なプロセスを順を追って説明します。

1. 診断実施環境の準備

診断を行うためには、通常の運用環境とは別に、攻撃に近い操作を許容できる専用の診断環境が必要です。
弊社では、既存のテスト環境を一時的に診断用の環境に切り替えて診断を実施しました。
環境を準備する際の工夫については、以下の記事をご参照ください。

https://zenn.dev/babyjob/articles/compare-vulnerability-tools

2. 診断シナリオの登録

シナリオの洗い出し

弊社が選定した診断ツールでは、診断を行うためにシナリオを手動で登録する必要がありましたので、以下のような手順でシナリオの洗い出しを行いました。

  1. Webアプリケーションのすべてのエンドポイントを抽出
  2. 各画面操作とエンドポイントの関連を整理
  3. 必要なシナリオを特定

この方法では、すべてのエンドポイントの内、どのエンドポイントが診断できるかをまとめることにもなるので、診断のカバレッジ資料を作成することができ、診断の見落としも軽減できました。
ただし、Webアプリケーションの変更に伴う、シナリオの更新作業には、前回洗い出したシナリオからの差分を見つけ出す作業やシナリオの更新要否を判断するために一定数の工数が必要なため、その点も考慮したスケジュール設定が必要です。

シナリオの登録

シナリオの登録方法には、複数のユースケースをまとめて1つのシナリオとして登録する方法と、ユースケース単位で細かく登録する方法が考えられます。
弊社では、将来的なシナリオ更新に備えて、ユースケース単位で細かくシナリオを登録しました。
シナリオ登録自体は、ブラウザで実際にWebアプリケーションを操作するだけで簡単に対応できました。

3. 診断の実施

シナリオの登録が完了したら、診断対象のシナリオを選択して診断を実施し、結果を待つだけです。
診断のカバレッジ資料は、シナリオの洗い出しの段階でほぼ完成しているため、診断結果をカバレッジ資料に反映すると資料が完成します。
検出された脆弱性は、弊社の場合はプロジェクト管理ツールを導入しているので、そちらに登録し、優先度を検討して対応します。

診断導入後の成果

脆弱性診断導入後、弊社のWebアプリケーションのセキュリティ対策が改善され、以下の成果が得られました。

  1. セキュリティの向上
    • 検出された脆弱性に迅速に対応し、Webアプリケーションの安全性が向上しました
  2. 体外的な信頼性の証明
    • 診断結果のドキュメントを顧客や監査対応時に提出可能になり、セキュリティへの取り組みを示せるようになりました
  3. 継続的な改善
    • 定期的な診断実施により、新機能追加時のセキュリティリスクも早期に発見・対応できるようになりました

今後の課題

  1. 診断を実施できる体制の強化
    • 開発チームの誰でも診断が実施できるように、手順書の整備やレクチャーの実施が必要です

最後に

セキュリティ対策は企業規模に関わらず重要です。脆弱性診断の導入は、Webアプリケーションのセキュリティを強化する効果的な手段の一つです。本記事が、脆弱性診断の導入を検討している方々の一助になれば幸いです。

脚注
  1. OWASP Vulnerability Scanning Tools
    https://owasp.org/www-community/Vulnerability_Scanning_Tools ↩︎

  2. 安全なウェブサイトの作り方
    https://www.ipa.go.jp/security/vuln/websecurity/about.html ↩︎

BABY JOB  テックブログ

Discussion