Versioned security assessment

Report ID: SA-4ABBE47F

7/5/2026, 2:18:00 AM

dast-zap security assessment v7

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
dast-zap
Version
v7
Maintainer
AgentSecOps
Coverage
10 Files scanned · 2,903 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

Critical

3 confirmed security findings require attention.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static matches are expected OWASP ZAP documentation, placeholder URLs, or markdown syntax and were dismissed as false positives. Confirmed risks remain for runnable Docker and CI scan commands, sudo package installation, token acquisition examples, query-string API key guidance, and explicit file-disclosure payloads used for XXE and path traversal testing. A semantic issue was added for reusable context templates that contain concrete example passwords.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

10 Files scanned · 2,903 Lines analyzed

32 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 116 evidence locations

Filesystem access

May read or write local files.

Observed in 4 evidence locations

Env variables

May read values from the process environment.

Observed in 2 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 96 evidence locations

Capability review items (29)
High
sudo privilege escalation
sudo apt-get update && sudo apt-get install -y jq
The workflow runs sudo apt-get to install jq on the CI runner. This is normal in CI, but it is real elevated command execution and should be pinned or justified.
High
Generic API/secret keys
--target https://api.example.com?api_key=your-api-key \
The guide places an API key in a URL query parameter. Query-string secrets can leak through logs, browser history, proxies, and reports.
High
Path traversal sequence
curl "https://example.com/download?file=../../etc/passwd"
The verification example requests ../../etc/passwd through a download parameter. This is intentional testing guidance, but it is an exploit attempt if used outside an authorized target.
Medium
Shell command substitution
-v $(pwd)/$REPORTS_DIR:/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd)/$REPORTS_DIR:/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd)/.zap:/zap/config/:ro \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd)/$REPORTS_DIR:/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd):/zap/specs/:ro \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-full-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
TOKEN=$(curl -X POST https://api.example.com/auth/login \
The example executes curl to obtain an authentication token and stores it in a shell variable. This is legitimate test setup, but it handles credentials and performs network access.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd):/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
TOKEN=$(curl -X POST https://api.example.com/auth/login \
The example executes curl to obtain an authentication token and stores it in a shell variable. This is legitimate test setup, but it handles credentials and performs network access.
Medium
Shell command substitution
TOKEN=$(curl -X POST https://oauth.example.com/token \
The example executes curl to obtain an authentication token and stores it in a shell variable. This is legitimate test setup, but it handles credentials and performs network access.
Medium
Shell command substitution
TOKEN=$(curl -X POST https://oauth.example.com/token \
The example executes curl to obtain an authentication token and stores it in a shell variable. This is legitimate test setup, but it handles credentials and performs network access.
Medium
Shell command substitution
-v $(pwd):/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
-v $(pwd):/zap/wrk/:rw \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
TOKEN=$(curl -X POST https://api.example.com/auth/login \
The example executes curl to obtain an authentication token and stores it in a shell variable. This is legitimate test setup, but it handles credentials and performs network access.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-full-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-full-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-api-scan.py \
The snippet uses shell substitution in a Docker-based ZAP command and bind-mounts local paths into a scanning container. This is intended tooling, but it is real command execution with filesystem exposure.
Medium
Shell command substitution
HOST_IP=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
The command derives the Docker bridge IP from local network interface data before scanning. It is troubleshooting guidance, but it performs local network discovery.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (3)

RISK-001 Critical
System password file access
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
The XXE payload explicitly references file:///etc/passwd to test server-side file disclosure. It is security testing material, but it is a real exploit payload that must be scoped and authorized.
RISK-002 Critical
System password file access
curl "https://example.com/download?file=../../etc/passwd"
The same path traversal example attempts to read /etc/passwd from a target application. It is legitimate for verification only when the tester has explicit authorization.
RISK-003 Medium
Hardcoded Example Credentials in Authentication Templates
The ZAP context and authentication guide include concrete example passwords that could be reused if copied into real scan configurations.
Both cited locations contain password fields with literal example values. They are templates, so the issue is copy-and-paste reuse rather than direct exfiltration.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    Critical
    Active scan and exploit examples can affect real systems when copied without scope controls.
    Add mandatory authorization, target allowlist, and confirmation language beside every active scan and exploit payload example.
  2. FIX-002
    High
    API key guidance shows a key in the query string.
    Prefer headers or protected secret variables, and warn that query-string secrets can leak through logs and browser history.
  3. FIX-003
    High
    CI templates install packages with sudo and run scanning tools inside workflows.
    Use pinned runner images with required tools preinstalled, or document why elevated installation is required.
  4. FIX-004
    Medium
    Authentication context examples include concrete passwords.
    Replace example passwords with empty placeholders or environment variable references, and disable sample users by default.
  5. FIX-005
    Medium
    Docker examples bind-mount the current workspace into ZAP containers.
    Mount only dedicated report or specification directories, prefer read-only mounts when possible, and avoid running from sensitive directories.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable