{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
        "slug": "python-3-10-and-node-js-20-end-of-life-runtime-inventory",
        "url": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/python-3-10-and-node-js-20-end-of-life-runtime-inventory/"
        },
        "title": "Python 3.10 and Node.js 20 are end-of-life: find them in custom apps, scripts and build images",
        "summary": "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.",
        "format": {
            "slug": "checklist",
            "name": "Checklist"
        },
        "priority": {
            "slug": "advisory",
            "name": "Advisory"
        },
        "featured": false,
        "image": {
            "theme": "cyber-defense",
            "label": "Cyber defense",
            "alt": "Layered glass and metal cyber-defense structure with controlled blue and gold signal paths.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "cybersecurity",
                "name": "Cybersecurity",
                "url": "https://update.dsesecurity.com/topic/cybersecurity/"
            },
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-18T21:00:04+00:00",
        "modified_at": "2026-10-18T22:22:06+00:00",
        "reviewed_on": "2026-10-18",
        "reading_minutes": 2,
        "word_count": 317,
        "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.",
        "primary_source": {
            "name": "Python Developer’s Guide — Status of Python versions",
            "url": "https://devguide.python.org/versions/",
            "published_on": null,
            "authority": "devguide.python.org"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p>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.</p>\n<h2>Source facts</h2>\n<p>The <a href=\"https://devguide.python.org/versions/\">Python developer guide</a> 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.</p>\n<p>The <a href=\"https://nodejs.org/en/about/previous-releases\">Node.js releases page</a> 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.</p>\n<h2>Applicability</h2>\n<p>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.</p>\n<h2>DSE recommendation</h2>\n<p>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.</p>\n<h2>Verification</h2>\n<p>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.</p>\n<h2>Official references</h2>\n<p><a href=\"https://devguide.python.org/versions/\">Python Developer’s Guide — Status of Python versions</a>. <a href=\"https://nodejs.org/en/about/previous-releases\">Node.js — Node.js Releases</a>. Reviewed October 18, 2026.</p>",
        "content_text": "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.\nSource facts\nThe 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.\nThe 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.\nApplicability\nUse 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.\nDSE recommendation\nDSE 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.\nVerification\nAfter 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.\nOfficial references\nPython Developer’s Guide — Status of Python versions. Node.js — Node.js Releases. Reviewed October 18, 2026.",
        "content_markdown": "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.\n\n## Source facts\n\nThe [Python developer guide](https://devguide.python.org/versions/) 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.\n\nThe [Node.js releases page](https://nodejs.org/en/about/previous-releases) 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.\n\n## Applicability\n\nUse 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.\n\n## DSE recommendation\n\nDSE 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.\n\n## Verification\n\nAfter 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.\n\n## Official references\n\n[Python Developer’s Guide — Status of Python versions](https://devguide.python.org/versions/). [Node.js — Node.js Releases](https://nodejs.org/en/about/previous-releases). Reviewed October 18, 2026."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
                "url": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-18"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "Python 3.10 and Node.js 20 are end-of-life: find them in custom apps, scripts and build images",
                        "item": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/#article",
                "identifier": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
                "url": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/",
                "headline": "Python 3.10 and Node.js 20 are end-of-life: find them in custom apps, scripts and build images",
                "description": "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…",
                "abstract": "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.",
                "articleBody": "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.\nSource facts\nThe 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.\nThe 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.\nApplicability\nUse 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.\nDSE recommendation\nDSE 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.\nVerification\nAfter 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.\nOfficial references\nPython Developer’s Guide — Status of Python versions. Node.js — Node.js Releases. Reviewed October 18, 2026.",
                "datePublished": "2026-10-18T21:00:04+00:00",
                "dateModified": "2026-10-18T22:22:06+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/python-3-10-and-node-js-20-end-of-life-runtime-inventory/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/cyber-defense-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Python 3.10 and Node.js 20 are end-of-life: find them in custom apps, scripts and build images"
                },
                "articleSection": [
                    "Cybersecurity",
                    "IT"
                ],
                "keywords": [
                    "Cybersecurity",
                    "IT",
                    "Checklist",
                    "Advisory priority"
                ],
                "genre": "Checklist",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "Cybersecurity",
                        "url": "https://update.dsesecurity.com/topic/cybersecurity/"
                    },
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 317,
                "timeRequired": "PT2M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "Python Developer’s Guide — Status of Python versions",
                    "url": "https://devguide.python.org/versions/"
                }
            }
        ]
    }
}