Skip to main content

follow-redirects EUVDEUVD-2026-111363

| CVE-2026-116689 MEDIUM
Insertion of Sensitive Information Into Sent Data (CWE-201)
2026-10-27 GitHub_M
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Caller passes cross-realm sensitiveHeaders array
  2. Delivery
    sensitiveHeaders list silently discarded via instanceof check
  3. Exploit
    Victim request hits attacker-controlled endpoint
  4. Execution
    Server returns cross-origin 302 redirect
  5. Impact
    Custom 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

follow-redirects 1.16.0, < 1.16.2

Affected Packages

euvd follow_redirects fix: 1.16.2

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

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 5.9 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Oct 27, 2026 - 20:03 EUVD
CVE Published
Oct 27, 2026 - 19:38 cve.org
MEDIUM 5.9

DescriptionCVE.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

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Ubiquitous
near-universal transitive Node.js HTTP client dependency (e.g. via axios)
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy