このツールは攻撃の検証にも使えます。自分が所有する環境、または書面で許可を得た環境以外では使わないでください。
ZAP(Zed Attack Proxy)は、ブラウザと Web アプリの間に入ってやり取りを記録し、脆弱性の手がかりを探すツールです。最初は練習用アプリの OWASP Juice Shop を自分のパソコンで動かし、それを相手に試すと安全です。
以前は「OWASP ZAP」と呼ばれていましたが、2023 年に OWASP を離れて Linux Foundation の Software Security Project に移りました。2024 年からは「ZAP by Checkmarx」という名前です。公式ブログによると、オープンソースのまま Apache License 2.0 で配布が続きます。
この記事は、Web アプリの開発者や、Web の脆弱性診断を学び始めた人に向けています。読み終えると、次のことができるようになります。
- 自分のパソコンで動かした Juice Shop に対して、自動スキャンを実行する
- 見つかったアラートを開き、どのリクエストとレスポンスが原因かを読む
- パッシブスキャンとアクティブスキャンの違いを理解し、相手に合わせて使い分ける
ZAP でできること
- 通信の記録:ブラウザの通信を ZAP 経由にすると、リクエストとレスポンスがすべて残ります。
- スパイダー:リンクやフォームをたどって、サイト内のページを自動で集めます。
- パッシブスキャン:記録した通信を読むだけで問題を探します。公式ガイドは、レスポンスを一切変えないので安全だと説明しています。
- アクティブスキャン:既知の攻撃手法を使ったリクエストを送り、脆弱性を探します。
- Docker での自動実行:CI/CD に組み込めるスキャン用スクリプトが Docker イメージに入っています。
アクティブスキャンは攻撃そのもの
公式ドキュメントは、アクティブスキャンを「対象への攻撃」と位置づけ、自分が所有していない Web アプリには使わないよう書いています。本物の攻撃と同じ形のリクエストを送るので、サイトの機能やデータが実際に壊れることがあります。この記事で影響範囲を「高」としているのは、このためです。
ZAP には 4 つのモードがあり、ツールバーで切り替えます。
| モード | 動き |
|---|---|
| Safe | 危険になりうる操作をすべて止める |
| Protected | 危険になりうる操作を、スコープに入れた URL にだけ許す |
| Standard | 何も制限しない |
| ATTACK | スコープ内で新しく見つかったページを、すぐにアクティブスキャンする |
公式は Protected モードを勧めています。狙ったサイト以外を誤って攻撃しないためです。
安全な試し方:Juice Shop を相手にする
- Juice Shop の記事の手順で、Juice Shop を自分のパソコンで起動します。
http://localhost:3000で開けることを確かめます。 - 公式ダウンロードページから、使っている OS 用のインストーラーを入手します。Windows 版と Linux 版は Java 17 以上が別途必要です。macOS 版には Java が同梱されています。
- ZAP を起動し、Quick Start タブを開いて Automated Scan を選びます。
- URL to attack に
http://localhost:3000を入れ、Attack を押します。ZAP がスパイダーでページを集め、パッシブスキャンの後にアクティブスキャンを行います。 - 画面下の Alerts タブでアラートを 1 件選びます。Response タブで、アラートの原因になった箇所が強調表示されます。
Juice Shop のように画面を JavaScript で組み立てるアプリでは、自動のスパイダーだけでは拾えないページがあります。ブラウザを ZAP 経由にして手で操作すると、記録できる範囲が広がります。
主な使い方
| やりたいこと | 方法 |
|---|---|
| 練習台に一通り試す | Quick Start の Automated Scan |
| 攻撃を送らずに自分のサイトを点検する | Docker 版の zap-baseline.py |
| CI で攻撃も含めて試す(検証環境のみ) | Docker 版の zap-full-scan.py |
ベースラインスキャンは、スパイダーを既定で 1 分動かし、パッシブスキャンの結果だけを報告します。公式の例は次の形です。
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://www.example.com
フルスキャンはアクティブスキャンまで行い、時間も長くかかります。本番環境ではなく、自分の検証環境に向けてください。
注意点
- 自分のサイト、書面で許可を得たサイト、Juice Shop のような練習台以外に使わないでください。パッシブスキャンだけでも、スパイダーは相手のサーバーにリクエストを送ります。
- アクティブスキャンでは、フォームの送信やデータの書き込みが繰り返し起きます。消えて困るデータがある環境には向けないでください。
- 公式の配布物には現在コード署名がなく、ウイルス対策ソフトに警告されることがあると公式が案内しています。入手は公式サイトか GitHub のリリースページからにし、公開されているチェックサムで確かめてください。
次に読む
出典
- 公式リポジトリ(zaproxy/zaproxy)github.com/zaproxy/zaproxy
- Getting Started(入門ガイド)www.zaproxy.org/getting-started/
- ダウンロードwww.zaproxy.org/download/
- デスクトップ版ガイド:アクティブスキャンwww.zaproxy.org/docs/desktop/start/features/ascan/
- デスクトップ版ガイド:モードwww.zaproxy.org/docs/desktop/start/features/modes/
- Docker 版:ベースラインスキャンwww.zaproxy.org/docs/docker/baseline-scan/
- Docker 版:フルスキャンwww.zaproxy.org/docs/docker/full-scan/
- ブログ:ZAP が Software Security Project に参加(OWASP からの移籍)www.zaproxy.org/blog/2023-08-01-zap-is-joining-the-software-security-project/
- ブログ:ZAP が Checkmarx と提携www.zaproxy.org/blog/2024-09-24-zap-has-joined-forces-with-checkmarx/
確認日 2026-10-24
似たツール
OWASP Juice Shop
影響範囲 手元だけわざと脆弱に作られた練習用のネットショップ。自分のパソコンで動かし、Web の脆弱性探しや診断ツールの練習に使える。
- 用途
- 学習
- 形式
- 練習用の環境
- 難易度
- 初級
- ライセンス
- 自由に使えるMIT
- 分類
- 学習・演習環境/Web セキュリティ
Nuclei
影響範囲 相手に実害YAML のテンプレートに書かれた手順どおりにリクエストを送り、既知の脆弱性や設定ミスを調べるコマンドラインのスキャナ。
- 用途
- 診断・監査
- 形式
- コマンドライン
- 難易度
- 中級
- ライセンス
- 自由に使えるMIT
- 分類
- 脆弱性スキャン/Web セキュリティ