Skip to content

DSW-000 update dependency follow-redirects to v1.16.0 [SECURITY] - #538

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-follow-redirects-vulnerability
Open

DSW-000 update dependency follow-redirects to v1.16.0 [SECURITY]#538
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-follow-redirects-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
follow-redirects 1.15.111.16.0 age adoption passing confidence

follow-redirects leaks Custom Authentication Headers to Cross-Domain Redirect Targets

GHSA-r4q5-vmmm-2653

More information

Details

Summary

When an HTTP request follows a cross-domain redirect (301/302/307/308), follow-redirects only strips authorization, proxy-authorization, and cookie headers (matched by regex at index.js:469-476). Any custom authentication header (e.g., X-API-Key, X-Auth-Token, Api-Key, Token) is forwarded verbatim to the redirect target.

Since follow-redirects is the redirect-handling dependency for axios (105K+ stars), this vulnerability affects the entire axios ecosystem.

Affected Code

index.js, lines 469-476:

if (redirectUrl.protocol !== currentUrlParts.protocol &&
   redirectUrl.protocol !== "https:" ||
   redirectUrl.host !== currentHost &&
   !isSubdomain(redirectUrl.host, currentHost)) {
  removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
}

The regex only matches authorization, proxy-authorization, and cookie. Custom headers like X-API-Key are not matched.

Attack Scenario
  1. App uses axios with custom auth header: headers: { 'X-API-Key': 'sk-live-secret123' }
  2. Server returns 302 Location: https://evil.com/steal
  3. follow-redirects sends X-API-Key: sk-live-secret123 to evil.com
  4. Attacker captures the API key
Impact

Any custom auth header set via axios leaks on cross-domain redirect. Extremely common pattern. Affects all axios users in Node.js.

Suggested Fix

Add a sensitiveHeaders option that users can extend, or strip ALL non-standard headers on cross-domain redirect.

Disclosure

Source code review, manually verified. Found 2026-03-20.

Severity

  • CVSS Score: 6.9 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

follow-redirects/follow-redirects (follow-redirects)

v1.16.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/npm-follow-redirects-vulnerability branch 6 times, most recently from 90c895c to 755ef46 Compare July 30, 2026 16:26
@renovate renovate Bot changed the title chore(deps): dsw-000 update dependency follow-redirects to v1.16.0 [security] DSW-000 update dependency follow-redirects to v1.16.0 [SECURITY] Jul 31, 2026
@renovate
renovate Bot force-pushed the renovate/npm-follow-redirects-vulnerability branch 3 times, most recently from 4ae9097 to dd7628e Compare August 5, 2026 16:42
@renovate
renovate Bot force-pushed the renovate/npm-follow-redirects-vulnerability branch 2 times, most recently from 53c46a8 to 17aaf05 Compare August 14, 2026 11:07
@renovate
renovate Bot force-pushed the renovate/npm-follow-redirects-vulnerability branch 2 times, most recently from 4e07318 to 778dc74 Compare August 21, 2026 12:29
@renovate
renovate Bot force-pushed the renovate/npm-follow-redirects-vulnerability branch from 778dc74 to 91fa862 Compare August 21, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants