Safeguard
Security Guides•

Your release gate failed and no fix exists. What now?

When a gate fails on a vulnerability with no fix, decide between replacing the component, mitigating, or a time-boxed waiver, and record the reasoning.

Safeguard Security Team
3 min read

When a gate fails on a vulnerability with no fix, you have three options: replace or remove the component, apply a temporary mitigation, or accept the risk through a time-boxed waiver. Pick one on evidence of exploitability, record the reasoning, and set a date to look again.

Start with exploitability, not panic

First ask whether the vulnerable code can actually be reached in your release. A flaw in a function you never call is a different problem from one on a public request path. Check whether the component is loaded at all, whether the vulnerable feature is enabled, and whether an attacker can control the input.

Also check the exploitation signals: is it on the CISA KEV catalog, and what is its EPSS score? A known exploited, reachable flaw with no fix should usually stop a regulated release unless you can mitigate it.

The decision table

SituationReasonable responseRecord
Not reachable, not exploitedWaiver with expiry, plus VEX statementJustification and review date
Reachable, mitigation existsApply mitigation, release, trackMitigation evidence
Reachable, can swap componentReplace and re-scanNew SBOM and scan
Reachable, known exploited, no mitigationHold the releaseEscalation note

NIST SSDF practice RV.2.2 describes making a risk-based decision on whether each vulnerability will be remediated or addressed by other means such as risk acceptance. It also says that if a permanent mitigation is not yet available, you should determine how to temporarily mitigate it and add that to the plan.

Using VEX to say "not affected"

The OpenVEX specification defines four statuses: not_affected, affected, fixed and under_investigation. A not_affected statement must carry either a justification or an impact statement. The justification values include component_not_present, vulnerable_code_not_present, vulnerable_code_not_in_execute_path, vulnerable_code_cannot_be_controlled_by_adversary and inline_mitigations_already_exist.

A VEX statement is a claim you must be able to defend. Pair it with the analysis that supports it, and bump the document version whenever a statement changes, as the spec requires.

Steps

  1. Confirm the finding is real for your version and configuration.
  2. Test reachability and attacker control.
  3. Check KEV and EPSS.
  4. Choose replace, mitigate or waive.
  5. Write the decision, owner and expiry in the release record.
  6. Subscribe to the upstream advisory so the fix triggers a ticket.

Try it yourself

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

Look at how exploitability changes the priority of the same finding.

Safeguard provides reachability analysis and policy gates, and you can try a free scan at gold.safeguard.sh/scan.

Quick check

Can we release with an unfixed critical vulnerability?

Sometimes, if it is not reachable or is mitigated and the risk is formally accepted with an owner and expiry. Document it.

Does a VEX statement make the finding disappear?

It changes the stated status for consumers of the document. It is only as good as the analysis behind it.

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.