undici: Cache poisoning and cross-user data disclosure via cross-origin redirects (CVE-2026-109829)
The undici library is vulnerable to cache poisoning and unauthorized cross-user data disclosure due to improper cache key generation when using shared cache interceptors after redirect handlers.
CVE search metadata
CVE search record: CVE-2026-109829. Severity: high. CVSS: 7.4. EPSS: 0.15%. KEV: no. Product: undici (< 7.30.1), undici (>= 8.0.0, < 8.12.2). Brief: undici: Cache poisoning and cross-user data disclosure via cross-origin redirects (CVE-2026-109829). Brief link: https://feed.craftedsignal.io/briefs/2026-10-undici-cache-poisoning/
Triage facts
Revision 1- Applicability
- undici (< 7.30.1), undici (>= 8.0.0, < 8.12.2)
- Evidence
- Unknown
- Severity
- High
- Action
- Elevated
- Sources
- 1 public source
- Freshness
- Revision 1Oct 27, 23:58 UTC
- Vulnerabilities
- 1 CVE
- Source quality
- A1Likely
The undici HTTP client library contains a vulnerability (CVE-2026-109829) in its cache interceptor when used in conjunction with the redirect interceptor. Specifically, when an originless Agent is configured with the interceptor composition compose(redirect(), cache()) and a shared cache, the cache key is generated based on the original request URL before the redirect occurs.
This allows the response from a cross-origin redirect to be stored under the key of the initial trusted URL. An attacker controlling the redirect target can poison the cache with malicious content, or cause private, user-specific data to be stored and served to unauthenticated callers if the redirect path contains sensitive information. The vulnerability affects versions 7.x (< 7.30.1) and 8.x (< 8.12.2).
Impact
Successful exploitation allows for persistent cache poisoning of trusted URLs or the disclosure of sensitive, private data across users within the same shared cache instance.
Recommendation
- Upgrade
undicito version7.30.1or8.12.2immediately. - If upgrading is not immediately possible, update the interceptor composition order to
compose(cache(), redirect()). - Ensure the use of per-origin dispatchers (
ClientorPool) or disable shared caching for requests that are susceptible to redirects.
Immediate actions
Patch undici dependency to 7.30.1 or 8.12.2
Threat Hunt
Identify applications utilizing undici versions in the affected range and inspect source code for the interceptor composition pattern.
Data: Application dependency manifests (package.json, lock files), Application source code
Mitigations
Change interceptor composition order to compose(cache(), redirect())
CVE-2026-109829