CVE-2024-3574
Authorization Header Leak During Cross-Domain Redirect in scrapy/scrapy
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
Authorization Header Leak During Cross-Domain Redirect in scrapy/scrapy
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
CVE-2024-3574- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
EUVDEUVD-2024-0622
7.5
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
EUVD-2024-0622- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-cw9j-q3vf-hrrv
7.5
Scrapy authorization header leakage on cross-domain redirect
Impact
When you send a request with the Authorization header to one domain, and the response asks to redirect to a different domain, Scrapy’s built-in redirect middleware creates a follow-up redirect request that keeps the original Authorization header, leaking its content to that second domain.
The right behavior would be to drop the Authorization header instead, in this scenario.
Patches
Upgrade to Scrapy 2.11.1.
If you are using Scrapy 1.8 or a lower version, and upgrading to Scrapy 2.11.1 is not an option, you may upgrade to Scrapy 1.8.4 instead.
Workarounds
If you cannot upgrade, make sure that you are not using the Authentication header, either directly or through some third-party plugin.
If you need to use that header in some requests, add "dont_redirect": True to the request.meta dictionary of those requests to disable following redirects for them.
If you need to keep (same domain) redirect support on those requests, make sure you trust the target website not to redirect your requests to a different domain.
Acknowledgements
This security issue was reported by @ranjit-git through huntr.com.
- Record
GHSA-cw9j-q3vf-hrrv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
NVD
7.5
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
CVE-2024-3574- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSV
7.5
Authorization Header Leak During Cross-Domain Redirect in scrapy/scrapy
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
CVE-2024-3574- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2024-3574
7.5
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
DEBIAN-CVE-2024-3574- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Show 4 moreShow less
OSVGHSA-cw9j-q3vf-hrrv
7.5
Scrapy authorization header leakage on cross-domain redirect
Impact
When you send a request with the Authorization header to one domain, and the response asks to redirect to a different domain, Scrapy’s built-in redirect middleware creates a follow-up redirect request that keeps the original Authorization header, leaking its content to that second domain.
The right behavior would be to drop the Authorization header instead, in this scenario.
Patches
Upgrade to Scrapy 2.11.1.
If you are using Scrapy 1.8 or a lower version, and upgrading to Scrapy 2.11.1 is not an option, you may upgrade to Scrapy 1.8.4 instead.
Workarounds
If you cannot upgrade, make sure that you are not using the Authentication header, either directly or through some third-party plugin.
If you need to use that header in some requests, add "dont_redirect": True to the request.meta dictionary of those requests to disable following redirects for them.
If you need to keep (same domain) redirect support on those requests, make sure you trust the target website not to redirect your requests to a different domain.
Acknowledgements
This security issue was reported by @ranjit-git through huntr.com.
- Record
GHSA-cw9j-q3vf-hrrv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSVPYSEC-2026-1908
7.5
Scrapy authorization header leakage on cross-domain redirect
Impact
When you send a request with the Authorization header to one domain, and the response asks to redirect to a different domain, Scrapy’s built-in redirect middleware creates a follow-up redirect request that keeps the original Authorization header, leaking its content to that second domain.
The right behavior would be to drop the Authorization header instead, in this scenario.
Patches
Upgrade to Scrapy 2.11.1.
If you are using Scrapy 1.8 or a lower version, and upgrading to Scrapy 2.11.1 is not an option, you may upgrade to Scrapy 1.8.4 instead.
Workarounds
If you cannot upgrade, make sure that you are not using the Authentication header, either directly or through some third-party plugin.
If you need to use that header in some requests, add "dont_redirect": True to the request.meta dictionary of those requests to disable following redirects for them.
If you need to keep (same domain) redirect support on those requests, make sure you trust the target website not to redirect your requests to a different domain.
Acknowledgements
This security issue was reported by @ranjit-git through huntr.com.
- Record
PYSEC-2026-1908- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2024-3574
7.5
In scrapy version 2.10.1, an issue was identified where the Authorization header, containing credentials for server authentication, is leaked to a third-party site during a cross-domain redirect. This vulnerability arises from the failure to remove the Authorization header when redirecting across domains. The exposure of the Authorization header to unauthorized actors could potentially allow for account hijacking.
- Record
UBUNTU-CVE-2024-3574- CVSS 3.0
- 7.5 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVUSN-7476-1 No score
python-scrapy vulnerabilities
It was discovered that Scrapy improperly exposed HTTP authentication credentials to request targets, including during redirects. An attacker could use this issue to gain unauthorized access to user accounts. This issue only affected Ubuntu 18.04 LTS and Ubuntu 20.04 LTS. (CVE-2021-41125)
It was discovered that Scrapy did not remove the cookie header during cross-domain redirects. An attacker could possibly use this issue to gain unauthorized access to user accounts. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2022-0577)
It was discovered that Scrapy inefficiently parsed XML content. An attacker could use this issue to cause a denial of service by sending a crafted XML response. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2024-1892)
It was discovered that Scrapy did not properly check response size during decompression. An attacker could send a crafted response that would exhaust memory and cause a denial of service. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2024-3572)
It was discovered that Scrapy did not remove the authorization header during cross-domain redirects. An attacker could possibly use this issue to gain unauthorized access to user accounts. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2024-3574)
It was discovered that Scrapy did not remove the authorization header during redirects that change scheme but remain in the same domain. This issue could possibly be used by an attacker to expose sensitive information or to gain unauthorized access to user accounts. (CVE-2024-1968)
- Record
USN-7476-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
scrapyPyPI |
2 up to 2.11.1 | 2.11.1 |
scrapyPyPI |
before 1.8.4 | 1.8.4 |
python-scrapyDebian:12 |
All versions, plus listed versions 2.10.0-12.11.0-12.11.0-22.11.1-12.11.1-2 Show 25 moreShow less2.11.2-12.11.2-22.11.2-32.12.0-12.12.0-22.13.1-1~exp12.13.3-12.13.3-1~exp12.13.4-12.13.4-22.14.0-12.14.1-12.14.2-12.15.1-12.16.0-12.16.0-22.17.0-12.18.0-12.18.0-22.19.0-12.19.0-22.8.0-22.9.0-12.9.0-1~exp12.9.0-2 |
None known |
python-scrapyDebian:13 |
before 2.11.1-1 | 2.11.1-1 |
python-scrapyDebian:14 |
before 2.11.1-1 | 2.11.1-1 |
scrapyPyPI |
2 up to 2.11.1, plus listed versions 2.0.02.0.12.1.02.10.02.10.1 Show 16 moreShow less2.11.02.2.02.2.12.3.02.4.02.4.12.5.02.5.12.6.02.6.12.6.22.6.32.7.02.7.12.8.02.9.0 |
2.11.1 |
scrapyPyPI |
before 1.8.4, plus listed versions 0.10.4.23640.12.0.25500.14.10.14.20.14.3 Show 45 moreShow less0.14.40.16.00.16.10.16.20.16.30.16.40.16.50.18.00.18.10.18.20.18.30.18.40.20.00.20.10.20.20.22.00.22.10.22.20.24.00.24.10.24.20.24.30.24.40.24.50.24.60.70.80.91.0.01.0.0rc11.0.0rc21.0.0rc31.0.11.0.21.0.31.0.41.0.51.0.61.0.71.1.01.1.0rc11.1.0rc21.1.0rc31.1.0rc41.1.1 |
1.8.4 |
scrapyPyPI |
before 1.8.4, 2 up to 2.11.1, plus listed versions 0.10.4.23640.12.0.25500.14.10.14.20.14.3 Show 45 moreShow less0.14.40.16.00.16.10.16.20.16.30.16.40.16.50.18.00.18.10.18.20.18.30.18.40.20.00.20.10.20.20.22.00.22.10.22.20.24.00.24.10.24.20.24.30.24.40.24.50.24.60.70.80.91.0.01.0.0rc11.0.0rc21.0.0rc31.0.11.0.21.0.31.0.41.0.51.0.61.0.71.1.01.1.0rc11.1.0rc21.1.0rc31.1.0rc41.1.1 |
1.8.42.11.1 |
python-scrapyUbuntu:16.04:LTS |
All versions, plus listed versions 1.0.0-11.0.3-1 |
None known |
python-scrapyUbuntu:Pro:18.04:LTS |
before 1.5.0-1ubuntu0.1~esm1, plus listed versions 1.3.0-1~exp21.4.0-11.5.0-1 |
1.5.0-1ubuntu0.1~esm1 |
Show 6 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-scrapyUbuntu:Pro:20.04:LTS |
before 1.7.3-1ubuntu0.1~esm1, plus listed versions 1.7.3-1 |
1.7.3-1ubuntu0.1~esm1 |
python-scrapyUbuntu:Pro:22.04:LTS |
before 2.5.1-2ubuntu0.1~esm1, plus listed versions 2.4.1-22.5.1-2 |
2.5.1-2ubuntu0.1~esm1 |
python-scrapyUbuntu:Pro:18.04:LTS From an advisory covering 6 CVEs |
before 1.5.0-1ubuntu0.1~esm1, plus listed versions 1.3.0-1~exp21.4.0-11.5.0-1 |
1.5.0-1ubuntu0.1~esm1 |
python-scrapyUbuntu:Pro:20.04:LTS From an advisory covering 6 CVEs |
before 1.7.3-1ubuntu0.1~esm1, plus listed versions 1.7.3-1 |
1.7.3-1ubuntu0.1~esm1 |
python-scrapyUbuntu:Pro:22.04:LTS From an advisory covering 6 CVEs |
before 2.5.1-2ubuntu0.1~esm1, plus listed versions 2.4.1-22.5.1-2 |
2.5.1-2ubuntu0.1~esm1 |
python-scrapyUbuntu:Pro:24.04:LTS From an advisory covering 6 CVEs |
before 2.11.1-1ubuntu0.1~esm2, plus listed versions 2.10.0-12.11.0-12.11.0-22.11.1-1 |
2.11.1-1ubuntu0.1~esm2 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2024-3574 is a high vulnerability (CVSS 7.5) in Scrapy, published February 15, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.65%, the 51st percentile. Fixed in scrapy 2.11.1.
References
huntr.com/bounties/49974321-2718-43e3-a152-62b16eed72a9
github.com/scrapy/scrapy/commit/5bcb8fd5019c72d05c4a96da78a7fcb6ecb55b75
github.com/scrapy/scrapy/security/advisories/GHSA-cw9j-q3vf-hrrv
github.com/scrapy/scrapy/commit/ee7bd9d217fc126063575d5649f00bdeeca2faae
nvd.nist.gov/vuln/detail/CVE-2024-3574
github.com/advisories/GHSA-cw9j-q3vf-hrrv
Show 12 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2024/3xxx/CVE-2024-3574.json
security-tracker.debian.org/tracker/CVE-2024-3574
github.com/scrapy/scrapy
pypi.org/project/scrapy
ubuntu.com/security/CVE-2024-3574
cve.org/CVERecord?id=CVE-2024-3574
ubuntu.com/security/notices/USN-7476-1
ubuntu.com/security/CVE-2021-41125
ubuntu.com/security/CVE-2022-0577
ubuntu.com/security/CVE-2024-1892
ubuntu.com/security/CVE-2024-1968
ubuntu.com/security/CVE-2024-3572
Left out here: 71 versions. The JSON record has them.