Proxy-Authorization header kept across hosts in follow-redirects
Description
follow-redirects is an open source, drop-in replacement for Node's http and https modules that automatically follows redirects. In affected versions follow-redirects only clears authorization header during cross-domain redirect, but keep the proxy-authentication header which contains credentials too. This vulnerability may lead to credentials leak, but has been addressed in version 1.15.6. Users are advised to upgrade. There are no known workarounds for this vulnerability.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
In follow-redirects, the Proxy-Authorization header is not cleared during cross-domain redirects, potentially leaking proxy credentials.
Vulnerability
Overview
follow-redirects is a Node.js module that automatically follows HTTP and HTTPS redirects. The vulnerability arises from incomplete clearing of sensitive headers during cross-domain redirects. While the Authorization and Cookie headers are stripped, the Proxy-Authorization header, which also carries credentials, is not removed. This inconsistency violates the Fetch Standard's requirement to clear all authentication entries when navigating across origins [1].
Exploitation
An attacker can exploit this by setting up a server that performs a cross-domain redirect. When a client using follow-redirects makes a request with a Proxy-Authorization header, the redirect will forward that header to a different origin, potentially controlled by the attacker. No special privileges are required; the attacker only needs to trigger a redirect from a domain the client trusts to a domain under their control [4].
Impact
Successful exploitation could lead to the leakage of proxy authentication credentials. If an attacker obtains these credentials, they may gain unauthorized access to proxy servers, potentially enabling further attacks such as traffic interception or impersonation within the network.
Mitigation
The issue is fixed in follow-redirects version 1.15.6. Users should upgrade immediately. There are no known workarounds for this vulnerability [4]. The advisory recommends updating the header matching regex to include proxy-authorization.
AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
follow-redirectsnpm | < 1.15.6 | 1.15.6 |
Affected products
83- osv-coords82 versionspkg:apk/chainguard/configurable-http-proxypkg:apk/chainguard/kibana-7pkg:apk/chainguard/kibana-7.17pkg:apk/chainguard/kibana-7-bitnamipkg:apk/chainguard/kubeflow-centraldashboardpkg:apk/chainguard/kubeflow-pipelinespkg:apk/chainguard/kubeflow-pipelines-apiserverpkg:apk/chainguard/kubeflow-pipelines-cache-deployerpkg:apk/chainguard/kubeflow-pipelines-cache-deployer-compatpkg:apk/chainguard/kubeflow-pipelines-cache_serverpkg:apk/chainguard/kubeflow-pipelines-frontendpkg:apk/chainguard/kubeflow-pipelines-metadata-envoy-configpkg:apk/chainguard/kubeflow-pipelines-metadata-writerpkg:apk/chainguard/kubeflow-pipelines-metadata-writer-compatpkg:apk/chainguard/kubeflow-pipelines-persistence_agentpkg:apk/chainguard/kubeflow-pipelines-scheduledworkflowpkg:apk/chainguard/kubeflow-pipelines-viewer-crd-controllerpkg:apk/chainguard/lernapkg:apk/chainguard/opensearch-dashboards-2pkg:apk/chainguard/opensearch-dashboards-2-alerting-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-anomaly-detection-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-compatpkg:apk/chainguard/opensearch-dashboards-2-configpkg:apk/chainguard/opensearch-dashboards-2-dashboards-mapspkg:apk/chainguard/opensearch-dashboards-2-dashboards-notificationspkg:apk/chainguard/opensearch-dashboards-2-dashboards-observabilitypkg:apk/chainguard/opensearch-dashboards-2-dashboards-query-workbenchpkg:apk/chainguard/opensearch-dashboards-2-dashboards-reportingpkg:apk/chainguard/opensearch-dashboards-2-dashboards-search-relevancepkg:apk/chainguard/opensearch-dashboards-2-dashboards-visualizationspkg:apk/chainguard/opensearch-dashboards-2-fipspkg:apk/chainguard/opensearch-dashboards-2-fips-alerting-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-fips-anomaly-detection-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-fips-configpkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-mapspkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-notificationspkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-observabilitypkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-query-workbenchpkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-reportingpkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-search-relevancepkg:apk/chainguard/opensearch-dashboards-2-fips-dashboards-visualizationspkg:apk/chainguard/opensearch-dashboards-2-fips-index-management-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-fips-ml-commons-dashboardspkg:apk/chainguard/opensearch-dashboards-2-fips-security-analytics-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-fips-security-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-index-management-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-ml-commons-dashboardspkg:apk/chainguard/opensearch-dashboards-2-security-analytics-dashboards-pluginpkg:apk/chainguard/opensearch-dashboards-2-security-dashboards-pluginpkg:apk/wolfi/configurable-http-proxypkg:apk/wolfi/kubeflow-centraldashboardpkg:apk/wolfi/kubeflow-pipelinespkg:apk/wolfi/kubeflow-pipelines-apiserverpkg:apk/wolfi/kubeflow-pipelines-cache-deployerpkg:apk/wolfi/kubeflow-pipelines-cache-deployer-compatpkg:apk/wolfi/kubeflow-pipelines-cache_serverpkg:apk/wolfi/kubeflow-pipelines-frontendpkg:apk/wolfi/kubeflow-pipelines-metadata-envoy-configpkg:apk/wolfi/kubeflow-pipelines-metadata-writerpkg:apk/wolfi/kubeflow-pipelines-metadata-writer-compatpkg:apk/wolfi/kubeflow-pipelines-persistence_agentpkg:apk/wolfi/kubeflow-pipelines-scheduledworkflowpkg:apk/wolfi/kubeflow-pipelines-viewer-crd-controllerpkg:apk/wolfi/lernapkg:apk/wolfi/opensearch-dashboards-2pkg:apk/wolfi/opensearch-dashboards-2-alerting-dashboards-pluginpkg:apk/wolfi/opensearch-dashboards-2-anomaly-detection-dashboards-pluginpkg:apk/wolfi/opensearch-dashboards-2-compatpkg:apk/wolfi/opensearch-dashboards-2-configpkg:apk/wolfi/opensearch-dashboards-2-dashboards-mapspkg:apk/wolfi/opensearch-dashboards-2-dashboards-notificationspkg:apk/wolfi/opensearch-dashboards-2-dashboards-observabilitypkg:apk/wolfi/opensearch-dashboards-2-dashboards-query-workbenchpkg:apk/wolfi/opensearch-dashboards-2-dashboards-reportingpkg:apk/wolfi/opensearch-dashboards-2-dashboards-search-relevancepkg:apk/wolfi/opensearch-dashboards-2-dashboards-visualizationspkg:apk/wolfi/opensearch-dashboards-2-index-management-dashboards-pluginpkg:apk/wolfi/opensearch-dashboards-2-ml-commons-dashboardspkg:apk/wolfi/opensearch-dashboards-2-security-analytics-dashboards-pluginpkg:apk/wolfi/opensearch-dashboards-2-security-dashboards-pluginpkg:npm/follow-redirectspkg:rpm/opensuse/velociraptor&distro=openSUSE%20Tumbleweed
< 4.6.1-r3+ 81 more
- (no CPE)range: < 4.6.1-r3
- (no CPE)range: < 7.17.24-r0
- (no CPE)range: < 7.17.29-r0
- (no CPE)range: < 7.17.24-r0
- (no CPE)range: < 1.8.0-r3
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 8.1.2-r1
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 4.6.1-r3
- (no CPE)range: < 1.8.0-r3
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 2.0.5-r5
- (no CPE)range: < 8.1.2-r1
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 2.13.0-r0
- (no CPE)range: < 1.15.6
- (no CPE)range: < 0.7.0.4.git74.3426c0a-5.1
- follow-redirects/follow-redirectsv5Range: < 1.15.6
Patches
1c4f847f85176Drop Proxy-Authorization across hosts.
2 files changed · +2 −1
index.js+1 −1 modified@@ -461,7 +461,7 @@ RedirectableRequest.prototype._processResponse = function (response) { redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) { - removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); } // Evaluate the beforeRedirect callback
test/test.js+1 −0 modified@@ -1529,6 +1529,7 @@ describe("follow-redirects", function () { [ "Authorization", + "Proxy-Authorization", "Cookie", ].forEach(function (header) { describe("when the client passes an header named " + header, function () {
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
9- github.com/advisories/GHSA-cxjh-pqwp-8mfpghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2024-28849ghsaADVISORY
- fetch.spec.whatwg.orgghsax_refsource_MISCWEB
- github.com/follow-redirects/follow-redirects/commit/c4f847f85176991f95ab9c88af63b1294de8649bghsax_refsource_MISCWEB
- github.com/follow-redirects/follow-redirects/security/advisories/GHSA-cxjh-pqwp-8mfpghsax_refsource_CONFIRMWEB
- github.com/psf/requests/issues/1885ghsax_refsource_MISCWEB
- hackerone.com/reports/2390009ghsax_refsource_MISCWEB
- lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/VOIF4EPQUCKDBEVTGRQDZ3CGTYQHPO7ZghsaWEB
- lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/VOIF4EPQUCKDBEVTGRQDZ3CGTYQHPO7Z/mitre
News mentions
0No linked articles in our index yet.