CVE-2026-84933: undici vulnerable to cross-user cookie disclosure via Set-Cookie caching in shared caches
Impact
undici's interceptors.cache() does not handle Set-Cookie in the cache path. In shared-cache mode (type: 'shared', the default), a cacheable response (for example Cache-Control: public, max-age=...) carrying a Set-Cookie header is stored, and the stored Set-Cookie is re-served to a later caller that hits the same cache key. This exposes one user's cookie to another caller and lets an untrusted upstream inject cookies into cached responses served to all subsequent callers, violating RFC 6265 section 7.2 (a shared cache must not store cookies). Applications using the shared cache interceptor against untrusted or multi-user upstreams are affected. Private caches (type: 'private') are not affected.
Patches
Upgrade to 7.29.1 or 8.10.2. In shared-cache mode, undici no longer stores or re-serves responses containing Set-Cookie, including previously cached entries and revalidation paths.
Workarounds
Use a private cache (type: 'private') for per-user responses, or avoid caching responses that set cookies. Applications acting as shared caches should strip Set-Cookie from responses before caching.
Other sources
undici's cache interceptor does not handle the Set-Cookie response header anywhere in its cache path, so it neither refuses to store nor strips that header. In shared cache mode, which is the default, an otherwise cacheable response that carries a Set-Cookie header, for example one marked with a public and max-age directive, is stored and then re-served to a later caller that matches the same cache key. As a result one caller's cookie is disclosed to a different caller, and an untrusted server can inject cookies into cached responses served to all subsequent callers. This violates the requirement that a shared cache must not store cookies. This affects undici versions from 7.0.0 up to 7.29.1 and from 8.0.0 up to 8.10.2. Users should upgrade to undici 7.29.1 or 8.10.2.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/undicito a version that resolves this vulnerability.Fixed in 8.10.2 - Upgrade
Upgrade
npm/undicito a version that resolves this vulnerability.Fixed in 7.29.1 - Upgrade
Upgrade
undicito a version that resolves this vulnerability.Fixed in 7.29.1 - Upgrade
Upgrade
undicito a version that resolves this vulnerability.Fixed in 8.10.2 - Configuration
Use a private cache (type: 'private') for per-user responses.
undici shared cache interceptor type = private - Compensating control
Strip Set-Cookie from responses before caching, or avoid caching responses that set cookies.
Event History
Frequently Asked Questions
Which deployments are most exposed to this issue?
Deployments using undici's cache interceptor in shared cache mode are exposed; shared cache mode is the default. The issue applies when the cache stores an otherwise cacheable response that includes a Set-Cookie header.
What must happen for cookie disclosure or injection to occur?
A response carrying Set-Cookie must be considered cacheable, such as one with public and max-age directives, and be stored under a cache key that a later caller matches. The later caller can then receive the prior caller's cookie, while an untrusted server can cause cookies to be included in cached responses served to subsequent callers.
Which versions should be upgraded?
The affected ranges are stated as undici 7.0.0 through 7.29.1 and 8.0.0 through 8.10.2. The provided advisory recommends upgrading to undici 7.29.1 or 8.10.2.