Webアプリケーションは通常、ユーザーのリクエストを受け付け、データベースに問合せを行い、その処理結果を元にレスポンスを生成しユーザーへ送信します。脆弱性診断とは、このリクエストとレスポンスの仕組みを利用して、様々なリクエストをWebアプリケーションへ送信して、その挙動から脆弱性が無いかどうかを診断します。Webアプリケーションが想定していないようなリクエストを送信することで、意図しないような動作をしないか確認し、脆弱性の有無を判定します。
一般的な診断手法は下記3パターンに分類されます。
◆ツール診断
診断コードが複数用意されているツールで、自動的に診断コードの送信やレスポンスの解析を行い、脆弱性の有無まで判別します。短時間で用意に診断を行うことが可能です。
◆手動(ペネトレーション)診断
診断実施者が診断コードの送信やレスポンスの解析を行い、脆弱性の有無まで判別します。診断実施者の知識と経験が必要となり時間もかかりますが、細かな診断が可能となり動的サイトでは、この手法でないと正確に診断結果を得ることが出来ないケースが多い。
◆通信監視診断
ブラウザとWebアプリケーション間でやり取りされる正常なリクエストとレスポンスをツールが監視し、その通信を分析することで脆弱性の有無を判別します。診断コードを送信しないので誤検知や未検知が多い。