Lakshya

Security Engineering & Tooling · Chapter 2 of 8

Testing what is deployed — DAST, secrets, and the commoditised scanners

Why DAST lost ground and where it still wins outright; why detecting a secret is almost worthless; and why nobody sells container scanning any more.

6 min read1 diagramAll 8 chapters

DAST — why it declined

  • Single-page apps broke crawling. Client-side routing, a JavaScript-rendered DOM and async API calls defeat crawler-based discovery. Coverage silently collapses — and the scan still reports “complete”, which is the dangerous part.
  • Runtime cost. A full scan takes hours to days. That is incompatible with gating a pull request.
  • No root cause. It tells you an endpoint is vulnerable; somebody still has to find the line.
  • APIs moved east-west. Machine-to-machine and internal traffic is invisible to a crawler that starts at a login page — and in 2025 APIs were 17% of published vulnerabilities but 43% of newly added KEV entries.

Where it still wins outright

1 — It tests what is actually deployed. It is the only category that sees the running configuration: the reverse proxy, the WAF (web application firewall) bypass, the misapplied header, the staging endpoint nobody knew was public. SAST cannot see any of that, because none of it is in the source.

2 — Authentication and session flaws. Session fixation, token handling, logout behaviour, cookie scoping.

3 — Zero false positives on confirmed exploitation. A tool that gets a reflected payload back has proven the finding. That is a stronger evidentiary position than any static finding, and it is why DAST output survives an argument with a developer.

4 — Schema-driven API testing, which is the modern form: point it at an OpenAPI or GraphQL schema — a machine-readable description of the API — instead of crawling for endpoints.

Two naming facts that date you if you get them wrong.

ZAP is no longer an OWASP project. It left OWASP in August 2023 for the Linux Foundation's Software Security Project, and the core team joined Checkmarx in 2024. It is still open source and free. Calling it “OWASP ZAP” in 2026 dates you by three years.

Burp Suite Enterprise Edition was renamed Burp Suite DAST in May 2025. Burp Professional is $499 per user per year as of January 2026 — and it is the manual testing standard, not a CI tool. Do not propose it as a pipeline gate.

Secrets — the one category with a real base rate

This is the only AppSec category with a credible, large-N, longitudinal measurement, for a simple reason: public GitHub is observable by anyone, so the finding is reproducible in principle rather than being vendor telemetry.

FOUR STAGES — AND ONLY ONE OF THEM PREVENTS THE INCIDENT 1 DETECTDoes this string matchthe shape of a secret?Gitleaks. Fast, free, pre-commit2 VALIDATEIs this credential liveright now?TruffleHog — 700+ types3 ROTATEIs it still usable bywhoever already has it?THE ACTUAL FIX4 PREVENTCan it be committedat all?Push protection Stage 3 is the fix. Deleting the commit is NOT the fix. History is immutable, forks and clones exist, and the commit was scraped within minutes. AND LEAKED SECRETS STAY LIVE FOR YEARS ~70% of credentials confirmed valid in 2022 were STILL VALID in January 2025. Still above 64% in January 2026. Four years on, two-thirds of leaked secrets still work. SCALE, FROM 1.94 BILLION PUBLIC COMMITS IN 2025 28.65Mnew secrets, +34% YoY1.27MAI-service keys, +81%~6×private repos vs public~28%from Slack/Jira, not repos
Detection without validation and rotation is nearly worthless. A regex match says investigate; a verification call says page someone. Only stage 4 prevents the incident.

The counterintuitive finding, and the one to remember: private repositories are roughly six times more likely than public ones to contain a hardcoded secret. Developers self-censor in public. So every public-GitHub number is a floor, not a ceiling — your own estate is almost certainly worse than the headline. And about 28% of incidents originate outside repositories entirely, in Slack, Jira and Confluence, where those are 13 percentage points more likely to be rated critical.

The answer to “we found an AWS key in the repo”

Rotate first. Not “remove it and rewrite history” — that is the most common wrong answer and it fails for a concrete reason: forks, clones, caches and scrapers already have it, and the data says two-thirds of leaked credentials are still valid years later.

Then check what it did. Pull the audit log for the whole exposure window, not just today.

Then clean history. This is hygiene, not remediation.

Then turn on push protection, so it cannot recur. It is the least sophisticated control on the list and the highest-leverage, because it is the only one that prevents rather than reports.

Anyone who says “I'd rewrite git history” without saying “rotate first” has failed the question.

IaC and container scanning — where every 2023 guide is wrong

Two of the three tools every older guide recommends are dead. Terrascan was archived by Tenable in November 2025 — the repository notice reads that the project is no longer maintained. tfsec is deprecated in favour of Trivy, its own maintainer having consolidated all scanning efforts there.

Live choiceOwnerScope
TrivyAqua, Apache 2.0One binary: containers, IaC (it absorbed the tfsec check library), filesystem, Kubernetes, secrets, licences, SBOM
CheckovPalo Alto (Cortex Cloud)IaC-focused, very high release cadence, the strongest policy-as-code story
GrypeAnchore, Apache 2.0Vulnerability matching only — but composites CVSS + EPSS + KEV into a risk score

Notice the strategic shape, because it is the actual answer to “which scanner should we buy”: this entire layer is free and open source, and two of the three leaders are maintained by the platform vendors themselves. The scanners are loss-leaders. Nobody sells container scanning any more — they sell the console that aggregates its output.

And what container scanning structurally cannot do: it tells you a package with a CVE is present in a layer. It cannot tell you the binary is ever executed, that the container runs as non-root, that capabilities are dropped, or that the image is the one actually deployed. Base-image CVE count is the single most-gamed metric in this category — moving to a distroless or Alpine base can drop the number by 90% while changing your real risk very little. If someone reports that as a security win, ask what stopped being exploitable.

Check yourself

Why did DAST lose ground?SPAs broke crawler-based discovery — and coverage collapses silently while the scan still reports complete. Plus hours-long runtimes, no root cause, and APIs that a crawler never reaches.
Where does DAST still win outright?It tests the deployed configuration — proxy, WAF, headers, the staging endpoint nobody knew was public. And a reflected payload is proof, not a probability.
Is it still called OWASP ZAP?No. ZAP left OWASP in August 2023 for the Linux Foundation, and the team joined Checkmarx in 2024. Still free and open source.
What is the fix for a leaked credential?Rotate. Then audit the exposure window, then clean history, then enable push protection. Rewriting history alone fixes nothing — two-thirds of leaked secrets are still valid years later.
Which repos leak more, public or private?Private, by about 6×. Developers self-censor in public — so every public-GitHub figure is a floor.
Why is base-image CVE count a bad metric?Switching to distroless or Alpine can drop it 90% while changing real risk very little. It measures packages present, not code executed.
← What the tools are, and what they structurally cannot doCloud security — CNAPP, agents, and the alert-volume problem →