Safeguard
Security Guides•

How do you grant an exception for end-of-life software with no patch?

An end-of-life exception needs a retirement date, compensating controls, isolation and a short term. Steps to grant one that an auditor can defend.

Safeguard Security Team
3 min read

Grant an end-of-life exception only with a dated retirement plan, compensating controls that you can test, network isolation and a short term. Accepting unpatched software is not a decision about one CVE, it is a decision about every future one, so the exception must carry a hard end.

Why EOL is different

A normal exception waits for a fix. An end-of-life exception has no fix coming. Every new advisory will stay open, so the risk grows with time. That is why these should be the shortest, most conditional approvals in your register.

Steps

  1. Confirm it is truly EOL. Check the vendor or project's published support policy, not a rumour. Ask whether paid or extended support exists.
  2. Find the real dependency. Which services run it, and which data and networks does it touch?
  3. Set a retirement milestone. Replacement, upgrade, or decommission, with an owner and a date.
  4. Add compensating controls. Isolate the host, restrict inbound and outbound traffic, remove it from the internet, tighten authentication, increase monitoring.
  5. Prove the controls work. See how to prove a compensating control works for an exception.
  6. Approve at a senior level. EOL exceptions carry more exposure than most.
  7. Set a short term with a checkpoint. Review progress on the retirement plan, not just the controls.

What to put in the record

FieldContent
Component and versionExact, with where it runs
Support statusSource and date checked
ExposureNetwork position, data touched
ControlsList with test evidence
RetirementPlan, owner, target date
Review datesCheckpoints before expiry

Red lines

Do not grant an EOL exception for anything directly reachable from the internet without strong isolation in front of it. Do not renew it without visible progress on the retirement plan. Do not accept it on the basis that "it has not been attacked so far".

Related background is in managing EOL software dependencies and the PHP 7.4.33 vulnerabilities and EOL risk write up.

Alternatives to consider first

  • Upgrade to a supported release, even if it is painful
  • Replace the dependency with a maintained alternative
  • Wrap it behind a gateway that limits what can reach it
  • Extended support from a commercial source, if available

Each of these changes the exposure more than paperwork does.

Metrics to watch

Count EOL exceptions by age and by whether the retirement date has moved. A date that moves twice is a warning sign that the plan has no owner.

Safeguard's SBOM and dependency scanning help you find where end-of-life components actually run, and its asset discovery helps surface systems nobody remembered to list.

Try it yourself

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

Look at how new findings surface over time, which is exactly what keeps happening to unpatched software.

Quick check

Can an EOL exception be open ended?

No. Without an end date it becomes a permanent acceptance of unpatched code.

Is isolation enough on its own?

Only if you can show it works. Test the controls and keep the evidence.

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.