What ZAP brings to application security testing

OWASP ZAP is a dynamic application security testing (DAST) tool that finds vulnerabilities in web applications. As with all OWASP projects, it is free and open source. The project team believes it is the world's most popular web application scanner.

Two GitHub Actions provide the fastest way to start scanning:

More information is available at https://www.zaproxy.org.

Why teams should test from the start

ZAP finds security issues in web applications running in either test or production environments. Because it is easy to automate, it can scan for problems inside a CI/CD pipeline. There is no need to wait until deployment—a project can be scanned as soon as it runs. Beyond the GitHub Actions, ZAP can run through packaged scans in Docker images. A desktop UI and an innovative Heads Up Display (HUD) let developers also use ZAP manually to learn more about security.

DAST is highly effective for certain vulnerability classes, such as cross site scripting (XSS) and SQL injection (SQLi). Commercial DAST tools tend to be expensive and often enter the picture only when a project is ready to ship—if they are used at all. Integrating ZAP into the pipeline from the beginning catches common vulnerabilities early. Testing during development also sidesteps obstacles that make automated scanning harder later, including single sign-on (SSO) and web application firewalls (WAFs).

Where maintainers struggle

Dependency management is a recurring pain point. The ZAP project maintains a large number of repositories and, despite efforts to keep dependencies minimal, still carries a significant count. Keeping all of them current so they do not introduce vulnerabilities is time consuming. Manual code review also takes time, and for a security tool the stakes are higher: changes must stay both functionally correct and secure.

The biggest challenge across the open source community is training. Many developers have little or no security training, and therefore limited security knowledge. While open source code is in theory subject to "many eyes," most of it is never reviewed by anyone with security experience.

Practical hardening for open source projects

For web applications, or any project exposing a web-based interface, DAST tools such as ZAP are a good starting point—but not the only one. Static application security testing (SAST) tools are also valuable, especially when adopted at the beginning of a project. Introducing SAST to a mature codebase often produces a large list of potential issues, making it hard to prioritize what is actually critical. The two approaches are complementary, not competing; using both gives a fuller picture of a project's security posture.

The ZAP project itself applies several concrete measures to keep its code secure. GitHub branch protection rules ensure that the right people review all pull requests. Every pull request must pass CodeQL static code scanning checks, which gives developers useful feedback and makes reviewers' work easier. Code scanning with CodeQL has also measurably improved the quality of older code in the project.

For dependencies, the project relies on Dependabot to flag when updates are needed, significantly reducing the burden of dependency management.

The ZAP core team is made up entirely of experienced security developers. Pull requests need approval from at least two core team members and must pass CodeQL checks without failures. Two-factor authentication (2FA) is mandatory for everyone in the zaproxy organization. A bug bounty program also pays $1,000 for any remote code execution vulnerabilities found in ZAP.