AppScan機能解説コラム -- 第2回:マルチステップ操作
本シリーズのコラムでは、脆弱性診断ツールAppScan Standard(以下「AppScan」という)の機能について紹介します。今回は「マルチステップ操作」について解説いたします。
<目次>
目次[非表示]
- 1.マルチステップ操作とは
- 2.マルチステップ操作の必要性
- 3.マルチステップ操作におけるAppScanの優位性
- 4.マルチステップ操作でシーケンスを記録する
- 5.シーケンス変数
- 5.1.シーケンス変数とは
- 5.2.シーケンス変数のダイナミック値の設定方法
- 5.3.シーケンスの検証
- 5.4.テストの実行
マルチステップ操作とは
マルチステップ操作はAppScanの探査方法の1つで、「入力画面」→「確認画面」→「完了画面」などの決められた順番で画面遷移を行わないとエラーとなってしまう画面や、特定の条件が成立していないと表示できない画面をテストする際に使用する機能となります。
具体的には、ECサイトで商品をカートに追加するところから決済までの一連の遷移が該当します。決済を完了するには、商品を買い物かごに入れてから、届け先の入力や決済方法を選択するなど、一連の手順に従って画面を進める必要があります。
このように、一連のシーケンスでリクエストを送信しないとテストシナリオを正確に再現することができない画面や機能に適した探査がマルチステップ操作になります。
その他、マルチステップ操作以外に使用できる探査として「自動探査」と「マニュアル探査」があります。各探査の使い分け※1については以下の通りです。
※1 上図は一般的な作りのウェブアプリケーションを想定しており、ウェブアプリケーションの作りによっては、参照系でもマルチステップ操作が必要な場合や更新系でもマニュアル探査が可能なケースもあります。
マルチステップ操作の必要性
自動探査やマニュアル探査もある中、なぜマルチステップ操作でリクエストを記録し、テストする必要があるのか、それは「テストを正しく行うため」となります。
動的診断で最も重要となるのは、テスト対象の「正常系リクエスト」をいかに記録・作成していくか、となります。本来、マルチステップ操作でテストすべき箇所を自動探査やマニュアル探査でテストした場合、一連のシーケンスに基づいた正常なリクエストを送ることができず、テストが失敗します。テストに失敗すると、本来検出されるべき問題が検出できないため、脆弱性診断の意義が損なわれます。そういった事態を避けるためにも、各画面に適した探査方法を選択し、テストを実施することが重要となります。
マルチステップ操作におけるAppScanの優位性
OWASP ZAPやBurpSuiteなどの他の脆弱性診断ツールでは、自動スキャンがメインの機能となっており、手動でテスト対象の画面を記録する機能はあるものの、アンチCSRFトークンなどの動的な値が存在する画面をテストする場合は、別途該当の値を追跡設定する必要があります。
しかし、当該のツールでは、追跡設定の際にスクリプトの作成を要すため、脆弱性診断に慣れていない場合、ハードルがやや高いと感じることもあります。
他の脆弱性診断ツールではそういった課題が残る一方、AppScanでは探査からレポート出力までの一連の操作をGUIで行うことができるため、当該のツールで実現しようとすると手間が掛かるアンチCSRFトークンなどの動的な値の追跡※2やリクエストの検証※3を容易に実現することができ、脆弱性診断の経験が少ない方でも、テストを効率的に進めることが可能です。
※2 hiddenパラメーターなどに格納されているアンチCSRFトークンの値を取得し、リクエストに送出する機能。
※3 記録時のレスポンスと検証時のレスポンスを比較し、リクエストが正常に再生されているか確認する機能。詳細については「5.シーケンスの検証」で解説します。
マルチステップ操作でシーケンスを記録する
実際にAppScanのマルチステップ操作でテスト対象を記録する手順についてご紹介します。
1. 始めにAppScanを起動します。
2. 左側のメニューから[構成]を押します。
3. [マルチステップ操作]を選択します。
4. <記録を開始>から[AppScan IEブラウザー]※4を選択します。
ログイン管理にてログイン手順を記録している場合は、下記の記録方法が表示されますので、どちらか一方を選択します。
※4 [AppScan IEブラウザー]でうまく記録できない場合は、[AppScan Chromiumブラウザー(推奨)]または[外部ブラウザー]からテスト対象を記録いただいても問題ありません。
項目名 |
説明 |
ログインして記録 |
ログイン後の画面をテストするときに使用します。ログイン管理で記録した手順を再生したのち、開始URLを表示します。 |
記録(ログインなし) |
ログイン前の(ログインしなくてもアクセスできる)画面をテストするときに使用します。ログインは行わずに開始URLを表示します。 |
5. AppScan(IE)ブラウザーが開きます。
テストする画面を遷移し、記録が終了したら<OK>を押します。
6. 「記録されたURL:」に検査対象のURLが記録されていることを確認します。
各機能の説明については以下の通りです。
項目名 |
説明 |
既定値 |
シーケンス再生前にログイン |
「シーケンス再生前にログイン」のチェックを有効にすることで、ログイン管理に記録したログイン手順を再生してからマルチステップ操作で記録したシーケンスを再生する挙動となります。 |
有効 |
再生最適化を許可する |
「再生最適化を許可する」のチェックを有効にすることで、レスポンス中にSet-Cookieや追跡しているパラメーターが存在しないリクエストについては、リクエストの送信を省略することで、検査時間を短縮できるメリットがあります。 デフォルトでは有効になっていますが、必要なリクエストを誤って省略してしまうことも多いため、弊社では原則無効とする設定をおすすめします。 |
有効 |
シングル・スレッド・モードでのテスト |
「シングル・スレッド・モードでのテスト」のチェックを有効にすることで、シングル・スレッドでテストを実施します。 チェックを無効にしているときは、同時に複数スレッドでテストを実行します。 アプリケーションの仕様により一人のユーザーが同時にログインできない、ログインした場合セッションを共有してしまう場合は有効にすることをおすすめします。 ※「再生最適化を許可する」を無効にした場合は自動的に有効となります。 |
無効 |
7. 以上でマルチステップ操作を用いたシーケンスの記録は完了です。
シーケンス変数
シーケンス変数とは
シーケンス変数では、AppScanが値を追跡する必要があるアンチCSRFトークン等のパラメーターまたはCookieを指定します。下図のように、追跡するパラメーターにチェックを入れることで、次画面の遷移に必要な値を送出します。
また、アプリケーションの仕様にもよりますが、ユーザー登録時のユーザー名やメールアドレスなど、既に登録されている値は再登録できないケースがあります。
そのような場合は、任意のパラメーターにシーケンス変数のダイナミック値を設定することで、毎回異なる値を送出することが可能です。
シーケンス変数のダイナミック値の設定方法
シーケンス変数のダイナミック値は設定したいパラメーターの上で右クリックし、[ダイナミック値の設定]からルールを設定することができます。
なお、「②ルールを選択」で表示される9つのルールに当てはまらない場合は、シーケンスファイルを編集※5することで、一定の範囲でカスタマイズすることも可能です。
※5 GUI以外での操作となります。
シーケンスの検証
シーケンスの検証では、<検証>ボタンからシーケンスに記録したリクエストを再送信することで、正常なリクエストが構成されているか確認することができます。
●検証の方法
シーケンスが記録されている状態で<検証>ボタンを押します。
AppScanが記録時のリクエストを再送信し、記録時のレスポンスと検証時のレスポンスが95%以上一致した場合は、検証成功である緑のチェックマークを表示します。もし、レスポンスに5%以上の差分があった場合は、検証失敗である×のマークを表示します。
テストの実行
最後にテストの実行です。テストは[スキャン]メニュー から [テストのみ]を押すことで、スキャンを開始することが可能です。
テストが開始すると、マルチステップ操作にて記録されたデータを元に探査が行われ、続けてテストを実施する流れとなります。
本コラムではマルチステップ操作の概要からテストの実施方法までをご紹介しました。
他にどのような機能があるのか知りたい、実際に操作して使用感を確かめたいなど、ご興味・ご関心をお持ちになられた方は、AppScan評価版のご提供やハンズオンセミナーも開催しておりますので、こちら【お問い合わせ】よりお気軽にお問合せください。
次回はAppScanの「巡回」について解説いたします。
脆弱性コラム「サイト脆弱性をチェックしよう!」についてはこちらからご確認ください。