CVE-2026-85152
Executive Summary
CVE-2026-85152 is a cross-origin information disclosure and cache poisoning flaw in undici versions 8.10.0 through 8.10.2, caused by the cache and deduplication interceptor keys omitting the destination origin when composed directly onto a Client or Pool. An attacker able to influence requests to multiple trusted origins can cause a cacheable or in-flight response from one origin to be returned for a request to a different origin, enabling authentication bypass and persistent cache poisoning. Applications using an Agent (which carries the origin in dispatch options) are unaffected.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Undici is the HTTP/1.1 client used by Node.js core. Version 8.10.0 introduced a regression in which the cache interceptor and the request-deduplication interceptor, when composed directly onto a Client or Pool instance, build their internal cache/dedup key without the destination origin. The key falls back to an empty origin string, so two requests with matching method, path, and relevant headers but different upstream origins collide in the same cache bucket.
The vulnerability class is CWE-346 (Origin Validation Error). The impact is twofold:
- Cross-origin information disclosure — a response cached for origin A is served to a request targeting origin B.
- Persistent cache poisoning — the poisoned entry remains resident, so subsequent requests for the affected key continue to receive the attacker-influenced response.
When an Agent is used, the origin is included in the dispatch options and the cache key is therefore distinct, which is why Agent-based applications are not affected. The reporter demonstrated a full authentication bypass: a JWT signed with an attacker-controlled key was accepted as belonging to a trusted issuer, and the trusted origin was never contacted because the poisoned cache entry satisfied the request.
No public PoC or exploit code is available as of this writing; the attack chain is inferred from the NVD description and the CWE-346 class. Specific function names or internal symbol names are not disclosed in the available advisory text, so they are not asserted here.
Exploitation Scenarios
- Reconnaissance / target identification — Identify a Node.js application using undici 8.10.0–8.10.2 that composes the cache or deduplicate interceptor directly onto a
ClientorPool, and that communicates with multiple upstream origins. - Triggering the flaw class — The attacker arranges for a request to a trusted origin (or induces the application to make one) whose method, path, and relevant headers match a request destined for a different origin. Because the cache key omits the origin, the response is shared across origins.
- Payload/execution at the class level — The attacker supplies a response that is cached under the origin-agnostic key. A subsequent request to the victim origin retrieves the poisoned entry instead of contacting the legitimate upstream. In the reported authentication-bypass scenario, a JWT signed with an attacker-controlled key was accepted as valid for a trusted issuer.
- Post-exploitation impact — Cross-origin data disclosure (reading cached responses belonging to another origin), authentication bypass, and persistent cache poisoning that survives individual requests.
No public PoC or exploit code is available; the chain above is derived strictly from the vulnerability class and the NVD description.
Impact Assessment
CVSS 3.1 base score 7.4 (High): AV:N (network-reachable), AC:H (requires specific interceptor composition and matching request attributes), PR:N (no privileges required), UI:N (no user interaction), S:U (scope unchanged), C:H (high confidentiality impact — cross-origin response disclosure), I:H (high integrity impact — poisoned cache and authentication bypass), A:N (no availability impact). EPSS 0.00173 (~7th percentile) indicates low observed exploitation likelihood at present; CISA KEV: NO. Blast radius is limited to Node.js services using the vulnerable undici versions with the interceptor composed directly on Client/Pool. Agent-based deployments are not affected. Business impact includes credential/token bypass and cross-tenant data exposure in multi-origin service meshes.
Detection Guidance
Sigma Rule
title: Undici Cross-Origin Cache/Dedup Key Collision (CVE-2026-85152)
id: 3f9c2b1a-7d4e-4c8a-9b2f-1a2b3c4d5e6f
status: experimental
description: Detects Node.js processes loading undici 8.10.0-8.10.2 with cache/dedup interceptors composed on Client/Pool
logsource:
category: process_creation
product: linux
detection:
selection_proc:
Image|endswith: '/node'
selection_ver:
CommandLine|contains:
- 'undici@8.10.0'
- 'undici@8.10.1'
- 'undici@8.10.2'
condition: selection_proc and selection_ver
falsepositives:
- Legitimate development or test environments
level: medium
tags:
- attack.t1190
- cve.2026.85152
YARA Rule
rule CVE_2026_85152_Undici_Origin_Key
{
meta:
description = "Detects undici 8.10.0-8.10.2 references implying vulnerable cache/dedup interceptor usage"
author = "valtersit.com"
reference = "CVE-2026-85152"
date = "2026-01-01"
strings:
$v1 = "8.10.0" ascii
$v2 = "8.10.1" ascii
$v3 = "8.10.2" ascii
$i1 = "cacheInterceptor" ascii
$i2 = "deduplicate" ascii
$p = "undici" ascii nocase
condition:
$p and any of ($v*) and any of ($i*)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-85152 Undici cross-origin cache/dedup key collision potential"; flow:established,to_server; http.method; content:"GET"; http.header; content:"Cache-Control"; nocase; threshold: type limit, track by_src, count 1, seconds 60; classtype:attempted-recon; sid:202685152; rev:1;)
Elastic Detection
process where process.name == "node" and process.command_line : ("undici@8.10.0" or "undici@8.10.1" or "undici@8.10.2")
Splunk SPL Query
index=web OR index=app sourcetype=nodejs
| search "undici" ("8.10.0" OR "8.10.1" OR "8.10.2")
| stats count by host, process, command_line
| where count > 0
Wazuh OSSEC Rule
<group name="nodejs,undici,cve-2026-85152">
<rule id="100852" level="8">
<decoded_as>json</decoded_as>
<field name="package">undici</field>
<field name="version">^8\.10\.[012]$</field>
<description>CVE-2026-85152: Vulnerable undici version detected (cross-origin cache/dedup key collision)</description>
<mitre>
<id>T1190</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 4/4 (CONFIRMED — NVD, OSV, and RHSA independently confirm the fix).
- Immediate mitigations — Audit applications for direct composition of the cache or deduplicate interceptor onto a
ClientorPool. Where possible, route through anAgent, which carries the origin in its dispatch options and is unaffected. Disable cache/dedup interceptors on multi-origin clients until patched. - Patch/upgrade steps — Upgrade undici to 8.10.2. For Node.js applications, update the dependency and reinstall (
npm install undici@8.10.2), regenerate lockfiles, and redeploy. Verify withnpm ls undici. - Long-term hardening — Enforce dependency version pinning and automated SCA alerts for undici advisories. Add integration tests for cross-origin cache isolation. Prefer Agent-based dispatch in multi-origin environments. Monitor OSV/RHSA feeds for future regressions.
References
- NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-85152
- OSV — https://osv.dev/vulnerability/CVE-2026-85152
- Red Hat Security Advisory (RHSA) — vendor advisory confirming fix
- Node.js / undici project release notes for 8.10.2
- CWE-346 Origin Validation Error — https://cwe.mitre.org/data/definitions/346.html
No known threat actor campaigns or exploit-in-the-wild evidence is available as of this writing (EPSS 0.00173; CISA KEV: NO; no public PoC).
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.