Skip to content
Home DAST Tools ZAP (Zed Attack Proxy)
ZAP (Zed Attack Proxy)

ZAP (Zed Attack Proxy)

Category: DAST
License: Free (Open-Source, Apache 2.0)
Suphi Cankurt
Suphi Cankurt
AppSec Enthusiast
Updated February 7, 2026
6 min read
0 Comments

ZAP (Zed Attack Proxy) is a widely used open-source web application security scanner. It’s free, Apache 2.0 licensed, and has no paid tiers or feature restrictions.

ZAP desktop application interface showing scan results and site tree

With 14,700+ GitHub stars, 2,500+ forks, and 229+ contributors, ZAP is a go-to free DAST tools choice for security teams, pentesters, and developers. Version 2.17.0 shipped in December 2025, written primarily in Java (73% of the codebase).

In September 2024, Checkmarx partnered with the ZAP project and hired all three project leaders — Simon Bennetts, Rick Mitchell, and Yiannis Pavlosoglou. ZAP remains free and open source. Checkmarx provides funding and resources for continued development.

What is ZAP?

ZAP sits between your browser and the target application as an intercepting proxy. All HTTP/HTTPS traffic passes through ZAP, where you can inspect, modify, and replay requests in real-time.

Beyond manual testing, ZAP includes automated scanning: a spider that crawls the application, an AJAX spider that uses a headless browser for JavaScript-heavy pages, a passive scanner that analyzes traffic without sending extra requests, and an active scanner that fires attack payloads at discovered endpoints.

The tool earned OWASP Flagship Project status and has been a GitHub Top 1000 project.

FeatureDetails
LicenseApache 2.0 (free, no restrictions)
GitHub stars14,700+
Contributors229+
LanguageJava (73%)
Latest version2.17.0 (December 2025)
API testingREST, GraphQL, SOAP
AutomationYAML-based framework
Desktop platformsWindows, macOS, Linux
Docker imageszap-stable, zap-weekly
CI/CDOfficial GitHub Actions, GitLab templates
Output formatsHTML, JSON, XML, Markdown, SARIF
Maintained byCheckmarx (all 3 project leaders employed)

Key Features

Intercepting Proxy
Man-in-the-middle proxy that captures all HTTP/HTTPS traffic. Inspect requests and responses, modify parameters and headers, replay requests, and record authentication sequences. SSL/TLS decryption with ZAP’s CA certificate.
Automated Scanning
Traditional spider + AJAX spider (headless browser) for crawling. Passive scanner analyzes proxied traffic. Active scanner fires attack payloads at every discovered endpoint. Configurable scan policies control what gets tested.
Automation Framework
Define entire scan workflows in YAML files — contexts, authentication, spidering, scanning, and reporting. Run them from CLI or Docker. Treat your scan configuration as code in version control.

Intercepting Proxy

ZAP’s core is the man-in-the-middle proxy. Configure your browser to route traffic through ZAP and you can:

  • Inspect every request and response in real-time
  • Modify parameters, headers, and request bodies before they reach the server
  • Replay requests with altered values (fuzzing, parameter tampering)
  • Record authentication sequences for automated replay
  • Decrypt SSL/TLS traffic with ZAP’s installed CA certificate

Spider and Active Scanner

ZAP combines two crawling approaches:

  • Traditional Spider: Follows HTML links, submits forms, extracts URLs from JavaScript. Fast but misses dynamically generated content.
  • AJAX Spider: Launches a headless browser (Firefox or Chrome) that executes JavaScript. Catches SPA routes, client-side navigation, and AJAX endpoints. Slower but more thorough for modern apps.

After crawling, the Active Scanner fires attack payloads against every discovered parameter and endpoint. The Passive Scanner runs continuously in the background, analyzing all proxied traffic for security issues without sending additional requests.

ZAP automated scan quick start interface

API Scanning

ZAP imports API definitions and tests each endpoint:

# Import and scan an OpenAPI spec
zap-api-scan.py -t https://example.com/openapi.json -f openapi

# GraphQL scanning
zap-api-scan.py -t https://example.com/graphql -f graphql

# SOAP WSDL scanning
zap-api-scan.py -t https://example.com/service.wsdl -f soap
SARIF Output
ZAP outputs results in SARIF format, which GitHub, GitLab, and Azure DevOps understand natively. Upload SARIF files as code scanning results and security findings appear directly in pull request annotations.

Automation Framework

The YAML-based automation framework is how most teams integrate ZAP into CI/CD:

env:
  contexts:
    - name: "Default Context"
      urls:
        - "https://example.com"
      authentication:
        method: "form"
        parameters:
          loginUrl: "https://example.com/login"
          loginRequestData: "username={%username%}&password={%password%}"
      users:
        - name: "testuser"
          credentials:
            username: "[email protected]"
            password: "testpass123"

jobs:
  - type: spider
    parameters:
      context: "Default Context"
      user: "testuser"
      maxDuration: 5

  - type: spiderAjax
    parameters:
      context: "Default Context"
      maxDuration: 5

  - type: passiveScan-wait
    parameters:
      maxDuration: 10

  - type: activeScan
    parameters:
      context: "Default Context"
      user: "testuser"

  - type: report
    parameters:
      template: "traditional-html"
      reportFile: "zap-report.html"

Add-On Marketplace

ZAP’s marketplace has hundreds of extensions:

  • Additional scan rules for specific technologies
  • Import/export formats (HAR, OpenAPI, Postman)
  • Reporting templates
  • Authentication handlers
  • Custom scripting (JavaScript, Python, Zest)
Baseline vs Full Scan
For CI/CD, start with zap-baseline.py — it runs a passive-only scan that completes quickly without sending attack traffic. Use zap-full-scan.py for scheduled weekly or nightly scans that include active scanning. This keeps PR checks fast while still getting thorough coverage on a regular schedule.

Installation

Desktop

Download from zaproxy.org/download/:

  • Windows: MSI installer or portable ZIP
  • macOS: DMG installer
  • Linux: DEB, RPM, Snap (sudo snap install zaproxy --classic), or TAR.GZ

Docker

# Stable image
docker pull zaproxy/zap-stable

# Baseline scan (passive only, fast)
docker run -t zaproxy/zap-stable zap-baseline.py \
  -t https://example.com

# Full scan (active scanning)
docker run -t zaproxy/zap-stable zap-full-scan.py \
  -t https://example.com -j

# API scan
docker run -t zaproxy/zap-stable zap-api-scan.py \
  -t https://example.com/openapi.json -f openapi

# Daemon mode for API access
docker run -u zap -p 8080:8080 zaproxy/zap-stable \
  zap.sh -daemon -host 0.0.0.0 -port 8080

Package Managers

# macOS
brew install --cask zap

# Linux (Snap)
sudo snap install zaproxy --classic

# Windows (Chocolatey)
choco install zap

Getting Started

1
Install ZAP — Download the desktop app or pull the Docker image. Desktop is best for learning; Docker is best for CI/CD.
2
Configure your browser — Set your browser to use ZAP as a proxy (default: localhost:8080). Install ZAP’s CA certificate for HTTPS interception.
3
Spider the application — Use the Quick Start tab to enter a URL and launch an automated scan. ZAP crawls with both the traditional and AJAX spider.
4
Review findings — Alerts appear in the bottom panel, color-coded by severity (red = high, orange = medium, yellow = low). Click any alert for details, evidence, and remediation guidance.
5
Export results — Generate HTML reports for stakeholders, JSON for automation, or SARIF for GitHub/GitLab code scanning integration.

Integrations

CI/CD Platforms
GitHub Actions GitHub Actions
GitLab CI GitLab CI
Jenkins Jenkins
Azure DevOps Azure DevOps
Code Platforms
GitHub (SARIF) GitHub (SARIF)
GitLab (SARIF) GitLab (SARIF)
Azure DevOps (SARIF) Azure DevOps (SARIF)
Vulnerability Management
DefectDojo DefectDojo
ThreadFix ThreadFix
Jira Jira

CI/CD Integration

GitHub Actions

name: ZAP Security Scan
on:
  push:
    branches: [main]
  pull_request:

jobs:
  zap-baseline:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Start application
        run: docker-compose up -d && sleep 30
      - name: ZAP Baseline Scan
        uses: zaproxy/[email protected]
        with:
          target: 'http://localhost:8080'
          rules_file_name: '.zap/rules.tsv'
          cmd_options: '-a'
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: zap-report
          path: report_html.html

GitLab CI

zap-baseline:
  stage: security
  image: zaproxy/zap-stable
  script:
    - mkdir -p /zap/wrk
    - zap-baseline.py -t $CI_ENVIRONMENT_URL
        -g gen.conf -r zap-report.html
        -J zap-report.json || true
  artifacts:
    paths:
      - zap-report.html
    reports:
      dast: zap-report.json

ZAP vs Burp Suite

AspectZAPBurp Suite Pro
CostFree$499/year per user
LicenseApache 2.0Proprietary
Detection accuracyGoodSlightly better
CI/CD integrationExcellent (official Actions)Good (Enterprise only)
ExtensibilityOpen marketplaceBApp Store
API scanningREST, GraphQL, SOAPREST, GraphQL, SOAP
Manual testingFull proxy + toolsMore polished UI
CommunityLarge open-source communityStrong commercial support

When to Use ZAP

ZAP is the right choice when you want capable DAST scanning without licensing costs. The automated scanning, API testing, and CI/CD integration are genuinely good — not just “good for free software.”

Good fit for:

  • Teams that need DAST without budget for commercial tools
  • CI/CD pipelines needing automated security scanning with official GitHub Actions
  • Security professionals learning pentesting techniques
  • Open-source projects that want OSS-only tooling
  • Manual penetration testing alongside automated scanning
  • Organizations that want scan configuration as code (YAML automation framework)

Not the best fit if:

  • You need vendor support SLAs and guaranteed response times
  • You want managed scanning (enterprise tools like Invicti or Veracode DAST handle that)
  • You need executive-level compliance dashboards out of the box
  • Your team has no appetite for learning a tool with a steeper initial learning curve

History

ZAP started as a fork of Paros Proxy in 2010. Simon Bennetts, the original project lead, has said that by 2014 only about 20% of ZAP’s code came from Paros — the rest was built from scratch.

The project achieved OWASP Flagship status.

In September 2024, Checkmarx partnered with ZAP and hired all three project leaders. Checkmarx committed to keeping ZAP free and open source while providing resources for continued development.

Note: Now branded as ZAP by Checkmarx. In September 2024, Checkmarx joined forces with ZAP and employs all three project leaders. Still free, still open source under Apache v2 license.

Frequently Asked Questions

What does ZAP do?
ZAP is a free, open-source DAST scanner that finds security vulnerabilities in running web applications. It functions as an intercepting proxy for manual testing and includes automated scanning for quick assessments. It supports REST, GraphQL, and SOAP API testing.
Is ZAP free?
Yes, completely. ZAP is released under the Apache 2.0 license with no paid tiers or feature restrictions. It is maintained by the ZAP community and funded by Checkmarx, which employs all three project leaders.
How does ZAP compare to Burp Suite?
ZAP is entirely free with no feature limits. Burp Suite Pro costs $499/year per user and generally has slightly better detection rates and a more polished UI. For teams that need a no-cost DAST solution with strong CI/CD integration, ZAP is the standard choice.
Can ZAP run in CI/CD pipelines?
Yes. ZAP provides official Docker images and GitHub Actions for CI/CD use. The YAML-based automation framework defines scan policies as code, and results can be output in SARIF format for integration with code platforms.
What happened with ZAP and Checkmarx?
In September 2024, Checkmarx partnered with ZAP and hired all three project leaders (Simon Bennetts, Rick Mitchell, Yiannis Pavlosoglou). ZAP remains free and open source under Apache 2.0. Checkmarx provides funding for ongoing development.

Complement with IAST

Pair dynamic testing with runtime instrumentation for broader coverage.

See all IAST tools

Comments

Powered by Giscus — comments are stored in GitHub Discussions.