Skip to main content
availability

Package: Invicti AppSec Core (on-demand), Invicti AppSec Enterprise (on-premise, on-demand)

OWASP ZAP Headless DAST/API Integration

OWASP ZAP Headless is the daemon mode variant of OWASP ZAP, designed for automated CI/CD pipeline integration. It runs without a graphical interface, making it suitable for headless server environments. In Invicti AppSec, ZAP Headless runs as an agent-based or KDT-managed scanner.

caution

OWASP ZAP Headless is an Agent/KDT-based scanner. It does not require connection to an external service. Scans are executed by the Invicti agent installed in your environment or via KDT.

Prerequisites

RequirementDescription
Invicti AgentAn Invicti AppSec agent must be installed and running in the target environment
Target URLThe web application URL that the agent can reach and scan
DockerDocker must be installed on the agent host (ZAP Headless runs as a Docker container)

Step 1: Navigate to Integrations

From the left sidebar menu, click on Integrations.

Integrations sidebar

Step 2: Select the DAST/API Tab

On the Integrations > Scanners page, click on the DAST/API tab.

DAST/API tab

Step 3: Find and Activate OWASP ZAP Headless

Scroll through the list of DAST/API scanners to find OWASP ZAP Headless.

  • If OWASP ZAP Headless is not activated, you will see an "Activate" button. Click it to enable the integration.
note

The scan method badge on the OWASP ZAP Headless card shows KDT. No external API credentials or server connection are required. Scans are executed directly by the Invicti agent installed in your environment or via KDT.

OWASP ZAP Headless settings

Summary

StepAction
1Navigate to Integrations from the sidebar
2Select the DAST/API tab
3Activate OWASP ZAP Headless (no credentials needed)

Create a Scan

  1. Open a project in Invicti AppSec.
  2. Go to Settings > Scanners.
  3. Click Add Scanner.

Add OWASP ZAP Headless Scanner

  1. Select DAST/API as the scanner type.
  2. Choose OWASP ZAP Headless from the scanner list.
  3. Click Add to open the scan configuration drawer.

Scan Configuration Fields

FieldDescriptionRequired
EnvironmentSelect the environment for the scanNo
Target URLWeb application URL to scanYes
ModeScan mode: Full, Baseline, or APINo
Upload ConfigOptional ZAP configuration fileNo
Upload ContextOptional ZAP context fileNo
TagZAP Docker image tag to use (e.g., latest, v2.14.0)Yes
BranchSource code branch associated with this scanNo
Meta DataAdditional metadata for the scanNo
Scan TagTag to identify the scanNo
OWASP ZAP Headless scan creation

Scheduler

Enable the Scheduler toggle to run scans on a recurring schedule.

Webhook (Optional)

Add a webhook URL to receive scan completion notifications.

KDT Command

kdt scan -p <project_name> -t zapheadless -b <branch_name>

Troubleshooting

Scan Issues

IssueResolution
Agent not availableEnsure the Invicti agent is installed, running, and connected
Docker not foundInstall Docker on the agent host and ensure the daemon is running
Target not reachableVerify the target URL is accessible from the agent host
Image pull failedCheck internet access from the agent host to Docker Hub
API scan incompleteVerify the OpenAPI/Swagger spec URL is valid and accessible from the agent
Scan timeoutReduce the scan scope or increase the timeout setting

Best Practices

  • Use ZAP Headless for CI/CD pipeline automation where no GUI access is needed.
  • Provide an OpenAPI or Swagger specification to enable targeted API security testing.
  • Pin to a specific ZAP Docker image version for consistent, reproducible scan results.
  • Use Baseline scan mode in pull request pipelines for fast feedback.
  • Reserve Full scan mode for nightly or weekly scheduled scans.
  • Combine with a SAST scanner for comprehensive security coverage.

Limitations

  • ZAP Headless requires Docker to be installed on the agent host.
  • The target application must be reachable from the agent host network.
  • Headless mode has limited interaction with complex JavaScript-heavy single-page applications.
  • Authenticated scan configuration requires scripting and must be set up separately.
  • Results may include false positives; manual triage is recommended for production findings.

Need help?

Invicti Support team is ready to provide you with technical help. Go to Help Center

Was this page useful?