Safeguard
Security Guides•

What do you do with a vulnerable system you cannot rebuild or patch?

Check if you are truly affected, reduce exposure, record a time limited exception, and plan retirement. A practical sequence for legacy workloads.

Safeguard Security Team
3 min read

When you cannot rebuild or patch a system, first confirm whether it is actually affected, then cut its exposure, record a time limited exception with an owner, and plan its replacement. Leaving it unrecorded is the worst option, because it becomes invisible risk.

Step 1: Confirm you are affected

Many findings are not exploitable in a given deployment. The OpenVEX specification names the statuses a statement can take: not_affected, affected, fixed and under_investigation. For not_affected, it lists justifications such as 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. Use that vocabulary, because a plain "false positive" tells the next reader nothing.

Only claim not_affected with evidence, such as a build file or a reachability result.

Step 2: Reduce exposure

If you are affected, make the system harder to reach and less useful to an attacker.

  • Remove internet reachability or put an access layer in front.
  • Limit inbound connections to the few callers that need them.
  • Remove stored credentials that grant wider access than the system needs.
  • Increase logging around the vulnerable function so abuse is noticed.
  • Disable the vulnerable feature if configuration allows it.

Step 3: Record an exception

FieldContent
FindingComponent, version, advisory
Reason it cannot be fixedVendor end of life, dependency lock, downtime cost
Compensating controlsThe list from step 2
OwnerA team and contact route
Review dateA real date, not "later"
Exit planWhat replaces it and when

An exception without a review date silently becomes permanent.

Step 4: Plan retirement

Add the system to a retirement list with an owner and a target quarter. Check whether its operating system or runtime is already out of support, since that changes the urgency for every future finding.

Step 5: Watch it

Check the known exploited list for the affected component. CISA describes its catalog as an input to prioritisation. If your component appears, the compensating controls need another look.

In a hybrid estate

Legacy systems cluster in on premises sites and old accounts. Keep them in the same inventory as everything else so their exceptions show up in the same reports.

An example exception record

A reporting server runs a vendor product that has reached end of support. A library inside it has an advisory. The server is not reachable from the internet, two internal hosts connect to it, and its stored credentials were reduced to read access. The record lists those controls, names the data team as owner, sets a review in three months, and links a migration ticket for the next planning cycle. If the review finds the controls have slipped, the priority rises.

Quick check

Can I mark it not affected because it is behind a firewall?

Usually that is a mitigation, not proof the vulnerable code is absent. Record it as a compensating control unless you meet a not_affected justification.

How long can an exception last?

Set the limit in your policy. Short reviews, such as each quarter, keep the risk in front of someone.

Safeguard's policies and compliance and evidence automation help track exceptions and the controls around them. A free scan is at gold.safeguard.sh/scan.

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.