Safeguard
Security Guides•

What vulnerability SLA fits each phase of a modernization project?

Set fix deadlines by phase: stricter for new services, risk based for legacy, and a clear exception path for code awaiting retirement. A phased SLA table.

Safeguard Security Team
3 min read

Use different fix deadlines by phase. New services get your standard deadlines. Legacy code in active use gets risk based deadlines driven by exploitation and reachability. Code awaiting retirement gets time boxed exceptions with owners. Set the actual numbers with your risk owners, since they vary by organization.

Why one SLA fails

A single deadline for everything either punishes legacy teams with impossible targets or lets new services slide. A modernization project has code in at least three states, and each deserves its own rule. This post gives a structure. It does not prescribe numbers, since the right ones depend on your sector, contracts and capacity.

Phase one: new services

These are built with current tools and have few findings. Hold them to your standard deadlines, and enforce them with a pull request gate. When these services miss a deadline it usually signals a process problem and is worth investigating.

Phase two: legacy code in active use

Here the SLA should depend on risk, not just severity.

  • Exploited in the wild: CISA's Known Exploited Vulnerabilities catalog is described by CISA as an input to prioritization. Treat a catalog entry in a reachable component as the shortest clock.
  • Reachable and exposed: next shortest.
  • Reachable, internal only: standard clock.
  • Not reachable: longer clock, with the option to delete the code.

Phase three: code awaiting retirement

Teams want to skip fixes here. Allow exceptions, but make them explicit.

FieldRequired
Finding and componentYes
Reason for exceptionYes
Compensating controlYes
Planned retirement dateYes, with owner
Expiry of the exceptionYes, shorter than the retirement date

When the exception expires, either the fix lands, the date is reconfirmed by a named owner, or the exception is not renewed.

Putting it together

PhaseDeadline basisEnforcement
New servicesStandardPull request gate
Legacy, activeExploitation and reachabilityGate on regressions, scheduled review
Awaiting retirementTime boxed exceptionExpiry alerts

Measure it

Track time to fix by phase, number of exceptions and age of the oldest one. A growing pile of renewed exceptions shows that the retirement plan is slipping, and leadership should see it. Fowler's reminder that replacing a serious system takes a long time is a useful caution when judging dates.

Write it down

A short policy page, approved by security and engineering leaders, avoids arguing each case. It should state the phases, the basis for deadlines and the exception process. Auditors and customers often ask for it. We cover content for such a policy in what a written vulnerability management policy should cover.

Safeguard's policies and compliance and evidence automation can help enforce deadlines and keep the records.

Quick check

Should severity alone set the deadline?

It is a starting point. Exploitation, reachability and exposure should adjust it.

How long can an exception last?

Shorter than the retirement date it relies on, and renewable only by a named owner.

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.