OWASP ZAPのPassive Scan(受動的スキャン, 非破壊的スキャン)内部処理についてのメモ
※当サイトにはプロモーションが含まれています。
公開日:
更新日:
OWASP ZAP v2.2.2 の Passive Scan 動作についてのメモです。
Passive Scan は extensionの1つとして実装されています。
主な関連パッケージ
- org.zaproxy.zap.extension.pscan (zaproxyレポジトリ)
- org.zaproxy.zap.extension.pscanrules (zap-extensionsレポジトリ)
ZAP起動時の処理
- ZAP起動時に org.zaproxy.zap.extension.pscan.ExtensionPassiveScan のインスタンスが生成される。
- このあたりのコールスタック
- hook()が呼ばれる。
- getPassiveScanThread()
- ↓
- getPassiveScannerList()
- Passive Scanner のスキャナとしてAntiCsrfDetectScanner と ParamScanner が追加される。
- ポリシーの[Passive]内にある脆弱性検査項目に該当するクラスのインスタンスを取得している。(こちらは zap-extensionリポジトリで管理されている)
- スレッドを生成
- pst = new PassiveScanThread(getPassiveScannerList(), extHist, extAlert);
- スレッドを開始する(この中でPassive Scanが行われる)
- pst.start();
- getPassiveScanThread()
- このあたりのコールスタック
- アクセス履歴データを取得して Passive Scanしている箇所
いつ Passive Scan が実行されるのか?
- 独自のスレッドで、常にアクセス履歴データを監視している。
- 新しいアクセス履歴データが追加されるとスキャンを行う。
どのアクセス履歴データに対してスキャンするのか?
- アクセス履歴データにもいろいろな種類があるが、手動でアクセスしたデータとスパイダー(Ajaxスパイダーは含まない)でアクセスしたデータのみ対象としてスキャンする。
- アクセス履歴データの種類は org.parosproxy.paros.model.HistoryReference で定義されている。
- TYPE_MANUAL (PassiveScanの対象)
- TYPE_SPIDER (PassiveScanの対象)
- TYPE_TEMPORARY
- TYPE_SCANNER
- TYPE_HIDDEN
- TYPE_BRUTE_FORCE
- TYPE_FUZZER
- TYPE_SPIDER_TASK
- TYPE_SPIDER_AJAX
- TYPE_RESERVED_11
- アクセス履歴データの種類は org.parosproxy.paros.model.HistoryReference で定義されている。
どんな検査(スキャン)が行われるのか?
- パッケージ org.zaproxy.zap.extension.pscanrules に含まれているぞれぞれのクラスが非破壊的な脆弱性試験を行う。これはポリシーの[Passive]内にある脆弱性検査項目に対応している。
- PassiveScanThread の run()メソッド内で各非破壊的な検査クラスのインスタンスがリクエスト・レスポンスに対して順番にスキャンを行っている。
[最終更新日: 2014年3月29日]
広告

