Description
undici is an HTTP client library for Node.js. In versions 4.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, its Agent dispatcher passes its constructor options through a JSON-based deep clone before forwarding them to each per-origin pool, and because JSON cannot represent functions, a caller-supplied tls option containing a checkServerIdentity callback is silently dropped before it reaches the TLS layer. As a result, a TLS peer whose certificate a custom checkServerIdentity was written to reject, but which passes Node's default hostname and chain checks, is silently accepted. Because Agent is the default dispatcher behind request, fetch, and setGlobalDispatcher, this affects the path most applications use, and EnvHttpProxyAgent is affected on its direct and no-proxy routes as well, while only applications that pass a function-valued tls option such as a custom checkServerIdentity for certificate or public-key pinning are at risk. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged, and users should upgrade to one of those versions or later. As a workaround, pass the TLS options through connect instead of tls, or for proxied destinations use requestTls and proxyTls.
Published: 2026-10-15
Score: 7.4 High
EPSS: < 1% Very Low
KEV: No
Impact: TLS certificate validation bypass
Action: Apply Patch
AI Analysis

Impact

In the undici HTTP client library for Node.js, the Agent dispatcher internally deep‑clones its constructor options through JSON serialization before handing them off to per‑origin pools. The JSON process cannot represent function values, so a tls option that includes a custom checkServerIdentity callback is silently stripped. Consequently, when an application supplies a custom verification function to enforce certificate or public‑key pinning, that function is lost and the TLS layer performs only Node's default hostname and chain checks. As a result, a malicious TLS peer that would normally be rejected by the custom callback can be accepted, exposing the application to a man‑in‑the‑middle attack and loss of confidentiality and integrity.

Affected Systems

Affected products are the undici library for Node.js. Vulnerable versions include 4.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1. The issue was fixed in undici 6.29.1, 7.30.1, and 8.12.2, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged. Applications that use proxy agents or only pass function‑valued tls options are at risk.

Risk and Exploitability

The vulnerability carries a CVSS score of 7.4, indicating high severity. Exploitation is possible when an attacker can influence the TLS handshake, for example by impersonating a server or via a proxy. Because the EPSS score is not available and the vulnerability is not listed in CISA's KEV catalog, current exploit probability appears low, but the potential impact warrants immediate attention. The primary attack vector is remote TLS connection handling, relying on user‑supplied callback functions that are discarded during option cloning.

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

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade undici to version 6.29.1, 7.30.1, or 8.12.2 or later, which preserve the tls option and forward custom callbacks unchanged.
  • If upgrading is not possible, refactor code to pass TLS options via the connect method or, for proxied destinations, use requestTls and proxyTls so that custom checkServerIdentity callbacks are not dropped.
  • After applying the patch or refactor, verify that the custom verification logic remains active by testing the connection against a server with a mismatched certificate and confirming that the callback is invoked.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 17 Oct 2026 09:00:00 +0000

Type Values Removed Values Added
First Time appeared Undici
Undici undici
Vendors & Products Undici
Undici undici

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

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


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.0.0 through 6.29.0, 7.0.0 through 7.30.0, and 8.0.0 through 8.12.1, its Agent dispatcher passes its constructor options through a JSON-based deep clone before forwarding them to each per-origin pool, and because JSON cannot represent functions, a caller-supplied tls option containing a checkServerIdentity callback is silently dropped before it reaches the TLS layer. As a result, a TLS peer whose certificate a custom checkServerIdentity was written to reject, but which passes Node's default hostname and chain checks, is silently accepted. Because Agent is the default dispatcher behind request, fetch, and setGlobalDispatcher, this affects the path most applications use, and EnvHttpProxyAgent is affected on its direct and no-proxy routes as well, while only applications that pass a function-valued tls option such as a custom checkServerIdentity for certificate or public-key pinning are at risk. The issue is fixed in undici 6.29.1, 7.30.1, and 8.12.2, which preserve the tls option outside the JSON clone so custom verification callbacks are forwarded unchanged, and users should upgrade to one of those versions or later. As a workaround, pass the TLS options through connect instead of tls, or for proxied destinations use requestTls and proxyTls.
Title undici vulnerable to TLS certificate validation bypass via dropped tls options in Agent
Weaknesses CWE-295
References
Metrics cvssV3_1

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


cve-icon MITRE

Status: PUBLISHED

Assigner: openjs

Published:

Updated: 2026-10-16T20:03:30.839Z

Reserved: 2026-10-12T14:29:57.987Z

Link: CVE-2026-109383

cve-icon Vulnrichment

Updated: 2026-10-16T20:03:22.699Z

cve-icon NVD

Status : Undergoing Analysis

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

Modified: 2026-10-16T21:17:23.120

Link: CVE-2026-109383

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-15T18:34:01Z

Links: CVE-2026-109383 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-17T08:45:05Z

Weaknesses
  • CWE-295

    Improper Certificate Validation