Safeguard
Compliance•

Is running an end-of-life runtime like Node.js a SOC 2 problem?

An end-of-life runtime stops receiving security fixes, which can undermine your vulnerability management control. Here is how to track and plan upgrades.

Safeguard Security Team
4 min read

Not automatically, but it is a risk an auditor can reasonably ask about. An end-of-life runtime no longer gets security fixes from its maintainers, so your vulnerability management control has a gap you cannot patch around. Track support dates, plan upgrades, and record exceptions when you must stay behind.

Why runtimes matter as dependencies

The language runtime is the largest dependency in your stack. Every service runs on it. When a version reaches end of life, new vulnerabilities found afterward are typically fixed only in supported lines. Your scanner may show nothing, because no advisory is written for the old version, which is exactly why teams get surprised. A silent report is not a clean bill of health.

Read the support policy, not a blog

Support windows are published by the projects. The Node.js release page explains that major versions enter a Current status for six months, and that historically even numbered releases move to Active LTS while odd numbered ones become unsupported after six months. It also states that starting with Node.js 27 the cycle will be annual and every major version will move to LTS after its Current phase. Because these rules change, check the project's page directly when you plan, and do not rely on a rule of thumb.

Other runtimes publish their own schedules. Write the source link next to each version in your inventory.

A tracking table you can keep

ComponentVersion in useSupport endsOwnerUpgrade target
Language runtime, service AFill inCheck project pageNamed personQuarter
Base image OSFill inCheck vendor pageNamed personQuarter
FrameworkFill inCheck project pageNamed personQuarter

Review it monthly. Anything ending within two quarters gets an upgrade ticket now.

What to put in policy

State that production systems run supported versions of runtimes and operating system images, and that exceptions are recorded with a compensating control and an end date. That is a reasonable control for a small team, and it gives you a place to document the legacy service that cannot move yet.

Compensating controls when you must stay

If a legacy service is stuck on an unsupported runtime:

  1. Isolate it from the internet where possible.
  2. Restrict what it can reach on the network.
  3. Reduce its privileges and secrets.
  4. Add monitoring for unusual behavior.
  5. Put a retirement or upgrade date on the exception.

Those steps do not make the runtime safe, and you should not describe them that way. They reduce exposure while you plan the move.

What an auditor may ask

They may sample a service and ask what runtime version it uses and whether it is supported. If you can answer from your tracking table in a minute, that is a good sign. If you need to ask the team, build the table first.

Where Safeguard fits

Safeguard's asset discovery and dependency scanning help you find what runs where and which components you ship, so the support table starts from real data. Free scan: https://gold.safeguard.sh/scan.

Quick check

My scanner shows no issues on an end-of-life version. Am I fine?

Not necessarily. Unsupported versions often stop receiving advisories, so silence can mean no one is looking.

Can I stay on an old runtime during the audit?

Yes with a recorded exception, compensating controls and a dated plan. Say so honestly if asked.

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.