Release 2.0.0

The following changes were made in this release:

Significant changes:

An integrated add-ons marketplace

ZAP can be extended by add-ons that have full access to all of the ZAP internals. Anyone can write add-ons and upload them to the ZAP Add-on Marketplace (OK, so its a Google code project called zap-extensions, but you get the idea).
More importantly you can now browse, download and install those add-ons from within ZAP. Most add-ons can be dynamically installed (and uninstalled) so you wont even need a restart.
You can choose to be notified of updates, and even be automatically updated. And as the scan rules are now implemented as add-ons you can get the latest rules as soon as they are published.

A replacement for the ‘standard’ Spider

The ‘old’ Spider was showing its age, so its been completely rewritten, and is much faster and more comprehensive than the old one. This is still a ’traditional’ spider that analyses the HTML code for any links it can find.

A new ‘Ajax’ spider

In addition to the ’traditional’ spider we’ve added an Ajax spider which is more effective with applications that make heavy use of JavaScript. This uses the Crawljax project which drives a browser (using Selenium) and so can discover any links an application generates, even ones generated client side.

Web Socket support

ZAP now supports WebSockets, so ZAP can now see all WebSocket messages sent to and from your browser. As with HTTP based messages, ZAP can also intercept WebSocket messages and allows you to change them on the fly.
You can also fuzz WebSockets messages as well using all of the fuzzing payloads included in ZAP from projects like JBroFuzz and fuzzdb. And of course you can easily add your own fuzzing files.

Quick Start tab

The first main tab you will now see is a ‘Quick Start’ tab which allows you to just type in a URL and scan it with one click.
This is an ideal starting point for people new to application security, but experts can easily remove it if they find it distracting.

Session awareness

ZAP is now session awareness, so that ZAP can recognise and keep track of multiple sessions. It allows you to create new sessions, switch between them, and applies to all of the other components, like the Spider and Active Scanner.

User defined Contexts

You can now define any number of ‘contexts’ - related sets of URLs which make up an application. You can then target all URLs in a context, for example using the Spider or Active Scanner. You can also add the contexts to the scope, and associate other information, such as authentication details.

Session scope

The session scope allows you to specify which contexts you are interested at any one time. You can restrict what you see in various tabs to just the URLs in scope, and prevent accidentally attacking URLs not in scope by using the Protected mode.

Different modes

ZAP now supports 3 modes:

  • Safe, in which no potentially dangerous operations permitted
  • Protected, in which you can perform any actions on URLs in scope
  • Standard, in which you can do anything to any URLs

Authentication handling

You can now associate authentication details with any context, which allows ZAP to do things like detect if and when you are logged out and automatically log you back in again. This is especially useful when used via the API in security regression tests.

More API support

The REST API has been significantly extended, giving you much more access to the functionality ZAP provides.

Fine grained scanning controls

The active scan rules can now be tuned to adjust their strength (the number of attacks they perform) and the threshold at which they report potential issues.

New and improved active and passive scanning rules

We have uploaded the results from running ZAP 2.0.0 against wavsep (the most comprehensive open source evaluation project we are aware of) to the ZAP wiki: https://github.com/zaproxy/zaproxy/wiki/Testing TODO ;)

Full list of changes:

Issue 43: Scope option for filtering

Issue 163: Active scanner failing against DVWA [ high false positives/true negatives rate]

Issue 175: Better bruteforce wordlist

Issue 240: SocketException whilst fuzzing not handled correctly.

Issue 278: Root CA Certificate for Dynamic SSL invalid on some platforms due to ExtendeKeyUsage extension

Issue 281: Alert class JSON dependency

Issue 299: Feature request: Show count of found URIs during Spider

Issue 305: Passive scanner rule for suspicious comments like TODO and FIXME

Issue 326: Response time and total length in manual request

Issue 330: robots.txt parsing

Issue 332: Support for modes

Issue 333: Spider - add option to crawl everthing in scope

Issue 335: Web Sockets - add support for Modes and Scope

Issue 342: Add an HttpSenderListener

Issue 350: Authentication management

Issue 354: Fuzzer attack strings not shown

Issue 356: Generate CSRF test form

Issue 358: Typo in “XFO Header Not Set” Solution

Issue 360: brute force sub directories

Issue 361: getHostPort on HttpRequestHeader for HTTPS CONNECT requests returns the wrong port

Issue 370: API - save session better error handling

Issue 374: API - save session synchronous or provide status

Issue 376: Masking the passwords provided for Authentication

Issue 385: Support contexts

Issue 386: API Web UI - support parameters with views

Issue 388: Allow user to specify which technologies apply to a context

Issue 390: Spider - Add option to spider all in context

Issue 391: ZAP Performance improvements

Issue 397: Support weekly builds

Issue 400: Generate new CA certificate will always produce certificate with same serial number

Issue 401: Exception when the (new) Spider is started through the API

Issue 402: GUI labels are not properly displayed on Linux (when language set to Polish)

Issue 403: Set options via the API using reflection

Issue 404: Labels not properly displayed when the Persian language is chosen

Issue 406: Spider - Add option to control the effect of parameters on visited URLs

Issue 410: charset wrapped in quotation marks

Issue 411: Allow proxy port to be specified on the command line

Issue 417: IndexOutOfBoundsException in ExtensionHttpSessions in daemon mode

Issue 419: Restructure jar loading code

Issue 420: API - support absolute session paths

Issue 421: Cleanly shut down any active scan threads on shutdown

Issue 422: Use exec in zap.sh so a new process is not forked

Issue 423: Active scanner and spider can deadlock if ZAP is shutdown while they are running

Issue 424: Exceptions in Web Sockets when session opened

Issue 425: Add quick start tab

Issue 428: ZAP Marketplace support

Issue 429: Active Scan URL via API scans more than just the specified URL

Issue 433: API: introduce mandatory parameters and optional descriptions

Issue 435: Active scan alerts may be “lost” after saving the session

Issue 436: Locking on session save or shutdown via the API

Issue 438: API enhancements

Issue 441: View incorrectly initialised in many places when in daemon mode

Issue 443: “No Anti-CSRF tokens were found in a HTML submission form” listed as “None. Warning only.”

Issue 446: KeyStore of a registered PKCS#11 provider is not retrieved if a PKCS#11 provider is already registered

Issue 447: Highlight attack when displaying alerts

Issue 448: Rename Brute Force ext to Forced Browse and add URLs to the tree

Issue 449: Missing help page for “Extensions” panel in the “Options” dialogue

Issue 451: Manual check for updates doesn’t work correctly in the newest weekly releases

Issue 453: Dynamic loading and unloading of add-ons

Issue 455: Split fuzzbd out into a new addon

Issue 456: Spider session handling tweeks

Issue 457: Search Tab arrow key support

Issue 459: Active scanner locking

Issue 460: Add a scan progress dialog

Issue 461: Add help file for Quick Start addon

Issue 462: Review: Patch/Review: SSLSocketFactory with TLS enabled and default Cipher options

Issue 466: Move Port Scan extension to ZAP extensions project

Issue 468: Upgrade SQL Injection rule to ‘release’

Issue 469: Allow anti csrf token to be added and removed via the API

Issue 471: Move BeanSell extension to ZAP extensions project

Issue 472: Spider accesses UI panel in daemon mode

Issue 473: Allow add-ons to remove views/components added to the message panels

Issue 474: Promote quick start to release status

See also

Introduction the introduction to ZAP
Releases the full set of releases
Credits the people and groups who have made this release possible