Pentest Findings Management: Report to Verified Fix
Babar Khan Akhunzada
November 7, 2026

A penetration test produces findings. A findings workflow produces fixes. The distance between the two is where most security programmes quietly lose half their money.
What happens to penetration test findings after the report is delivered?
Across more than 5,000 penetration tests, Cobalt found that 48% of exploitable findings were remediated, meaning just over half were not. Findings are lost at four specific handoffs: report to backlog, backlog to owner, owner to fix, and fix to verified closure. SecurityWall delivers findings into the tracker your engineers already use, with retesting included so closure is proven rather than assumed.
Where findings actually go
The most useful published measurement comes from Cobalt's State of Pentesting research, drawn from more than 5,000 penetration tests. Two numbers matter.
48% of exploitable findings were remediated. Just over half were not. And 69% of findings rated high or critical were fixed, which means roughly three in ten serious findings stayed open. The same research found a gap between perception and reality: 81% of organisations described their security posture as strong.
There is one genuinely encouraging number alongside those. Median time to resolve serious vulnerabilities fell from 112 days in 2017 to 37 days. Teams that do fix things fix them far faster than they used to. The problem is not speed any more. It is drop off.
Drop off is not one failure. It is four, and they compound.
A workflow that leaks a fifth at each of four handoffs delivers roughly four findings in ten. That is not a model of what happens; it is an arithmetic illustration of why a plausible looking process produces the published remediation rate. The rest of this article is about closing each handoff specifically.
Handoff 1: report to backlog
The report is a document. Your engineering organisation works from a tracker. Someone has to move findings across, and if that someone is a human with a PDF open on one screen and Jira on the other, findings are lost in proportion to how tired they are.
Three failures live here:
Transcription loss. Nobody creates tickets for the low and informational findings, so they never enter the backlog and never get counted. Six months later the same issues appear on the next report, and you pay full rate to rediscover them.
Duplicate inflation. The same issue arrives from a tester, a scanner and sometimes a bug bounty report, described three different ways. Import all three and you get three tickets, three owners and an open count nobody believes. Once the count is disbelieved, the backlog stops being used as a decision tool.
Context stripping. The ticket gets the finding title and a severity, and the evidence, request and response pair and screenshot stay behind in the PDF. The engineer receives an instruction without proof, which is the fastest route to a dispute.
The fix is mechanical. Findings should arrive in the tracker, not in a document that someone copies into the tracker. Where that is not possible, one person owns transcription within a fixed window, works to a deduplication rule rather than judgement, and copies evidence across with the finding rather than referring back to the report.
| Rule | Match on | Action |
|---|---|---|
| 1. Same asset, same weakness | Asset identifier plus CWE or CVE | Merge. Keep the earliest report date, add the new evidence. |
| 2. One cause, many assets | A single misconfiguration across several hosts | One parent, children per asset. Parent closes only when all children close. |
| 3. Sources disagree on severity | Same finding, different ratings | Take the higher, record both, note who rated what. |
| 4. Tester dismissed a scanner finding | Explicitly marked false positive | Suppress with an expiry date. Never permanently. |
Rule 4 is where invisible debt accumulates. A permanent suppression is a decision nobody will revisit. Every suppression expires after one cycle and a human renews it or it comes back.
Handoff 2: backlog to owner
A finding with a severity and no name attached to it will sit. This is the cheapest handoff to fix and the most frequently skipped, because assigning work to another team requires a conversation.
Name the owner during scoping, not after the report. The intake form for an engagement should carry a named engineer who will receive findings on that asset. Agreeing it before testing starts turns a negotiation into an administrative step, because at that point nobody knows what will be found and nobody is defending anything.
Three cases break this and need a rule each:
- Findings that span two teams. One owner, named, accountable for coordination. Shared ownership is no ownership.
- Findings on systems with no clear owner. The absence of an owner is itself a finding, and it belongs in the report. An unowned internet facing system is a risk independent of whatever the tester found on it.
- Group inboxes and team queues. A queue is where a finding goes to age. Assign to a person; let them reassign.
Handoff 3: owner to fix
The engineer has the ticket, the time and the intent, and still cannot close it. This handoff fails on quality of information rather than process.
Reproduction steps are the whole game. A finding an engineer cannot reproduce is a finding they cannot verify they have fixed. If the ticket does not contain the request, the response, the preconditions and the account used, the engineer either guesses or disputes. Both outcomes cost more than writing it down properly.
Remediation guidance must be specific to the configuration. A link to vendor documentation is not guidance. The engineer needs to know what to change in their stack, and where the change interacts with something else.
Disputes need a process, not a conversation. When a team says a finding is a false positive or not applicable, put the burden of proof on the dispute: the disputing team supplies evidence, the original tester reviews it, and the outcome is written down either way. Never let a verbal dismissal close a finding, and never let a dispute stop the clock. If the dispute is upheld, stop the clock retroactively.
Risk acceptance is a decision, not an absence of one. An accepted risk gets a named approver, a stated reason, a review date and an expiry. Acceptances that never expire are how a three year old critical finding surfaces in an audit with nobody able to say who agreed to it. The approver should sit on the business side, not in security: security advises on risk, the business owns it.
Handoffs 1 and 3 both fail because information is separated from the finding. Evidence stays in the PDF, guidance stays with the tester, and the dispute stays in a meeting nobody minuted. Every fix in this article is a variation on keeping the finding and everything needed to act on it in the same place.
If your open count and engineering's open count have stopped agreeing, that is the symptom, and it is worth half an hour of someone else's eyes.
Handoff 4: fix to verified
This is the handoff that decides whether your remediation rate is real. Everything upstream can work perfectly and still produce a number that means nothing, because a closed ticket is not a closed finding.
Three distinct failures hide here:
The fix addresses the symptom. An input is sanitised at one entry point while the underlying handling stays unsafe, so the finding is closed and the class of issue remains. A retest of the original attack path catches this. A review of the code diff often does not.
The fix regresses. It worked when deployed and a later change undid it. This is invisible unless previously closed findings are re tested at the next engagement, which is why regression checking belongs in the workflow rather than in good intentions.
Closure is asserted rather than proven. Someone marked it done. Nothing confirmed it.
| Level | What it means | Who performs it | Applies to |
|---|---|---|---|
| Independent retest | The original attack path is re executed and fails | The tester, never the engineer who fixed it | Critical and high |
| Evidence review | Config, code diff or scan output reviewed against the finding | Security team | Medium |
| Self attestation | Owning engineer states the fix is deployed | Fixing team | Low and informational only |
| Regression check | Re tested at the next scheduled engagement | Next tester in rotation | Everything previously closed |
The rule that does the most work: the engineer who wrote the fix does not verify it. Not because anyone is dishonest, but because they will test that their fix works rather than that the attack fails. Those are different questions and only the second one closes a finding.
Decide in advance what happens when a retest fails. Most teams have no answer, so a failed retest quietly becomes a new ticket and the original closes. That single habit is enough to make a remediation metric meaningless. The original must stay open, the clock must keep running, and the failure must be visible.
The economics here are what push teams toward self attestation. If every verification is a scheduled engagement with a purchase order attached, most findings will be closed on assertion. SLASH runs retests automatically rather than booking them as new work, which is what makes independent verification affordable at volume rather than aspirational.
What a findings workflow needs
Strip away tooling preferences and the requirements are short. Any system that satisfies these will outperform any system that does not, whatever it is built on.
| Requirement | Why | Handoff it protects |
|---|---|---|
| Findings land in the engineering tracker | Work that is not on the sprint board does not happen | 1 and 2 |
| Evidence travels with the finding | An engineer cannot verify what they cannot reproduce | 1 and 3 |
| One finding, one named person | Queues and group inboxes absorb work silently | 2 |
| Deduplication by rule, not judgement | An inflated count stops being used | 1 |
| Severity normalised at import | Vendors use different scales; argue once, not per finding | 1 |
| Disputes recorded with evidence | Verbal dismissal is the most common silent closure | 3 |
| Exceptions expire | Permanent acceptances become invisible debt | 3 |
| Closure requires verification | A closed ticket is not a closed finding | 4 |
Note what is absent: no platform is required. A spreadsheet that satisfies all eight beats a platform that satisfies six. Tooling helps at volume, and it cannot supply the rules.
What auditors accept as remediation evidence
Most writing on this subject stops at the fix. In practice the workflow has a second customer, and it is the person auditing you. What satisfies them is narrower than teams expect, and it is decided by how you closed the finding rather than by whether you closed it.
| Framework | What it asks for | What commonly fails |
|---|---|---|
| PCI DSS v4.0.1 | Explicit. Requirement 11.4.4: exploitable vulnerabilities found in testing are corrected and testing is repeated to verify the correction | Closure recorded with no retest evidence. The standard names repeat testing, so assertion does not discharge it. |
| ISO 27001:2022 | Annex A 8.8 requires evaluation of exposure and appropriate action. Your own policy sets the bar | Scope mismatch, and missing proof that findings closed rather than were acknowledged. See our ISO 27001 penetration testing page. |
| SOC 2 | CC4.1 wants evaluation, CC7 wants the response. Dated evidence of both | A report with no documented remediation trail attached to it. |
| Customer questionnaires | Usually a current report plus confirmation findings were addressed | Nothing shareable that is not the full confidential report. |
PCI DSS is the strictest and the clearest. It names repeat testing after correction, which makes retest evidence an obligation rather than a best practice. Build to that standard and the others are satisfied automatically.
Four numbers that expose drop off
Open finding counts hide drop off, because a finding that was silently closed looks identical to one that was fixed. These four do not.
Verified closure rate. Findings closed with verification, divided by findings closed. If this is well under 100% you are measuring tickets, not fixes. It is the single most diagnostic number in this article and almost nobody tracks it.
Reopen rate. Findings that failed retest or recurred at a later engagement. Above roughly one in ten indicates a development process problem rather than a testing problem.
Transcription completeness. Findings in the tracker divided by findings in the report. Should be exactly 1. Anything less means handoff 1 is leaking and you cannot see it anywhere else.
Oldest active exception. The age of your longest standing risk acceptance, with a count of those past review date. Expired exceptions should be zero, always.
Report the same four every cycle. Changing metrics between reports reads as managing the message, and once an exec team suspects that, they start asking for the raw reports.
Questions teams ask
What percentage of pentest findings actually get fixed? Across more than 5,000 penetration tests, Cobalt's State of Pentesting research found 48% of exploitable findings were remediated, and 69% of findings rated high or critical. So just over half of exploitable findings and roughly three in ten serious ones remained open. Teams that do fix issues now fix them considerably faster than they used to: median time to resolve serious vulnerabilities fell from 112 days in 2017 to 37 days.
What is pentest findings management? The process that carries a finding from the report to a verified fix: importing it into the engineering tracker with its evidence, deduplicating against existing findings, assigning a named owner, tracking it against a remediation window, handling disputes and exceptions, and verifying closure by retest rather than assertion.
Should findings go into Jira or a security platform? Into whatever engineering already uses. A finding that does not appear on the sprint board does not get fixed, and no amount of chasing changes that. A security platform is useful for consolidation, reporting and retest tracking, but it should push into the engineering tracker rather than expect engineers to work in two places.
Who should own remediation of a pentest finding? A named engineer on the team that owns the affected system, agreed during scoping rather than after the report arrives. Security owns the process and the evidence. The business owns the risk, which is why risk acceptance should be approved outside security.
How do we handle a finding engineering says is a false positive? Put the burden of proof on the dispute. The disputing team supplies evidence, the original tester reviews it, and the outcome is recorded whichever way it goes. The clock keeps running during the dispute and stops retroactively if the dispute is upheld. A verbal dismissal should never close a finding.
What counts as proof that a finding is fixed? For critical and high findings, an independent retest in which the original attack path is re executed and fails, performed by someone other than the engineer who wrote the fix. For medium, a reviewed code or configuration change. Self attestation is acceptable only for low and informational findings. PCI DSS requirement 11.4.4 names repeat testing explicitly.
How long should remediation take? Common windows are seven days for critical, thirty for high, ninety for medium, and next planned cycle for low. What matters more than the numbers is that the clock starts when the ticket reaches the owning team rather than when the tester found the issue. Starting it earlier punishes engineering for your import lag and the SLA loses credibility within a quarter.
Where to start
Measure transcription completeness first. Take your last report, count the findings, count the tickets, and divide. It takes twenty minutes and it tells you whether your problem is the workflow or the first ten minutes of it. Most teams who run this are surprised.
Then add verified closure rate. Those two numbers between them locate the leak, and everything else in this article is a fix for one of the four handoffs they point at.
We deliver findings into the tracker your engineers already use, with evidence attached and retesting included so closure is proven rather than assumed. Bring your last report and current ticket count and we will tell you where your workflow is leaking.
Twenty minutes, a scoped price, and an honest answer on whether SLASH fits your workflow.
Book a walkthrough →About Babar Khan Akhunzada
Babar Khan Akhunzada leads security strategy, offensive operations. Babar has been featured in 25-Under-25 and has been to BlackHat, OWASP, BSides premiere conferences as a speaker.