Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim app contacts attacker-influenced server
-
DeliveryServer replies with cross-origin redirect
-
Exploitfor...in skips array header indices
-
ExecutionCredential headers forwarded verbatim
-
ImpactAttacker harvests Authorization and Cookie
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the victim application pass request headers to follow-redirects as Node's alternating name/value array (e.g. ['Authorization', 'token', ...]) rather than as a plain object - this is the precise trigger, because for...in over an array yields numeric indices that never match the credential filter. It additionally requires that those headers include credentials (Authorization, Proxy-Authorization, Cookie, or declared sensitiveHeaders) and that the application follows a redirect to a different host or a downgraded protocol controlled or influenced by the attacker. Limiting factors: the vulnerable range is only 1.16.0 to before 1.16.1, object-form headers (the common case) are not affected, and the attacker must be able to serve or influence the redirect response the victim follows; the previously-recommended sensitiveHeaders mitigation does NOT limit exploitation because it uses the same broken helper. |
| Impact | Signals are moderately consistent and point to a real but conditional confidentiality risk rather than a mass-exploitation emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:H) yields 8.2 (High): network-reachable, unauthenticated, no user interaction, high confidentiality impact - but critically AT:P (Attack Requirements present) encodes that exploitation only works when the victim application passes headers in Node's array form, a non-default usage pattern. No EPSS score, KEV listing, or public POC was supplied, so there is no evidence of active or at-scale exploitation; exploitation status is 'no public exploit identified at time of analysis.' The absence of KEV combined with the AT:P requirement suggests this is a latent supply-chain weakness, not a widely-weaponized one. The strongest mitigating factor not captured by the headline CVSS number is the narrow affected range (>=1.16.0, <1.16.1) and the array-form-header precondition - most callers use object-form headers and are unaffected. Note one nuance to verify: the flaw also defeats the sensitiveHeaders mitigation shipped for CVE-2026-40895, so environments relying on that earlier fix may believe they are protected when they are not. |
| Exploit ScenarioDerived | A victim Node.js service uses follow-redirects (1.16.0) with array-form request headers that include an Authorization or Cookie, and makes an outbound request to a server an attacker controls or can influence. That server replies with a 30x redirect to a different host; because the credential-stripping routine iterates an array with for...in and only sees numeric indices, no headers are removed and the victim's credentials are sent verbatim to the attacker's host. No public exploit code was provided, but the GHSA advisory and patch commit fully document the mechanism. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
follow-redirects 1.16.0 through 1.16.x before 1.16.1 can disclose Authorization, Proxy-Authorization, Cookie, and caller-declared sensitiveHeaders when an application supplies headers in Node's alternating name/value array form and follows an attacker-influenced redirect to a different host or a downgraded protocol. This is an unauthenticated confidentiality issue (CWE-200) with high credential impact, but exploitation is conditional because object-form headers are unaffected and the attacker must serve or influence the redirect; the supplied CVSS 4.0 score is 8.2, while the independent CVSS 3.1 vector AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N captures the high attack complexity. No public exploit was identified at time of analysis, and no CISA KEV confirmation was present in the supplied data; the vendor patch is 1.16.1.
RemediationAI
Vendor-released patch: upgrade follow-redirects to 1.16.1 or later (https://github.com/follow-redirects/follow-redirects/releases/tag/v1.16.1), which normalizes array-form headers to an object before redirect processing as shown in commit 9865ca45490e4d0f7b6944870318408344570aff; see advisory GHSA-q3jh-wrc6-jgq8. If immediate upgrade is not possible, pass headers as a plain object keyed by header name instead of the array form (side effect: duplicate-name header semantics may change), and do not rely on sensitiveHeaders to protect array-form headers because it uses the same broken helper. Applications can also configure redirect handling to reject cross-origin or protocol-downgrade redirects, or use beforeRedirect to manually remove Authorization, Proxy-Authorization, and Cookie when the destination host/protocol changes (trade-off: this can break legitimate redirect flows and must be implemented consistently for every redirect path); restricting outbound requests to allowlisted destinations reduces exposure but requires maintaining the allowlist.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
follow-redirects is an npm HTTP/HTTPS client wrapper and drop-in replacement for Node's http.request/https.request. Node accepts request headers either as an object keyed by header name or as an alternating array of names and values. The cross-origin credential-stripping helper removeMatchingHeaders(regex, headers) uses for...in and matches keys against a header-name filter; when headers is an array, for...in yields numeric indices such as "0", "1", and "2", which never match the filter, so nothing is removed. The same helper is used for Host stripping and content-* stripping on POST-to-GET redirects, and the sensitiveHeaders option added for CVE-2026-40895 / GHSA-r4q5-vmmm-2653 relies on it, making that mitigation ineffective for array-form headers. The supplied CPE cpe:2.3:a:follow-redirects:follow-redirects:*:*:*:*:*:*:*:* is a broad wildcard, so the advisory's npm range >=1.16.0 <1.16.1 is the precise scoping data; the fix in commit 9865ca45490e4d0f7b6944870318408344570aff normalizes array headers to an object in _sanitizeOptions and adds tests for same-host, subdomain, cross-host, and cross-port redirects.
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
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable and unauthenticated (AV:N/PR:N), but AC:H because exploitation depends on the victim using non-default array-form headers; confidentiality-only leak so C:H/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 version 1.16.0 to before version 1.16.1, follow-redirects removes sensitive credential headers (Authorization, Proxy-Authorization, Cookie, and any caller-declared sensitiveHeaders) before following a redirect that crosses to a different host or downgrades to a less secure protocol. The removal routine iterates the caller's headers container with for...in and matches header names against a filter. This assumes the headers container is a plain object keyed by header names. Node's underlying http.request, which follow-redirects is a drop-in replacement for, also accepts headers as an alternating array of names and values. For an array, for...in yields the numeric indices "0", "1", "2" and so on, which never match a header-name filter, so nothing is removed. An application that sends array-form headers and follows an attacker-controlled cross-origin redirect therefore forwards its Authorization, Cookie, and Proxy-Authorization headers verbatim to the attacker-controlled destination, with no error or warning. The sensitiveHeaders option added to fix CVE-2026-40895 / GHSA-r4q5-vmmm-2653 is equally ineffective, because it relies on the same helper. This is an unauthenticated confidentiality vulnerability: any remote server the victim application contacts can harvest the victim's credential headers by responding with a cross-origin redirect. This issue has been patched in version 1.16.1.
Blast Radius
ecosystem impact- 313 npm packages depend on follow-redirects (15 direct, 298 indirect)
Ecosystem-wide dependent count for version 1.16.0.
Articles & Coverage 1
Technical POC Analysis
CWE-200 (with CWE-212 as the removal-failure view): the cross-origin credential-stripping control silently no-ops for array-form headers.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The follow-redirects Node.js library in versions 1.16.0 through 1.16.x before 1.16.1 can expose Authorization, Proxy-Authorization, Cookie, and caller-declared sensitive headers when applications use array-form headers and follow attacker-influenced redirects to another host or a downgraded protocol. This is an unauthenticated confidentiality risk for services that rely on the library, but exploitation is conditional on array-form header use and attacker influence over the redirect; no public exploit identified at time of analysis. Leadership should prioritize dependency remediation because leaked credentials could enable downstream account or service compromise.
Apply vendor patch.
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-105225
GHSA-q3jh-wrc6-jgq8
NVD
CVE.org
EPSS
Exploit-DB