はじめに
― 他のインターセプトプロキシではダメなのか?
Playwright と組み合わせるインターセプトプロキシとして、
OWASP ZAP 以外にも Burp Suite、Fiddler、mitmproxy など複数の選択肢が存在します。
しかし、本検証では OWASP ZAP を採用しました。
その理由は「無料だから」や「有名だから」ではありません。
結論から言うと、求めている役割が単なる“通信の中継”ではなかったからです。
プロキシツールはすべて同じではない
一見すると、どのツールも「HTTP(S) 通信を中継できるプロキシ」に見えますが、
実際には役割のレイヤーが大きく異なります。
| ツール | 通信の中継 | 改変 | セキュリティ分析 | API 自動化 | レポート |
|---|---|---|---|---|---|
| Fiddler | ○ | ○ | × | × | × |
| mitmproxy | ○ | ○ | × | △(自作) | × |
| Burp Suite | ○ | ○ | ○ | △(主に有料) | △ |
| OWASP ZAP | ○ | ○ | ○ | ◎ | ◎ |
重要なのは、
「脆弱性を判断する知識とエンジンを持っているか」 という点です。
OWASP ZAP を選んだ技術的理由
1. 被動スキャン(Passive Scan)を標準搭載している
OWASP ZAP は、通信を改変せずに以下を自動で解析します。
- 入力値がレスポンスに反射されていないか
- HTML / JavaScript / 属性値など、どの文脈で出現しているか
- XSS の兆候
- 不適切な Cookie 設定
- セキュリティヘッダの欠如
これは Playwright 単体では絶対に実現できない機能です。
また、mitmproxy や Fiddler では
「解析ロジックをすべて自分で実装する必要」があります。
2. API による完全な自動制御が可能
ZAP は GUI ツールであると同時に、API ファーストな設計になっています。
Python から以下を直接操作できます。
- セッションの初期化
- スキャン進捗の確認
- 検出アラートの取得
- PDF / HTML レポート生成
この点は、ブラウザ自動化と組み合わせる際に極めて重要です。
ZAP は「操作するツール」ではなく
**「スクリプトから呼び出すセキュリティエンジン」**として使える
これが大きな差です。
3. 出力されるのが「脆弱性レポート」である
ZAP が生成するのは、単なる通信ログではありません。
- 脆弱性の種類(例:Reflected XSS)
- リスクレベル
- CWE / OWASP 分類
- 技術的根拠(Evidence)
- 修正方法の提案
これは、実務・教育・レポート提出すべてに耐えうる形式です。
Fiddler や mitmproxy では、
「この通信が危険かどうか」は利用者が判断する必要があります。
なぜ Burp Suite ではないのか
Burp Suite は非常に強力なツールですが、本構成では最適解ではありません。
- 自動スキャンや高度な API 制御は主に Pro 版
- 自動化用途では ZAP の方が軽量
- 教育環境・TryHackMe では ZAP が標準採用されているケースが多い
Burp は、
人間が操作する前提の“手動渗透测试向けツール”
一方 ZAP は、
自動化・検証・再現性を重視したツール
という設計思想の違いがあります。
Playwright × OWASP ZAP の相性
Playwright と ZAP は、役割分担が非常に明確です。
- Playwright:
実際のユーザー操作を完全再現し、到達可能な入力経路をすべて踏む - OWASP ZAP:
その通信を解析し、脆弱性として意味のある形で評価する
この構成により、
「操作できた」だけで終わらない、再現性のあるセキュリティ診断
が可能になります。
まとめ
OWASP ZAP を選択した理由は明確です。
- 単なるプロキシではなく、脆弱性分析エンジンであること
- API による自動化が前提設計であること
- 標準化されたセキュリティレポートを生成できること
Playwright と組み合わせることで、
モダン Web アプリに対する実践的かつ自動化された脆弱性診断が実現できます。