Release 2.16.0

This is a bug fix and enhancement release. Look out for new Blog Posts and Videos which will cover some of these new features in much more depth in the coming days and weeks.

This release was made possible thanks to Checkmarx who employ 3 of the Core Team to work on ZAP.

These release notes do not include all of the changes included in add-ons updated since 2.15.0.

Some of the more significant enhancements include:

Update to a Minimum of Java 17

ZAP now requires a minimum of Java 17 to run. This allows us to use more modern Java features in the ZAP codebase.

As a result of this move scripts which use the Nashorn JavaScript engine may no longer work, this is because the engine is no longer present in Java 17. Any scripts configured to use Nashorn will automatically be changed to use the Graal.js JavaScript engine. However you may still need to migrate these scripts, see the Migration Guide from Nashorn to GraalJS.

Client Spider

The Client Integration add-on is now included as standard, and provides a new Client Spider. The Client Spider works in a similar way to the AJAX Spider but it has access to the DOM via the ZAP Browser Extension which means that it can find content which the AJAX Spider cannot find.

While it is still at an early stage we believe it is a more effective approach than the AJAX Spider. We will be focussing on improving the Client Spider and the current plan is for it to supersede the AJAX Spider as the recommended way of crawling modern web apps.

Detachable Tabs

You can now detach any of the ZAP desktop tabs so that they will appear in their own windows. This means that you can see more than one tab in the group at the same time, and allows you to distribute those windows across multiple monitors. Just right click any tab to see the ‘detach’ option and close the tab window to return it to the main ZAP window.

Standard Policy Definitions

We now have a standard set of active scan policy definitions which we recommend for use in specific situations. Using these definitions will just enable the most suitable active scan rules. This will speed up your active scans and will reduce noise. Some of the standard active scan rules are really targetted at pentesters, and these can waste developers time.

For more details see the new Scan Policies add-on.

Site Tree Export and Pruning

We now have a standard format for representing the Sites Tree in a text file: Sites Tree Format. This format uniquely identifies nodes in the Sites tree. While this might not sound particularly exciting, it does actually allow you to use ZAP to perform “differential” scans, i.e. only attacking endpoints that have changed. This means that ZAP can be used to perform really fast testing in CI/CD.

Sequence Scanning Updates

The Sequence Scanner add-on has received significant attention. It now runs much more quickly and has full Automation Framework support. As a result it has been promoted to Beta status.

Passive Scanner Moved into an Add-On

The passive scanner has now been moved into an add-on: Passive Scanner. We have an ongoing plan to move as much functionality out of the core as possible, as this allows us to push out fixes and enhancements much more quickly.

Automation Framework Enhancements

The Automation Framework has a set of new jobs:

  • activeScan-config This job configures the active scanner, for custom active scans (e.g. Sequence).
  • activeScan-policy This job defines an active scan policy.
  • spiderClient This job allows you to run the client spider.
  • exitStatus This job sets ZAP’s exit code based on scan results.
  • export This job allows you to export messages in HAR format or as URLs as well as exporting the Sites Tree.
  • prune This job allows you to remove nodes from the Sites Tree using data from a file in the Sites Tree format.
  • sequence-import This job allows you to create a sequence from an HAR file.
  • sequence-activeScan This job allows you to active scan sequences.

Checkmarx Rebranding

This release is the first full release with the “ZAP by Checkmarx” branding.

Docker Hub Organisation Deprecation

We will not use the softwaresecurityproject org for 2.16.0 or following releases.

If you still use this org then please switch to zaproxy.

Dependency Updates

As usual the release includes dependency updates.

The following libraries were updated:

  • Commons Codec, 1.16.1 → 1.17.1
  • Commons CSV, 1.10.0 → 1.12.0
  • Commons IO, 2.16.1 → 2.18.0
  • Commons Lang3, 3.14.0 → 3.17.0
  • Commons Logging, 1.3.1 → 1.3.4
  • Flatlaf, 3.4.1 → 3.5.4
  • hsqldb, 2.7.2 → 2.7.4
  • jfreechart, 1.5.4 → 1.5.5
  • log4j-1.2-api, 2.20.0 → 2.24.2
  • log4j-api, 2.20.0 → 2.24
  • log4j-core, 2.20.0 → 2.24.2
  • log4j-jul, 2.20.0 → 2.24.1
  • Rsyntaxtextarea, 3.4.0 → 3.5.2

Also note that the harlib dependency is no longer part of the compile classpath and that its use is deprecated.

Add-Ons

Updated Add-Ons

All of the add-ons included by default have been updated since the last full release.

Enhancements

  • Issue 2109 : Undock Tabs
  • Issue 7959 : Move Passive Scanner to an add-on
  • Issue 8016 : Move `ValueGenerator` to an add-on
  • Issue 8321 : Update zap.sh script to get memory usage in containers
  • Issue 8375 : Add telemetry to toolbar buttons
  • Issue 8518 : Search in notes
  • Issue 8554 : Manage Add-ons table columns should all have names
  • Issue 8602 : Make some dialog messages copyable.
  • Issue 8615 : Remove “Nashorn” JavaScript templates
  • Issue 8667 : Retain and expose source message ID of alerts
  • Issue 8673 : Support history -> alert tags
  • Issue 8676 : Fix FPs in isSuccess and isPage200
  • Issue 8678 : Std file chooser fixes
  • Issue 8685 : Add manual alert add/modify and vuln selection stats
  • Issue 8734 : Log ID of the active scans
  • Issue 8752 : Make HarLib an implementation dependency
  • Issue 8753 : Deprecate `HarUtils`
  • Issue 8759 : Use always latest request sent if same status
  • Issue 8763 : Deprecate context menu method no longer needed
  • Issue 8768 : Include more info when logging DB max size limits
  • Issue 8774 : Add constants for Client Spider
  • Issue 8778 : Support swapping output panel implementation
  • Issue 8785 : Add local address to HTTP request header
  • Issue 8787 : Treat Nashorn scripts as Graaljs ones

Bug fixes

  • Issue 8496 : Fix exceptions for no/empty path in path variant
  • Issue 8498 : Do not use null domain in auth credentials
  • Issue 8533 : Issue re-loading passive scan rules on add-on upgrade
  • Issue 8546 : Prevent adding same add-on’s `ResourceBundle`
  • Issue 8589 : Correct label in a Structural Modifier dialogue
  • Issue 8590 : Correct `StructuralNodeModifier` key check
  • Issue 8631 : Concurrent access to Graal.js Proxy scripts with latest ZAP versions
  • Issue 8632 : Fix EDT access on script node changes
  • Issue 8635 : Concurrent access to Graal.js Input Vector scripts
  • Issue 8665 : Correct data returned in poll headers field
  • Issue 8707 : Fix exception when printing null to error stream
  • Issue 8769 : Notify script node changes in the correct thread
  • Issue 8771 : Fix OverlayIcon scaling
  • Issue 8773 : Add missing scaling to some icons

See Also

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