OWASP MCP Server について
OWASP MCP ServerはOWASP ZAPに接続し、Webセキュリティ評価を自動化します。複数のスキャン方式や複数ドメインの並行スキャンに対応し、CLIとMCP経由でリアルタイムに監視できます。
主な機能
- 01スパイダー・アクティブ・フルスキャン
- 02リアルタイムの進捗更新
- 03複数ドメインの並行スキャン
- 04CLIでのスキャン実行
- 05CI/CD連携
活用シーン
- 01Webサイトのパッシブ/アクティブスキャン
- 02スキャン進捗のリアルタイム監視
- 03複数ドメインの並行スキャン
- 04CI/CDパイプラインへのセキュリティスキャン追加
MCP 対応
WebSocket経由で、OWASP ZAPのスキャン制御と監視機能をMCPクライアントに提供します。評価の進捗もリアルタイムで通知します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OWASP MCP サーバー
OWASP ZAP のセキュリティスキャン用 WebSocket ベースの Mission Control Protocol(MCP)サーバーです。セキュリティ評価をリアルタイムで制御、監視できます。
前提条件
- Python 3.8+
- OWASP ZAP 2.12.0+
- Java Runtime Environment(JRE)8+
- sudo/管理者権限(ZAP の実行に必要)
MCP サーバーを使う理由
| 機能 | MCP サーバー | ZAP UI | ZAP API |
|---|---|---|---|
| 自動化 | ✅ 完全対応 | ❌ 限定的 | ✅ 基本的 |
| リアルタイム更新 | ✅ WebSocket | ✅ 視覚的 | ❌ ポーリング |
| CI/CD 統合 | ✅ ネイティブ対応 | ❌ 手動 | ✅ 複雑 |
| バッチ処理 | ✅ 対応 | ❌ 非対応 | ✅ 限定的 |
| 学習曲線 | 🟡 中程度 | 🟢 簡単 | 🔴 難しい |
| 進捗状況の追跡 | ✅ リアルタイム | ✅ 視覚的 | ❌ 手動 |
| 複数ドメイン | ✅ 同時実行 | ❌ 順次実行 | 🟡 限定的 |
| エラー処理 | ✅ 堅牢 | ✅ 基本的 | ❌ 手動 |
主なコンポーネント
-
mcp_server.py- すべてを動かすエンジンです。まずこれを起動してください。OWASP ZAP に接続する、セキュリティスキャンの中核です。 -
mcp_client.py- 処理の中心となる部分です。他のコンポーネントがサーバーと通信するために使用する強力な SDK です(直接使用する必要はありません)。 -
mcp_cli.py- スキャンに使うコマンドラインツールです。セキュリティスキャン用の万能ツールのようなもので、簡単に使えるうえ、強力です。 -
test_client.py- 使い方を説明する学習用ツールです。各機能の仕組みを理解したり、セットアップをテストしたりするのに最適です。
クイックスタート
-
OWASP ZAP をインストールします: https://www.zaproxy.org/download/ からダウンロードしてください。
-
プロジェクトをセットアップします:
git clone https://github.com/shadsidd/Owasp-Zap-MCP-Server-Demo.git cd Owasp-Zap-MCP-Server-Demo python -m venv venv source venv/bin/activate # Windows: .\venv\Scripts\activate pip install -r requirements.txt -
ZAP を起動します(sudo/管理者権限が必要です):
# macOS/Linux sudo /Applications/ZAP.app/Contents/Java/zap.sh -daemon -port 8080 # Windows (as Administrator) "C:\Program Files\OWASP\Zed Attack Proxy\zap.bat" -daemon -port 8080 -
MCP サーバーを起動します:
python mcp_server.py -
CLI を使用します:
# Quick spider scan (passive) python mcp_cli.py scan example.com # Full active scan (comprehensive) python mcp_cli.py fullscan example.com # Specific scan type with HTML report python mcp_cli.py scan --scan-type=active --output=html example.com # Multiple domains scan python mcp_cli.py scan domain1.com domain2.com # Scan from file python mcp_cli.py scan -f domains.txt
サンプルファイル
examples/ ディレクトリには、主な機能を紹介するスクリプトが含まれています。
セキュリティスキャン
basic_scan.py- エラー処理を含む基本的なスキャンauthenticated_scan.py- フォームベースの認証など、さまざまな認証方式scan_domains.py- 複数ドメインの同時スキャンcustom_scan_policy.py- カスタムルールとしきい値
統合と監視
ci_cd_integration.py- CI/CD パイプラインとの統合real_time_monitor.py- 進捗状況とアラートのリアルタイム監視team_notifications.py- メール、Slack、Teams による通知custom_rules.py- 専門的なセキュリティルール
重要な注意事項
-
sudo の要件:
- OWASP ZAP の実行には sudo/管理者権限が必要です
- ZAP の起動時にパスワードの入力を求められます
-
ポートの設定:
- ZAP はデフォルトでポート 8080 を使用します
- MCP サーバーはポート 3000 を使用します
- 起動前に、これらのポートが使用中でないことを確認してください
-
よくある問題:
- 「Address already in use」エラーが表示される場合:
# ポート 8080 を使用しているプロセスを確認 sudo lsof -i :8080 # 必要に応じてプロセスを終了 sudo kill -9 <PID> - ZAP が起動しない場合は、次を試してください:
# 実行中の ZAP プロセスをすべて終了 pkill -f zap
- 「Address already in use」エラーが表示される場合:
スキャンの種類
MCP サーバーは複数のスキャンの種類に対応しています。
- スパイダースキャン(デフォルト):Web サイトをクロールしてコンテンツを検出します。最も高速ですが、検出できる問題は少なめです
- アクティブスキャン:実際の攻撃を用いてセキュリティテストを行い、より多くの脆弱性を検出します
- フルスキャン:包括的なスキャン(スパイダー+アクティブ)を行い、最も徹底した結果を提供します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。