Skip to content
Heist/ feed
Back to feed
Medium

Security advisory

Type: advisorySources: OSVCVE: CVE-2026-21637

A flaw in Node.js TLS error handling allows remote attackers to crash or exhaust resources of a TLS server when `pskCallback` or `ALPNCallback` are in use. Synchronous exceptions thrown during these callbacks bypass standard TLS error handling paths (tlsClientError and error), causing either immediate process termination or silent file descriptor leaks that eventually lead to denial of service. Because these callbacks process attacker-controlled input during the TLS handshake, a remote client can repeatedly trigger the issue. This vulnerability affects TLS servers using PSK or ALPN callbacks across Node.js versions where these callbacks throw without being safely wrapped.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-21637
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 11:14 UTC · Revision 1

Source evidence

CVE-2026-21637

core-osv · Original source

Published 20 Jan 2026, 20:41 UTC

A flaw in Node.js TLS error handling allows remote attackers to crash or exhaust resources of a TLS server when `pskCallback` or `ALPNCallback` are in use. Synchronous exceptions thrown during these callbacks bypass standard TLS error handling paths (tlsClientError and error), causing either immediate process termination or silent file descriptor leaks that eventually lead to denial of service. Because these callbacks process attacker-controlled input during the TLS handshake, a remote client can repeatedly trigger the issue. This vulnerability affects TLS servers using PSK or ALPN callbacks across Node.js versions where these callbacks throw without being safely wrapped.

osv:CVE-2026-21637
Complete source record
{
  "id": "dda4ca35edc422145efadea61f2d85e2f8f47d400151fa3034e4b913312fb39e",
  "url": "https://osv.dev/vulnerability/CVE-2026-21637",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "CVE-2026-21637",
    "summary": "A flaw in Node.js TLS error handling allows remote attackers to crash or exhaust resources of a TLS server when `pskCallback` or `ALPNCallback` are in use. Synchronous exceptions thrown during these callbacks bypass standard TLS error handling paths (tlsClientError and error), causing either immediate process termination or silent file descriptor leaks that eventually lead to denial of service. Because these callbacks process attacker-controlled input during the TLS handshake, a remote client can repeatedly trigger the issue. This vulnerability affects TLS servers using PSK or ALPN callbacks across Node.js versions where these callbacks throw without being safely wrapped.",
    "evidence": "osv:CVE-2026-21637",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-21637",
      "aliases": [
        "BIT-node-2026-21637",
        "BIT-node-min-2026-21637",
        "CVE-2026-21637"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/nodejs/node",
              "type": "GIT",
              "events": [
                {
                  "introduced": "f9f837885343a2a3f5ba2b8c510eaac395c8c865"
                },
                {
                  "fixed": "1f7186e1e01d279022cab6acdecb119e472bb409"
                },
                {
                  "introduced": "12fb157f79da8c094a54bc99370994941c28c235"
                },
                {
                  "fixed": "6add85e4c46b8be383c8b637102d6b6fd206adce"
                },
                {
                  "introduced": "c5349f43cd66d2aa02d86414c9ed426f71d3ae48"
                },
                {
                  "fixed": "def0bdf8abee441cfcbf793a8dc24a6f3b899573"
                },
                {
                  "introduced": "0b3a10d4c8ba5e15429287e725d22615be896e95"
                },
                {
                  "fixed": "00d6cd83927d6d5c8fe9d0cdd101daa6df4b1a15"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:nodejs:node.js:*:*:*:*:-:*:*:*",
                    "range": [
                      {
                        "introduced": "4.0.0"
                      },
                      {
                        "fixed": "20.20.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:nodejs:node.js:*:*:*:*:-:*:*:*",
                    "range": [
                      {
                        "introduced": "22.0.0"
                      },
                      {
                        "fixed": "22.22.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:nodejs:node.js:*:*:*:*:-:*:*:*",
                    "range": [
                      {
                        "introduced": "24.0.0"
                      },
                      {
                        "fixed": "24.13.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:nodejs:node.js:*:*:*:*:-:*:*:*",
                    "range": [
                      {
                        "introduced": "25.0.0"
                      },
                      {
                        "fixed": "25.3.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v24.12.0",
            "v25.2.1",
            "v25.2.0",
            "v24.11.1",
            "v25.1.0",
            "v22.21.1",
            "v24.11.0",
            "v22.21.0",
            "v25.0.0",
            "v24.10.0",
            "v24.9.0",
            "v22.20.0",
            "v24.8.0",
            "v22.19.0",
            "v24.7.0",
            "v24.6.0",
            "v24.5.0",
            "v22.18.0",
            "v22.17.1",
            "v24.4.1",
            "v24.4.0",
            "v22.17.0",
            "v24.3.0",
            "v24.2.0",
            "v24.1.0",
            "v22.16.0",
            "v24.0.2",
            "v22.15.1",
            "v24.0.1",
            "v24.0.0",
            "v22.15.0",
            "v22.14.0",
            "v22.13.1",
            "v22.13.0",
            "v22.12.0",
            "v22.11.0",
            "v22.10.0",
            "v22.9.0",
            "v22.8.0",
            "v22.7.0",
            "v22.6.0",
            "v22.5.1",
            "v22.5.0",
            "v22.4.1",
            "v22.4.0",
            "v22.3.0",
            "v22.2.0",
            "v22.1.0",
            "v22.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-21637.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:34.429159703Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/21xxx/CVE-2026-21637.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-21637",
        "https://nodejs.org/en/blog/vulnerability/december-2025-security-releases"
      ],
      "provider_metadata": {
        "cna_assigner": "hackerone",
        "unresolved_ranges": [
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "introduced": "20.19.6"
                  },
                  {
                    "last_affected": "20.19.6"
                  },
                  {
                    "introduced": "22.21.1"
                  },
                  {
                    "last_affected": "22.21.1"
                  },
                  {
                    "introduced": "24.12.0"
                  },
                  {
                    "last_affected": "24.12.0"
                  },
                  {
                    "introduced": "25.2.1"
                  },
                  {
                    "last_affected": "25.2.1"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StandaloneSingleVersion"
              }
            ]
          },
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "introduced": "4.0"
                  },
                  {
                    "fixed": "4.*"
                  },
                  {
                    "introduced": "5.0"
                  },
                  {
                    "fixed": "5.*"
                  },
                  {
                    "introduced": "6.0"
                  },
                  {
                    "fixed": "6.*"
                  },
                  {
                    "introduced": "7.0"
                  },
                  {
                    "fixed": "7.*"
                  },
                  {
                    "introduced": "8.0"
                  },
                  {
                    "fixed": "8.*"
                  },
                  {
                    "introduced": "9.0"
                  },
                  {
                    "fixed": "9.*"
                  },
                  {
                    "introduced": "10.0"
                  },
                  {
                    "fixed": "10.*"
                  },
                  {
                    "introduced": "11.0"
                  },
                  {
                    "fixed": "11.*"
                  },
                  {
                    "introduced": "12.0"
                  },
                  {
                    "fixed": "12.*"
                  },
                  {
                    "introduced": "13.0"
                  },
                  {
                    "fixed": "13.*"
                  },
                  {
                    "introduced": "14.0"
                  },
                  {
                    "fixed": "14.*"
                  },
                  {
                    "introduced": "15.0"
                  },
                  {
                    "fixed": "15.*"
                  },
                  {
                    "introduced": "16.0"
                  },
                  {
                    "fixed": "16.*"
                  },
                  {
                    "introduced": "17.0"
                  },
                  {
                    "fixed": "17.*"
                  },
                  {
                    "introduced": "18.0"
                  },
                  {
                    "fixed": "18.*"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StandardRange"
              }
            ]
          }
        ],
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/21xxx/CVE-2026-21637.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-21637",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 501977,
  "published_at": "2026-01-20T20:41:55.352+00:00"
}