Origin Validation Error Affecting undici package, versions >=7.30.1 <7.30.2>=8.12.2 <8.12.4


Severity

Recommended
0.0
critical
0
10

CVSS assessment by Snyk's Security Team. Learn more

Threat Intelligence

EPSS
0.16% (5th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-JS-UNDICI-22291102
  • published8 Nov 2026
  • disclosed6 Nov 2026
  • creditgooyong-sec, Panelv4, w116tjb

Introduced: 6 Nov 2026

NewCVE-2026-116592  (opens in a new tab)
CWE-346  (opens in a new tab)

How to fix?

Upgrade undici to version 7.30.2, 8.12.4 or higher.

Overview

undici is an An HTTP/1.1 client, written from scratch for Node.js

Affected versions of this package are vulnerable to Origin Validation Error via the cache-handler.js redirect-hop inspection logic when an originless Agent composes the redirect and shared cache interceptors as compose(redirect(), cache()). Undici decides whether to store the final response under the original request key by inspecting only the final redirect hop, bypassing the earlier fix for CVE-2026-109829 that compared only the initial and final origins. A redirect that bounces through an untrusted intermediate origin and returns to the trusted origin is still cached under the trusted key, an intermediate hop's Vary header is dropped so a response that varies on Authorization or Cookie can be served to a different user, and an intermediate hop's no-cache or default-uncacheable status is ignored so a non-storable redirect is laundered into a cacheable entry. An attacker who controls the target of a redirect from a trusted URL can poison the cached entry for that URL or have a private, per-user response served to a later caller.

Note: This is only exploitable when an originless Agent, a shared cache store, and compose(redirect(), cache()) are all used together.

Workaround

Compose the interceptors as compose(cache(), redirect()), use per-origin dispatchers and cache stores, or disable shared caching on redirect-capable requests.

CVSS Base Scores

version 4.0
version 3.1