OWASP ZAP入門ガイド
OWASP ZAPとは、ブラウザとWebアプリの間に挟んで脆弱性診断を自動・手動で行える“Webセキュリティ用プロキシ”である。
● なぜZAPなのか
- 無料 & オープンソース:商用代替(Burp Suite Pro 等)が高価でも、ZAPなら無償でCI/学習に導入可
- GUI + API:クリック操作でもREST APIでも同じ機能を呼び出せる → 自動化が容易
- プラグイン拡張:2025年現在、マーケットプレイスに200+アドオン
● ZAPの全体像と通信経路
- ポイント:ZAPはOSI Layer 7のHTTP/HTTPSストリームのみを扱い、TCP/UDPパケットの再構築はしない。
● 何を“監視”しているのか? 他ツールとの比較
観点 | OWASP ZAP | Wireshark | Prometheus + SNMP |
---|---|---|---|
主レイヤ | L7 (HTTP/HTTPS) | L2–4 (パケット) | システム/ネットワークメトリクス |
主目的 | 脆弱性の発見・再現 | トラフィック解析・トラブルシュート | 可用性・性能監視 |
アプローチ | 挟み込んで改ざん・攻撃 | 受動的キャプチャ | エージェント or Exporter 収集 |
影響度 | 誤設定で実害を起こす可能性(DoS等) | 基本 Read‑only | Read‑only |
代表シナリオ | XSS/SQLi検証、CSRF確認 | MTU問題調査、RST解析 | CPU負荷・帯域監視 |
● ZAPで出来る主なこと
- インターセプト/改ざん:リクエスト/レスポンス内容をリアルタイム編集
- パッシブスキャン:通信を観察しつつOWASP Top10相当の問題を自動検出
- アクティブスキャン:自動攻撃で実際に穴が空くか確認(本番NG)
- スパイダー & クローラ:HTML / SPA / API を自動巡回しURLを列挙
- Fuzzer:辞書や正規表現ベースでパラメータを総当たり
- WebSocket/GraphQL対応:モダンアプリの双方向通信にも対応
-
Automation Framework:YAMLジョブ定義 +
zap.sh -autorun
でCIに投入
● “設定不要”で触る 3 ステップ
-
Docker で起動
docker run -u zap -p 8080:8080 \ ghcr.io/zaproxy/zaproxy:2.16.0 \ zap.sh -daemon -config api.disablekey=true
-
ブラウザのプロキシを
127.0.0.1:8080
に変更 -
いつものサイトを閲覧 → ZAPが自動でパッシブスキャン
Tips: Firefox ならプロファイルごと設定、Chrome/Edge は SwitchyOmega 等で簡単に切替え可。
● 典型的ワークフロー(手動)
- Step 1: コンテキスト設定:対象ドメイン範囲・認証情報を登録
- Step 2: ブラウズ:リンク・フォーム操作を録画(またはスパイダー)
- Step 3: パッシブ結果を確認:Cookie属性・セキュリティヘッダ欠如など即チェック
- Step 4: アクティブスキャン:安全な環境でのみ実行
- Step 5: アラート整頓:誤検知ラベル付け → レポート出力 (HTML/MD/JSON)
● 典型的ワークフロー(CI/CD)
-
zap-baseline.py
で URL 1 本スキャン → パイプラインを失敗させずレポート提出 -
zap-full-scan.py
でプリプロダクション環境に対しフルアクティブスキャン - レポートを SARIF 形式で出力 → GitHub Security Dashboard と連携
● ベストプラクティス & 注意点
- 本番パッシブOK、アクティブNG:DoSリスクに留意
- OAuth/JWTアプリはScript認証:Zest / Groovy / Python スクリプトでログイン再現
-
大量アラートはタグ分類:
Low | Medium | High
+ 影響範囲で優先度付け - DevSecOps統合:SAST → ZAP(DAST) → IAST → コンテナスキャン のパイプに
● FAQ
-
Q: HTTPS通信を完全に覗けるの?
- A: ZAP が発行する CA 証明書をローカル信頼ストアに入れればOK。
-
Q: SPA でリンクが取れない…
- A: 2024 Q4 以降の Client Spider モードを有効化。Chrome driver を同梱。
-
Q: Burp Suite との使い分けは?
- A: チーム内に有償ライセンスが無い/CIに組む手間を減らしたい → まずZAPで十分。
● まとめ
- ZAP は “プロキシを立てるだけ” で脆弱性診断が始められる便利ツール
- パケット監視とは層が違うので併用が基本:ZAP(L7) + Wireshark(L2–4) + Prometheus(metrics)
- GUI 学習 → API 自動化へ進めば、本番リリース前の安全網を最小コストで構築できる。