Safeguard
Security Guides•

What evidence proves a vulnerability was actually fixed?

A closed ticket is not proof. Verification evidence shows the vulnerable version is gone and the fix works. What to capture and what auditors sample.

Safeguard Security Team
4 min read

Proof of a fix is a rescan or inventory check showing the vulnerable version is no longer present, linked to the change that removed it, with a date and an owner. A closed ticket only shows someone clicked a button. Evidence shows the system changed.

Why tickets alone fall short

Teams close tickets when a pull request merges. But a merged fix may not be deployed, may apply to one of three environments, or may be overwritten by an old image. An auditor sampling closed findings will ask what happened on the system, not in the tracker.

NIST SP 800-53 vulnerability monitoring expects you to analyze scan results and remediate legitimate findings in line with risk. Flaw remediation expects updates to be tested for effectiveness and side effects before installation. Both ideas point to the same habit: verify, and keep the record.

Four layers of evidence

  1. Source change: the commit or pull request that updates the dependency or code, with review approval.
  2. Build artifact: the new build or image, with its digest and an inventory (SBOM) showing the fixed version.
  3. Deployment: a record that this artifact reached each target environment, with timestamps.
  4. Post-fix check: a scan or inventory query on the running system showing the vulnerable version is absent.

Layer four is the one most teams skip. Without it, you are trusting that layers one to three connected.

What to capture per finding

FieldExample form
Finding IDAdvisory or CVE plus internal ID
Affected component and versionName and version before the fix
Fixed versionName and version after
Change referencePull request or change number
Deployment evidenceRelease record per environment
VerificationScan report or inventory export with date
VerifierPerson or automated job

Keep screenshots only as a last resort. Exports from the scanner or inventory are easier to date and compare.

Edge cases worth writing down

  • Mitigated, not fixed: record the compensating control and treat the finding as open with a documented exception.
  • Not affected: record why, for instance the vulnerable function is never called or the feature is disabled. Attach reachability or configuration evidence.
  • Fix breaks something: record the rollback and the new plan. A rolled back fix is an open finding again.
  • Transitive dependency: verify the resolved version in the lockfile or SBOM, not only the direct dependency you changed.

Make verification automatic

A scheduled rescan that automatically compares the new inventory to the finding list closes the loop without a person remembering. Safeguard keeps SBOM and dependency inventories current and ties findings to components, so a version change shows up against the original finding. Fix pull requests from autonomous remediation are off by default and stay under human review.

Our vulnerability SLA dashboard guide shows how to measure time to verified fix rather than time to merge.

Try it yourself

Click through it at your own pace, or open it full screen.

Open the inventory and find the version of one component. That version field is the check you would repeat after a fix.

Quick check

Is a passing build proof of a fix?

No. A passing build shows the code compiles and tests pass. It does not show the fixed version is running in production.

How soon after deployment should we verify?

Verify as part of the same change, then again on your next scheduled scan, to catch regressions such as an old image redeployed.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.