弊社ではアプリケーションのリリース時に行うSOC(Security Operations Center)チームによる脆弱性診断とは別に開発者自身によるOWASP ZAPを使用したセルフ診断を行っています。
今回は、OWASP ZAPのスキャンルールをカスタマイズしたい方のために、参考情報をご紹介します。
目次
OWASP ZAPとは
OWASP ZAP (Zed Attack Proxy) は、ウェブアプリケーションの脆弱性を診断するためのオープンソースのセキュリティツールです。プロキシ機能や自動スキャン機能を持ち、セキュリティ診断の初心者から上級者まで幅広く利用されています。
OWASP ZAP 公式サイト
SOCチームの判定基準と異なる場合がある
OWASP ZAPにデフォルトで組み込まれているスキャンルールは、一般的な脆弱性の検出には有効ですが、特定の組織のSOC(Security Operations Center)が持つ判定基準とは異なることがあります。これにより、SOCチームが期待する結果を得られない可能性があります。
ちょっとした違いであればスキャンルールをカスタマイズすることで吸収できるかもしれません。
ソースからビルドする
インストーラーを使用する分には多くの紹介サイトがあるのでここでは割愛します。
OWASP ZAPはソースコードが公開されておりビルドして使用することも可能です。
ビルド方法は公式サイトで紹介されていますので参考にしてください。
開発者向けガイド
開発環境整備 (Windows環境)
OWASP ZAPのカスタマイズを行うためには、開発環境を整える必要があります。詳細なセットアップ手順は、公式の開発者向けクイックスタートガイドを参照してください。
OWASP ZAPのソースを入手
OWASP ZAPのソースコードは、GitHub上で公開されています。以下の手順でソースを取得してください。
git clone https://github.com/zaproxy/zaproxy.git
git clone https://github.com/zaproxy/zap-extensions.gitzaproxy がOWASP ZAP本体です。
zap-extensions は、OWASP ZAPの機能を拡張するための追加プラグインやルールを含むリポジトリです。
OWASP ZAPはJavaで作成されています。GUIにはSwingが使われています。
手順通りに進めればよいのですが、少しハマりそうな箇所はこちらです。
JAVA 21ではコンパイルエラーに
公式ではJAVA 11以上とされていますが、JAVA 21ではコンパイルエラーになります。素直にJava 11を使う方がよいでしょう。
Gradle実行前に JAVA_HOME を設定しておきます。
$env:JAVA_HOME = "C:\Program Files\Java\jdk-11.0.14"IDEはIntelliJ IDEAがおすすめ
公式サイトにも書かれていますが、Eclipseの場合AddOnがすべて並列に表示されてしまうという問題があるため、IntelliJ IDEAを使用することをおすすめします。
Eclipseの場合

IntelliJ IDEAの場合

カスタム方法
OWASP ZAPのルールはJavaで作成されているので、Javaの知識があれば誰でもカスタムすることが可能です。
AddOnの追加方法については公式ページに手順が紹介されています。[公式の手順はこちら]
公式ページの説明では新しくAddOnを作成する方法が書かれていますが、既存のスキャンルールをカスタムしたいことも多いのではないでしょうか。
簡単ではありますが、スキャンルールのソースや生成物の配置先を説明します。
ルールってどこにあるの? (パッシブスキャンルールの場合)

Windows インストール版のアドオンは次の場所に格納されています。
C:\Program Files\ZAP\Zed Attack Proxy\pluginpscanrules-release-xx.zap がパッシブスキャンルールになります。
zapファイルがルールセットになります。複数のルールclassがZIP形式で圧縮されています。jarと同じですね。
ソースからビルドする場合は、こちらにソースコードがあります。
zap-extensions\addOnspscanrulesパッケージが パッシブスキャンルールのパッケージになります。
スキャンルールの種類ごとにパッケージが分けられています。

静的スキャンで使用されるルールセットになります。このルールセットの中に複数のルールが含まれています。

Ruleクラスが各々のスキャンルールになります。
copyZapAddOn タスクを実行すると、zap-extensionsに作成されたzapファイルがzaproxyにコピーされます。
./gradlew copyZapAddOnzap-extensions/addOns/pscanrules/build/zapAddOn/bin/pscanrules-release-58.zap
zaproxy/zap/src/main/dist/plugin/pscanrules-release-58.zapZAP起動時にはzaproxy/zap/src/main/dist/pluginディレクトリのZAPファイルがアドオンとして読み込まれます。
チェックをしているクラスは?
例として Reverse Tabnabbing ルールのカスタマイズについて説明します。
(具体的なロジックの説明は行いません。)
Reverse Tabnabbingの詳細はこちら
Reverse Tabnabbingは、ウェブサイトでリンクを新しいタブやウィンドウで開く際に発生する脆弱性です。
新しいタブから元のページを操作することが可能となり、フィッシング攻撃に利用される可能性があります。
対策として、リンクに rel="noopener noreferrer" を追加することで、このリスクを軽減できます。現在では、ブラウザ側での対策が進みOWASP ZAPでは重大脆弱性とされず、チェック内容が緩くなっています。しかし、他の脆弱性診断ツールでは厳密にチェックされる場合があります。
org.zaproxy.zap.extension.pscanrules.LinkTargetScanRule.javaがスキャン内容を実装したクラスになります。ロジックを変更することでチェック内容をカスタマイズすることが可能です。
スキャンレポートに表示する内容もカスタム可能です。
org/zaproxy/zap/extension/pscanrules/resources/Messages.propertiesに出力内容が定義されています。
pscanrules.linktarget.desc = At least one link on this page is vulnerable to Reverse tabnabbing as it uses a target attribute without using both of the "noopener" and "noreferrer" keywords in the "rel" attribute, which allows the target page to take control of this page.
pscanrules.linktarget.name = Reverse Tabnabbing
pscanrules.linktarget.refs = https://owasp.org/www-community/attacks/Reverse_Tabnabbing\nhttps://dev.to/ben/the-targetblank-vulnerability-by-example\nhttps://mathiasbynens.github.io/rel-noopener/\nhttps://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c
pscanrules.linktarget.soln = Do not use a target attribute, or if you have to then also add the attribute: rel="noopener noreferrer".OWASPの説明ページのリンクも載っています。
https://owasp.org/www-community/attacks/Reverse_Tabnabbing
こちらのサイトには脆弱性の内容が説明されています(勉強になります!)
直接スキャンルールに手を入れることの問題点
公式アップデートによる不整合 : 元のルールを直接変更すると、公式ソースが更新された際に変更したスキャンルールとの不整合が生じる可能性があります。(OWASP ZAPは頻繁に更新されています)
解決策としてルールセットを分ける
一つの有効な解決策は、ルールセットを分けることです。カスタムルールセットを作成することで、オリジナルのコードを保護しつつ、独自の判定基準に沿ったスキャンを行うことができます。
pscanrulesルールをコピーし、独自のルールセットを作成することができます。
(pscanrulesの場合は構造の問題で瀕雑な作業が必要ですが、、)
生成した zapファイルを配布することで社内独自のルールを展開することも可能です。
(インストール版の以下フォルダにコピー)
C:\Program Files\ZAP\Zed Attack Proxy\plugin
このようにPassive scanner rulesが2つ表示されています。(下がカスタマイズ版)
まとめ
以上、ちょっとスキャンルールを変更したいといった場合にお役に立てていただければ幸いです。
(脆弱性診断ツールってどんなロジックになってるの?といったときの勉強にもおすすめです)
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(594)
-
イベント(237)
-
カルチャー(60)
-
デザイン(70)
TAG
- 5G
- AI
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIエージェント
- AIコーディング
- AI人財
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- CSS
- CTF
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメディア
- GMO大会議
- GMO天秤AI
- Go
- Good Morning
- GPUクラウド
- GTB
- Hack-1グランプリ
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VPN
- VS Code
- XSS
- ZTNA
- アドベントカレンダー
- インターンシップ
- インハウス
- お名前.com
- クリエイターインタビュー
- クリエイティブ
- コンテナ
- サイバーセキュリティ
- サマーインターン
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアサプライチェーン
- チームビルディング
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- プログラミング教育
- ブロックチェーン
- フロントエンド
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- ロボット
- 京大ミートアップ
- 国際ロボット展
- 基礎
- 多拠点開発
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 技術広報
- 技術書典
- 新卒
- 新卒研修
- 映像
- 映像クリエイター
- 暗号
- 業務効率化
- 機械学習
- 決済
- 生成AI
- 脆弱性診断
- 開発者
PICKUP
-
デザインカンファレンス「Yoitoi Summit 2026」をGMOYours・フクラスにて開催!
デザイン
-
攻撃者優位の時代に問われる「使命感」 GMO Flatt Security&GMOサイバーセキュリティ byイエラエが描く、AI時代のセキュリティ構想(後編)ーEngineering Journey
技術情報
-
頂上と裾野の両方から「底上げ」 GMO Flatt Security&GMO サイバーセキュリティ byイエラエが支える、日本のサイバーセキュリティ(前編)ーEngineering Journey
技術情報
-
【開催レポート】八幡小学校 社会科見学 at GMO kitaQ
カルチャー
-
デザインコンテスト「GMO DESIGN AWARD 2026」開催決定!3年目のテーマは「トキメキ」
デザイン
-
ソフトウェアサプライチェーン攻撃から「エンジニアの背中」を守る。Takumi byGMO・「Guard」機能「Runner」機能 開発の舞台裏ーEngineering Journey
技術情報