Set scan cadence
Split every scanner into a fast mode and a deep mode. Incremental static analysis on changed files finishes in seconds and belongs on every commit. The full-repository scan, which takes minutes to hours depending on codebase size, runs nightly or before a release, and its findings go to a backlog rather than a red build.
Dynamic scanning needs the same split. A targeted authenticated pass against changed endpoints fits a per-deployment trigger. A full crawl with active injection payloads does not, so schedule it weekly against a stable environment. Ephemeral preview environments are useful here, provided the scanner can authenticate against them and the environment lives long enough for the scan to finish.
Feed the scanner your API contract rather than hoping it finds everything. Then be deliberate about production. Active dynamic application security testing sends payloads designed to change state, and running it against live systems risks data corruption and outages. Passive monitoring and attack surface scanning belong in production. Active testing does not.
One note on urgency. The 2025 DBIR found organisations took a median of 32 days to fully remediate edge device vulnerabilities, and 22% of exploitation targeted edge devices and VPNs, roughly eight times the prior year. Cadence decisions on internet-facing services carry more weight than the same decisions internally. Your SAST vs DAST schedule should reflect that asymmetry.
Manage findings

Scanners produce volume. An operating process turns volume into a short list of things that credible people agree are real, assigned to someone who can fix them. Without that process, the SAST vs DAST investment becomes a queue nobody reads, and developers learn to ignore a red pipeline.
Assign triage ownership
Three roles need naming before the first scan runs, and the split matters more than the job titles you use:
-
Security owns validation and deduplication. They confirm the finding is real and assign risk using exploitability and asset criticality rather than the scanner's default severity.
-
Engineering owns the fix and the feedback. When a finding is wrong, the engineer says why, and that reasoning becomes a suppression rule or a tuned query rather than a comment in a ticket.
-
Product owns the trade-off. Accepting risk for a release window is a commercial decision, so it needs a named approver and an expiry date.
Recurring false positives are a tuning defect. If the same pattern gets dismissed three times, change the rule. Teams that skip this step reach the point where developers suppress everything, which is the failure mode worth designing against.
Set release gates
Blocking on every finding is how gates get disabled. Gate on a combination of severity and confirmed exploitability, then let everything else flow into the backlog with an owner and a date.
Separate new issues from inherited ones. A team taking over a legacy service cannot clear ten years of findings before shipping a bug fix, so the gate should block regressions introduced by this change while the historic backlog runs on a scheduled reduction plan. Compensating controls count, provided they are real and documented.
Exploitability is where prioritisation earns its keep. FIRST notes that the fraction of known vulnerabilities exploited in any 30-day window sits in the low single-digit percent, and that remediating everything scoring CVSS 7 or above wastes 96% of the effort. Every override needs a written reason and an approver.
Define remediation SLAs
Attach deadlines to severity, then adjust for circumstance. CISA's BOD 22-01 directive set two weeks for confirmed exploited vulnerabilities disclosed from 2021 onwards, which is a defensible anchor for anything internet-facing.
-
Active exploitation or KEV listing: treat as an incident, not a ticket, and escalate to the service owner and the engineering lead on the same day.
-
Internet-exposed assets: halve whatever window you would apply to the equivalent internal finding.
-
High fix complexity: keep the deadline, but require a documented interim mitigation if the fix will overrun it.
-
Accepted risk: time-bound and re-reviewed on expiry.
Track age rather than count. A backlog of 400 low-severity findings with none older than the SLA is healthier than 40 findings where six have been open for a year. Escalation should be automatic at the breach point and land on someone with budget authority.
Review the testing plan
What each layer covers and who owns triage belong in writing. If any of those is unwritten, it is being decided ad hoc by whoever is on call.
Evolved Ideas has built and supported software for organisations including Bridgestone and the NHS, and our engineers work inside client delivery pipelines on testing and release practice. Talk to our team about reviewing security testing across your lifecycle and settling SAST vs DAST coverage properly.