Description
undici is an HTTP client library for Node.js. In versions 4.2.1 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, the client process crashes when a TLS 1.2 server renegotiates after the connection is established and presents a different, CA-trusted certificate whose hostname does not match the requested host. Node.js re-runs hostname verification on the renegotiated handshake and destroys the socket with a certificate-altname error, but undici's established-socket error handler asserted that this error code could never occur, so the peer-controlled error became an uncaught assertion that terminates the Node.js process, affecting both the HTTP/1.1 and HTTP/2 paths. A malicious or compromised HTTPS endpoint reached through undici or the global fetch() can crash the client with a single server-initiated renegotiation, taking down all in-flight requests and background work in the process, and exploitation needs no CA compromise because the attacker controls the endpoint and can present two ordinary valid certificates. Only TLS 1.2 is affected, since TLS 1.3 does not support renegotiation. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, and users should upgrade to one of those versions or later. As a workaround, restrict outbound connections to TLS 1.3 so renegotiation cannot occur, when the target endpoints support it.
Published: 2026-10-15
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via Process Crash
Action: Immediate Patch
AI Analysis

Impact

Undici, the HTTP client library for Node.js, contains a flaw that causes the Node.js process to terminate when a TLS 1.2 server initiates a renegotiation after the initial handshake and supplies a different, CA‑trusted certificate whose host name does not match the request target. Undici’s error handler incorrectly assumes that the socket close error produced by this condition can never happen, turning the normally handled hostname‑altname error into an uncaught assertion that kills the process. The denial of service can be triggered with a single server‑initiated renegotiation, bringing all in‑flight requests and background work to an abrupt halt. The attacker only needs to control an HTTPS endpoint that undici contacts, and no CA compromise is necessary because two ordinary valid certificates can be presented.

Affected Systems

Vulnerable releases include undici versions 4.2.1‑6.29.0, 7.0.0‑7.30.0, and 8.0.0‑8.12.1. The fix is delivered in v6.29.1, v7.30.1, and v8.12.2 and later releases. Applications that import undici or use Node.js’s global fetch() and rely on those affected ranges are at risk.

Risk and Exploitability

With a CVSS score of 7.5, the vulnerability is considered high severity. No EPSS score is available, and it is not yet listed in the CISA KEV catalog. An attacker can exploit the flaw from any remote system that undici communicates with, simply by performing the renegotiation that violates hostname expectations. Because TLS 1.3 disables renegotiation, restricting outbound connections to TLS 1.3 removes the attack surface.

Generated by OpenCVE AI on October 16, 2026 at 07:10 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade undici to v6.29.1 or later (7.30.1 or 8.12.2) to apply the patch.
  • Configure the application to use TLS 1.3 exclusively for outbound HTTPS connections, thereby preventing renegotiation.
  • Monitor application logs for uncaught assertion failures or crashes indicating possible exploitation attempts.

Generated by OpenCVE AI on October 16, 2026 at 07:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 16 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Thu, 15 Oct 2026 18:45:00 +0000

Type Values Removed Values Added
Description undici is an HTTP client library for Node.js. In versions 4.2.1 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, the client process crashes when a TLS 1.2 server renegotiates after the connection is established and presents a different, CA-trusted certificate whose hostname does not match the requested host. Node.js re-runs hostname verification on the renegotiated handshake and destroys the socket with a certificate-altname error, but undici's established-socket error handler asserted that this error code could never occur, so the peer-controlled error became an uncaught assertion that terminates the Node.js process, affecting both the HTTP/1.1 and HTTP/2 paths. A malicious or compromised HTTPS endpoint reached through undici or the global fetch() can crash the client with a single server-initiated renegotiation, taking down all in-flight requests and background work in the process, and exploitation needs no CA compromise because the attacker controls the endpoint and can present two ordinary valid certificates. Only TLS 1.2 is affected, since TLS 1.3 does not support renegotiation. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, and users should upgrade to one of those versions or later. As a workaround, restrict outbound connections to TLS 1.3 so renegotiation cannot occur, when the target endpoints support it.
Title undici vulnerable to Denial of Service via TLS 1.2 certificate-changing renegotiation
Weaknesses CWE-248
CWE-617
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: openjs

Published:

Updated: 2026-10-15T18:38:25.613Z

Reserved: 2026-09-08T16:52:54.295Z

Link: CVE-2026-87018

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-15T19:17:46.600

Modified: 2026-10-15T20:38:04.303

Link: CVE-2026-87018

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-15T18:38:25Z

Links: CVE-2026-87018 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-16T07:15:17Z

Weaknesses