「クレジットカード・セキュリティガイドライン」の改定によりECサイトでカード決済を導入する場合、Webアプリケーションの脆弱性対策が必須になりました。
※参考:
経済産業省
https://www.meti.go.jp/press/2024/03/20250305002/20250305002.html
そこで、今回は要件の1つである定期的な脆弱性診断の実施を行うための無料脆弱性診断ツールOWASPZAPについて、基本的な操作手順を紹介したいと思います。
今回の診断対象
今回はlocalhost環境で動作する簡単なWebアプリケーションを対象に診断を行います。
サイト構成は下記のようなシンプルなものです。
- トップページ
- ログインページ
- ダッシュボード
ページ数が少ないため、今回はスパイダー機能を使用せず、手動探索で対象URLを取得していきます。
OWASP ZAPの起動
OWASPZAPを起動すると、セッションの保存方法を求められます。セッションとはスキャン結果や設定内容を保存するためのデータになります。
後から保存することはできますので「今はこのセッションを保存しない」で問題ありません。

セッション肥大の対策
規模の大きいサイトやURLが固定的なサイトでスキャンを実行するとセッションファイルが肥大化することがあり、次回同じセッションを開く際に時間がかかってしまう原因になってしまいます。
この対策として、「ツール」→「オプション」→「データベース」から「終了時にコンパクト化」にチェックを入れておくことで、セッションサイズの増大を抑えることができます。
※終了時にコンパクト化するため、終了時には時間がかかってしまいます。

クイックスタート
スキャンを開始するためにクイックスタートタブから操作を開始します。
タブ内の「手動探索」タブを選択し、「探索対象URL」に診断対象のURL(今回はlocalhost)を入力してください。
URLを入力後、「アプリケーションを探索」ボタンをクリックすると、ブラウザが起動し、ZAPを経由した通信の取得が開始されます。そのままブラウザ操作をするとスキャン対象として取り込むことができます。
なお、クイックスタートタブが表示されていない場合は、「表示」>「タブ表示」からクイックスタートタブを有効化することで表示できます。



手動探索では、自分でリンクを辿りながら「サイト」タブにスキャン対象のURLを蓄積していきます。一方、スパイダー機能を使用すると、自動的にリンクを辿り、対象サイト内のURLを収集することも可能です。
ページ数が多い場合はスパイダーを利用すると効率的ですが、今回はlocalhost環境で動作する簡単なアプリケーション(トップ・ログイン・ダッシュボードのみ)を対象としているため、手動探索で十分対応できます。
※スパイダー機能を利用する場合は、後述するコンテキストへの追加が必要です。



アクティブスキャンの実行
対象ページへのアクセスが完了したら、アクティブスキャンを実行します。アクティブスキャンでは、実際にリクエストを送信して脆弱性の有無を検査します。
ただし、サーバーに負荷をかけますのでローカル環境で行うなど、実行には十分に注意してください。
アクティブスキャンを実行するには、対象のURLをコンテキストに追加する必要があります。コンテキストとはスキャン対象の範囲を定義する設定であり、ここに含まれていないURLはスキャン対象として扱われません。
コンテキストへの追加は、「サイト」タブで対象URLを右クリックし、「コンテキストに含める」→追加したいコンテキストを選択することで簡単に設定できます。


ログインが必要な場合
ログインが必要なサイトを診断する場合、「コンテキスト」タブからログイン情報を設定する必要があります。認証URLやパラメータを設定することで、ログイン状態を維持したままスキャンが可能となります。


設定後は「強制ユーザーモード」を有効化してください。これを行わないと認証状態が維持されず、正しくスキャンが実行されません。

強制ユーザーモード
スキャンモードにはいくつかの種類があり、セーフモード、プロテクトモード、標準モード、攻撃モードが用意されています。
- セーフモード
- 通信の閲覧のみを行い、攻撃系の処理は実行されません。
- プロテクトモード
- 保護対象外のサイトに対する攻撃を防止できます。
- 標準モード
- 通常利用向けのモードで、手動でアクティブスキャンを実行できます。
- 攻撃モード
- 対象サイトを自動的にスキャンします。
なお、標準モードおよび攻撃モードは、設定によって外部サイトも対象になってしまう可能性があります。
安全のため、慣れるまではプロテクトモードで実行するようにしてください。

スキャンを開始するには
スキャンを開始するには「サイト」タブで対象URLを右クリック→攻撃→アクティブスキャンで開始できます。

アクティブスキャンを選択すると設定画面が立ち上がるので、ポリシーを「Default Plicy」に設定します。
ログインがある場合は登録したユーザーを選択してください。

スキャン結果の確認
スキャンが完了すると、「アラート」タブに検出された脆弱性が一覧表示されます。各項目は高、中、低で重大度で分類されています。
特に高に分類されるものはSQLインジェクションなどの重大なリスクです。もし、高が検出された場合は早急に修正を検討する必要があります。


レポートの出力
スキャン結果はレポートとして出力することも可能です。
レポートはHTML形式で出力できるので確認もしやすいです。





