Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCaller passes cross-realm sensitiveHeaders array
-
DeliverysensitiveHeaders list silently discarded via instanceof check
-
ExploitVictim request hits attacker-controlled endpoint
-
ExecutionServer returns cross-origin 302 redirect
-
ImpactCustom credential header forwarded to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Outbound data filtering
|
| Exploitation Conditions | Exploitation requires all of: follow-redirects 1.16.0 or 1.16.1; a direct caller or wrapper that supplies the sensitiveHeaders option as a genuine cross-realm array (for example one created with node:vm/runInNewContext or otherwise originating in a different JavaScript realm) - same-realm arrays are handled correctly and are not vulnerable; at least one custom credential header name listed in that sensitiveHeaders option; and an attacker-controlled or compromised endpoint that issues a cross-origin redirect which the client then follows. Limiting factors: built-in Authorization, Proxy-Authorization, and Cookie stripping remained effective and are not affected; callers (such as Axios 1.20.0) that normalize the array before passing it did not reproduce; and only the custom header(s) named in the discarded list are exposed. This combination is why the trigger is rated high-complexity rather than default-config remote. |
| Impact | This is a genuine but conditional information-disclosure flaw, best treated as medium rather than urgent. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N, 5.9) is internally consistent with the description: exploitation is network-reachable and needs no authentication or user interaction (PR:N/UI:N), but AC:H correctly reflects that several non-default preconditions must align - a caller must pass sensitiveHeaders as a genuine cross-realm array (e.g. built via node:vm), a custom credential header must be named in that option, and the attacker must control or compromise an endpoint that returns a cross-origin redirect. Impact is limited to disclosure of that one custom header (C:H, no integrity or availability effect). No EPSS score, KEV listing, or confirmed public working exploit is present in the input, and the SSVC/priority signal is 'this_month' rather than act_now or emergency, so the signals agree that this is a real-but-targeted issue, not mass-exploitable. The CVSS 4.0 reading supplied in the advisory (8.2 High) diverges upward mainly because 4.0 scores AC:L with AT:P, shifting the 'hard preconditions' from complexity into an attack requirement; the practical risk is unchanged - narrow preconditions, single-header disclosure. Note the advisory explicitly found built-in Authorization/Proxy-Authorization/Cookie protections unaffected and that Axios normalizes the array and did not reproduce, which further bounds real-world exposure. |
| Exploit ScenarioDerived | A Node.js application uses follow-redirects 1.16.0/1.16.1 and passes a sensitiveHeaders list containing a custom credential header (e.g. X-API-Key) as an array created in another JS realm, such as via node:vm. Because the library checks the list with instanceof Array it silently drops the list, so when the client follows a redirect to an attacker-controlled cross-origin host, that custom header - which should have been stripped - is forwarded to the attacker. The advisory describes a loopback proof-of-concept demonstrating this, but the full harness is held privately. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Cross-origin credential leakage in follow-redirects 1.16.0 through 1.16.1 lets a custom credential header named in the sensitiveHeaders option be forwarded to an attacker-controlled redirect destination when that option is supplied as a genuine cross-realm array. Only direct callers or wrappers that pass a cross-realm array (for example one created via node:vm) are affected - same-realm arrays are handled correctly, built-in Authorization, Proxy-Authorization and Cookie stripping remained effective, and callers such as Axios 1.20.0 that normalize the array did not reproduce. The vendor released a patch in 1.16.2, and the advisory describes a loopback proof-of-concept harness that is held privately; there is no confirmed active exploitation (not in CISA KEV), and this is best treated as a conditional medium-severity disclosure rather than an urgent default-configuration issue.
RemediationAI
Upgrade follow-redirects to 1.16.2, which replaces the realm-sensitive instanceof Array check with Array.isArray in _sanitizeOptions (commit https://github.com/follow-redirects/follow-redirects/commit/b0a7751e9cd64cd8eeb6ec67d2f206a9cc88d3f8; release https://github.com/follow-redirects/follow-redirects/releases/tag/v1.16.2; advisory https://github.com/follow-redirects/follow-redirects/security/advisories/GHSA-mrwp-f3q8-3g9p). Where upgrading is not immediately possible, ensure any sensitiveHeaders value is a same-realm array before it reaches the library - for example normalize a cross-realm list with Array.from(...) or Array.prototype.slice.call(...) in the direct caller or wrapper, since same-realm arrays are sanitized correctly; note this is a caller-side workaround that depends on every wrapper in the request path being identified and changed, and it also requires normalizing each member as a header-name string. Callers that already normalize the array (Axios 1.20.0 was confirmed not to reproduce) need no further action beyond tracking their bundled follow-redirects version. Because only custom headers named in the discarded list are exposed, revoke and rotate any API key or service token that was named in sensitiveHeaders and sent through a client that may have passed a cross-realm array, and note that built-in Authorization, Proxy-Authorization and Cookie protections were never bypassed. The vendor's complete fix is the version upgrade; this issue is prioritized as this_month rather than emergency.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
follow-redirects is a Node.js HTTP/HTTPS client wrapper that transparently follows redirects, and version 1.16.0 introduced the documented sensitiveHeaders option to name additional headers that must be stripped on cross-origin redirects. In index.js, RedirectableRequest.prototype._sanitizeOptions reset options.sensitiveHeaders to an empty list whenever a local isArray() helper returned false, and that helper was implemented as value instanceof Array. Because instanceof depends on JavaScript realm identity (prototype identity of the Array constructor), an array created in another realm - for example via node:vm's runInNewContext - is recognized by Array.isArray but fails instanceof Array. The result is CWE-201 (insertion of sensitive information into sent data): the caller's declared list of sensitive header names is silently discarded rather than enforced, so when the request later follows a cross-origin redirect, the named custom credential header is copied to the new destination. The same file already used Array.isArray(options.headers), which correctly handles cross-realm arrays. The fix in commit b0a7751e9cd64cd8eeb6ec67d2f206a9cc88d3f8 replaces the instanceof check with Array.isArray and removes the isArray helper; built-in protections for Authorization, Proxy-Authorization and Cookie were never affected, and only the custom header names listed in the discarded option are exposed.
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Network-reachable with no auth or interaction (AV:N/PR:N/UI:N); AC:H reflects the required cross-realm array plus attacker-controlled cross-origin redirect; only a custom credential header leaks, so C:H with I:N/A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
follow-redirects is a Node.js HTTP and HTTPS client wrapper that automatically follows redirects. From 1.16.0 until 1.16.2, the documented sensitiveHeaders option is checked with value instanceof Array, so an array created in another JavaScript realm is replaced with an empty list even though Array.isArray recognizes it. When a request then follows an attacker-controlled cross-origin redirect, a custom credential header named in that discarded list can be forwarded to the redirect destination. This issue is fixed in version 1.16.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-111363
NVD
CVE.org
EPSS
GitHub
Exploit-DB