1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Playwright × OWASP ZAP で学ぶ Web アプリ脆弱性診断の自動化

1
Posted at

はじめに

Web アプリケーションのセキュリティテストにおいて、「自動化」と「脆弱性診断」はしばしば別物として扱われがちです。
しかし、近年のモダン Web アプリ(SPA・動的フォーム・複雑な JS 処理)に対しては、両者を組み合わせることが極めて重要になっています。

本記事では、Playwright と OWASP ZAP を併用する理由と、その実践的な価値について解説します。


なぜ Playwright だけでは不十分なのか

Playwright の役割

Playwright は高機能なブラウザ自動化ツールであり、以下の点に優れています。

  • 実ブラウザ(Chromium / Firefox / WebKit)を操作可能
  • JavaScript を含むフロントエンドロジックを完全に実行
  • フォーム入力、クリック、画面遷移などを人間と同様に再現

つまり Playwright は、

「ユーザーとしてその画面・入力に到達できるか」

を確認するためのツールです。

Playwright の限界

一方で、Playwright には明確な限界があります。

  • 入力した payload が 脆弱性かどうかを判断しない
  • XSS / CSRF / 情報漏えいなどの セキュリティ観点での評価を行わない
  • 脆弱性の深刻度や分類(CWE / OWASP)を提示しない

言い換えると、

Playwright は「操作」はできるが、「診断」はできない

という立ち位置になります。


OWASP ZAP は何をしているのか

OWASP ZAP は Intercepting Proxy(通信を中継・解析するツール) です。
Playwright の通信を ZAP 経由にすることで、ZAP は以下の処理を行います。

Playwright → ZAP Proxy → Web Application

1. 被動スキャン(Passive Scan)

ZAP は通信内容を改変せずに観察し、以下を分析します。

  • 入力値がレスポンスにそのまま反映されていないか
  • HTML / JavaScript / 属性値など、どの文脈で出現しているか
  • エスケープ処理が適切か
  • セキュリティヘッダ(CSP, HSTS, X-Frame-Options など)の有無

これにより、Reflected XSS などの兆候を検出できます。

2. 脆弱性としての評価

ZAP は単なる文字列一致ではなく、

  • 実行可能かどうか
  • 脆弱性の種類(例:XSS)
  • リスクレベル(Low / Medium / High)
  • CWE ID
  • 修正方法の提案

といった セキュリティ診断として意味のある情報を生成します。

これは Playwright 単体では絶対に得られません。


なぜ ZAP 単体でスキャンしないのか

「それなら最初から ZAP でスキャンすればいいのでは?」
と思うかもしれませんが、ここにも落とし穴があります。

ZAP 単体の弱点

  • JavaScript に依存した画面遷移に弱い
  • ログインや動的フォームを突破できないことが多い
  • 実際のユーザー操作パスを完全には再現できない

Playwright × ZAP の分業

ツール 役割
Playwright 実ユーザーの操作を完全再現
OWASP ZAP 通信を解析し脆弱性を診断

この組み合わせにより、

「到達可能性」と「脆弱性評価」の両方を満たす

実践的なセキュリティテストが可能になります。


実践例:XSS 検証の自動化

本検証では、Playwright を用いて入力フォームに XSS ペイロードを投入し、
その通信を ZAP に中継することで被動スキャンを実施しました。

  • Playwright:フォーム入力・送信を自動化
  • ZAP:通信内容を解析し XSS の兆候を検出
  • ZAP API:スキャン結果を PDF レポートとして出力

結果として、人手を介さず 再現性のある脆弱性レポートを生成できます。


なぜこの構成が重要なのか(セキュリティ視点)

この構成は、以下の点で非常に実務的です。

  • CI/CD に組み込み可能
  • 手動テストの抜け漏れを防止
  • SPA・動的アプリにも対応
  • レポート生成まで自動化可能

実際、Red Team や自動化セキュリティテストでは
「Browser Automation + Intercepting Proxy」は定番構成となっています。


まとめ

Playwright と OWASP ZAP は、目的が異なるツールです。

  • Playwright は「操作」
  • ZAP は「診断」

両者を組み合わせることで、

リアルなユーザー操作を再現しつつ、専門的な脆弱性分析を行う

という、実践的かつ拡張性の高いセキュリティテストが実現できます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?