Skip to main content

Key Takeaways

  • A closed ticket is a status change, not proof the exposure is gone. Most ticketing tools track state, not outcome, and the person who did the work is often the only one confirming it worked.
  • Remediations fail silently more often than programs plan for: a patch on the wrong asset, a config change that never rolled out, an EDR agent that stopped reporting, a compensating control that was never actually enforced.
  • Verification is the fourth stage of the operating rhythm: find it, understand it, decide on it, prove it worked. It's the stage almost every program skips once SLA pressure sets in.
  • Proof means an artifact independent of the person's word: a clean re-scan, a second reviewer, a config export. Self-attestation is not verification.

Most vulnerability management programs stop at closure. A ticket moves from open to closed, the dashboard turns a little more green, and everyone moves on. Closure is a status field. It is not evidence that the exposure is gone. Somewhere between “we patched it” and “it is actually fixed” is a gap most programs never check. That gap is exactly where old exposures quietly survive their own remediation.

This is the second piece in a three-part series. The first argued that green dashboards hide residual risk and laid out four stages any real program has to move through: find it, understand it, decide on it, prove it worked. Most programs are reasonably good at the first two. Fewer are disciplined about the third. Almost none do the fourth with any rigor. This piece is about the fourth stage, the one that turns a claim into a fact.

A closed ticket is a claim. It is not evidence.

Closed is a status, not a fact

Walk into almost any vulnerability management program and ask how a finding gets marked resolved. In most cases, the answer is some version of: someone applied a patch, updated a config, or pushed a change, then closed the ticket themselves. The same person who did the work confirms the work was done. Nothing independently checks that the fix actually took, that it did not get rolled back, or that it was applied to the right asset in the first place.

That is not a criticism of the people doing the work. It is a description of how most ticketing and workflow tools are built. They track state, not outcome. A ticket can move to “closed” because a person clicked a button, not because anyone confirmed the system behaves differently than it did before.

Patched is not the same as fixed

There are more ways for a remediation to fail silently than most programs plan for:

  • A patch installs on the wrong asset because inventory was stale.
  • A configuration change gets pushed to a golden image but never rolled out to the systems already running.
  • An EDR agent shows installed in the console but stopped reporting months ago and nobody noticed.
  • A compensating control gets documented as in place but was never actually enforced at the network or identity layer.

In every one of these cases, the ticket says closed. The exposure does not know that.

Equifax's 2017 breach is the clearest public example of a program believing its own status field. A patch for the vulnerable Apache Struts component had been available for months. Internal scanning was supposed to catch anything still exposed. During the congressional review that followed, it came out that the scan meant to catch it did not detect the vulnerable system at all. The assessment believed the environment was covered when it was not. The gap was not a missing patch policy. It was a missing verification step between “we should be covered” and “we checked, and we are.”

The pattern is not limited to one breach or one decade. In 2022, CISA and the U.S. Coast Guard Cyber Command warned that state-sponsored threat actors were still exploiting Log4Shell in VMware Horizon and Unified Access Gateway servers, seven months after a patch had been available industry-wide. In at least one case CISA responded to directly, the compromised organization had a Horizon server that never received the patch or workaround at all. CISA's guidance to everyone else was blunt: if you cannot confirm the fix was applied, treat the system as already compromised. That is a federal agency saying, in plain terms, that an unverified patch status is not a safe assumption to operate on.

Prove it worked is stage four. It is the one almost every program skips.

Why verification gets skipped

It is not that security teams do not value verification. It is that verification competes with volume, and volume usually wins. A team under pressure to close tickets against an SLA is incentivized to move fast, and re-testing every remediation takes time nobody budgeted for. Re-scanning is treated as optional because the finding already left the active report. Once something is marked closed, most programs stop looking at it, which means the only opportunity to catch a failed fix quietly disappears the moment the ticket does.

Same blind spot as the dashboard problem, one layer down, except here it's the security team fooling itself, not leadership.

The loop doesn't close on its own

The first piece in this series borrowed a line from Colonel John Boyd: you get inside the fight by understanding it, not by watching your own dashboard turn green. Boyd's actual framework is worth applying directly here, because it explains exactly where the verification gap does its damage.

Boyd's OODA loop is Observe, Orient, Decide, Act, and the word that matters most is loop. It only works as a cycle if what happens after Act feeds back into Observe. You act, then you observe the actual result of that action, and that observation is what starts the next cycle honestly. Break the loop at Act, and every cycle after it is built on an assumption instead of a fact.

Map the four stages onto it and the gap is obvious. Find it is Observe. Understand it is Orient. Decide on it is Decide. Prove it worked is Act, and Act is not finished the moment the change is pushed. It is finished when someone observes whether the action actually changed anything. Skip that observation and the loop does not complete. It just stops, quietly, while the ticket says otherwise.

Boyd's loop only turns if Act feeds back into Observe. Skip verification, and it doesn't.

This is not just a process problem. It is a tempo problem. An attacker who gets into an environment runs their own OODA loop continuously. They act, watch how the environment responds, and adjust. A defender whose loop stalls at Act, believing a fix landed when it did not, has effectively stopped competing for tempo. The attacker keeps observing and adjusting in real time. The defender is observing a status field that stopped being true the moment the patch silently failed.

Getting inside the adversary's decision loop, the goal Boyd actually cared about, is not possible if your own loop is broken. You cannot out-tempo an opponent while operating on stale information about your own environment. Verification is not a compliance step tacked onto the end of remediation. It is the piece that lets the loop close and the next cycle start from what is actually true.

Proof is not a bigger dashboard. It is a specific, repeatable answer to one question: using the same method that found the exposure, can we now confirm it is gone? A few things that qualify as proof, and a few that do not:

  • Re-running the same scan, check, or exploit test that originally flagged the finding, and getting a clean result, not just closing the ticket that referenced it.
  • Someone other than the person who performed the remediation confirming the result. Self-attestation is not verification.
  • Evidence attached to the ticket: a scan output, a config export, a screenshot of the control in its enforced state, something that exists independently of the person's word.
  • For a compensating control or risk acceptance: confirmation that the control is actually configured and active, not just documented as a decision.

What does not qualify: a status field changed to closed, a self-reported “done,” or an assumption that because the change ticket was implemented, the underlying exposure is gone. Those are inputs to the process. They are not the output.

Building verification back into the loop

1. Require closure evidence, not closure status: A ticket does not close on a status change alone. It closes with an artifact attached, such as a scan result, a control export, or a re-test log, that shows the exposure is actually gone.

2. Separate the validator from the remediator: The person who applied the fix should not be the only signature on whether it worked. Even a lightweight second check, a peer review, or an automated re-scan breaks the self-attestation problem.

3. Re-test with the same method that found it: If a scanner flagged it, re-scan with the same check. If a pen tester or red team found the path, re-run that specific test. A different, easier test proves less than it looks like it does.

4. Feed failures back into the exposure list, quietly and immediately: When verification fails, the finding does not get a new ticket at the back of the queue. It goes straight back into the residual exposure view as still open, with the failed remediation attempt as context.

This ties directly back to the Residual Exposure Review from the first piece. That review is only as honest as the evidence behind it. “Treatment decision: remediate” without verification is just another status field, the same problem this piece has been arguing against, one level down. The named owner from that rhythm owns more than the decision. They own the proof it landed.

None of this requires new tooling. Most vulnerability management platforms can already attach evidence to a ticket and support a second-reviewer step. What it requires is deciding that closed means proven, not reported.

The fourth stage is the one that counts

Find it, understand it, decide on it: all three of those can happen well and the exposure can still be sitting there the day something goes wrong, because nobody checked that stage three's decision was actually carried out. Proof is not a formality at the end of the process. It is the only stage that turns everything before it from good intentions into an actual reduction in risk.

"If we know that our own men are in a condition to attack, but are unaware that the enemy is not open to attack, we have gone only halfway towards victory." - Sun Tzu, The Art of War

That is the verification gap in one line, written twenty-five hundred years before ticketing systems existed. Knowing your own side acted is half the picture. The other half is confirming what that action actually changed. Skip it, and “halfway towards victory” is the honest description of a program that believes it is finished.

A ticket can close on its own. An exposure only closes when someone checks.

If your program can't say which closed tickets have actually been verified, Arctiq's Cybersecurity Advisory Services can help you build evidence-based validation back into the loop. Connect with us to get started.

Eddie Skey
Post by Eddie Skey
September 17, 2026
Eddie Skey is Principal Solutions Architect at Arctiq. He brings over 30 years of information security experience, specializing in security advisory, vulnerability assessments, penetration testing, and architecture for banking, healthcare, manufacturing, and critical infrastructure clients, with deep expertise in incident response design and compliance frameworks including HIPAA, GLBA, Sarbanes-Oxley, and ISO 27002. Eddie founded the Charlotte Metro ISSA Chapter in 2004 and the invitation-only Carolinas CyberThreat Forum in 2014, and is a frequent speaker on enterprise security topics.