ChecklistAdvisoryCybersecurityIT

Python 3.10 and Node.js 20 are end-of-life: find them in custom apps, scripts and build images

The Python developer guide lists 3.10 as end-of-life since October 1, 2026, and the Node.js project marks v20 EOL. Custom software, automation scripts and container images still on either runtime no longer receive upstream fixes.

Layered glass and metal cyber-defense structure with controlled blue and gold signal paths.
DSE visual intelligenceCyber defenseChecklist · 2 min read
Executive summary

What you need to know

The Python developer guide lists 3.10 as end-of-life since October 1, 2026, and the Node.js project marks v20 EOL. Custom software, automation scripts and container images still on either runtime no longer receive upstream fixes.

Potentially affected

Custom applications, APIs, integrations, automation scripts, scheduled jobs, CI runners and container base images that run on Python 3.10 or Node.js 20 or older branches.

DSE recommendation

DSE recommends replacing Python 3.10 and Node.js 20 with supported branches in every production workload and build image, starting with internet-facing services.

The Python developer guide lists 3.10 as end-of-life since October 1, 2026, and the Node.js project marks v20 EOL. Custom software, automation scripts and container images still on either runtime no longer receive upstream fixes.

Source facts

The Python developer guide lists Python 3.10 as end-of-life with an end date of October 1, 2026, and 3.9 as end-of-life since October 31, 2025. Python 3.11, 3.12 and 3.13 are in the security phase, with scheduled end-of-life months of October 2027, 2028 and 2029. The guide explains that support ends five years after a release, when the release cycle is frozen and no further changes are allowed.

The Node.js releases page marks Node.js 20 and 18 as EOL and v22 and v24 as LTS. It says production applications should only use Active LTS or Maintenance LTS releases, and that starting with Node.js 27 the release cycle becomes annual, with every major version moving to LTS after its Current phase.

Applicability

Use this wherever code runs outside a vendor-managed platform: servers, workstations running automation, serverless functions, CI/CD runners and Docker images. Where a runtime was installed from an operating-system package, check that distribution’s own support statement before deciding whether it still receives fixes.

DSE recommendation

DSE recommends replacing Python 3.10 and Node.js 20 with supported branches in every production workload and build image, starting with internet-facing services. Search repositories for version pins in requirements, runtime and package files, Dockerfiles and pipeline definitions; record each hit with an owner; upgrade dependencies that block the move; and set a recurring review against both projects’ published schedules.

Verification

After each upgrade, run the application’s automated tests and a smoke test in staging, then confirm the deployed process reports the new runtime version. Rebuild container images from updated base images rather than patching running containers, and re-scan the repositories to show that no Python 3.10 or Node.js 20 pins remain.

Official references

Python Developer’s Guide — Status of Python versions. Node.js — Node.js Releases. Reviewed October 18, 2026.

Primary reference

Review the official source

Python Developer’s Guide — Status of Python versions · Verified October 18, 2026

Open official reference ↗
Plan the next step

Need help applying this guidance safely?

DSE can help confirm applicability, protect service continuity, and validate the result across physical security and IT systems.

Talk with DSE