GitHub Advisoryadvisory · PyPI
GHSA-cc65-xxvf-f7r9 Scrapy vulnerable to ReDoS via XMLFeedSpider
HIGH
Official page ↗
- Aliases
- CVE-2024-1892
- Ecosystem
- PyPI
- Packages
- scrapy
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-1333
- Reviewed
- 2024-02-15
Affected packages
• PyPI scrapy: >= 2, < 2.11.1 → fixed in 2.11.1
• PyPI scrapy: < 1.8.4 → fixed in 1.8.4
Description
Impact
The following parts of the Scrapy API were found to be vulnerable to a ReDoS attack:
• The `XMLFeedSpider` class or any subclass that uses the default node iterator: `iternodes`, as well as direct uses of the `scrapy.utils.iterators.xmliter` function.
• Scrapy 2.6.0 to 2.11.0: The `open_in_browser` function for a response without a base tag.
Handling a malicious response could cause extreme CPU and memory usage during the parsing of its content, due to the use of vulnerable regular expressions for that parsing.
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
For `XMLFeedSpider`, switch the node iterator to ``xml`` or ``html``.
For `open_in_browser`, before using the function, either manually review the response content to discard a ReDos attack or manually define the base tag to avoid its automatic definition by `open_in_browser` later.
Acknowledgements
This security issue was reported by @nicecatch2000 through huntr.com.
Related
Alias · CVE (1)
- CVE-2024-1892 A Regular Expression Denial of Service (ReDoS) vulnerability exists in the XMLFeedSpider class of the scrapy/scrapy project, specifically… vulnerability
Weakness · CWE (1)
- CWE-1333 Inefficient Regular Expression Complexity weakness
References
- https://github.com/scrapy/scrapy/security/advisories/GHSA-cc65-xxvf-f7r9 web
- https://github.com/scrapy/scrapy/commit/479619b340f197a8f24c5db45bc068fb8755f2c5 web
- https://github.com/scrapy/scrapy/commit/73e7c0ed011a0565a1584b8052ec757b54e5270b web
- https://docs.scrapy.org/en/latest/news.html#scrapy-1-8-4-2024-02-14 web
- https://docs.scrapy.org/en/latest/news.html#scrapy-2-11-1-2024-02-14 web
- https://github.com/pypa/advisory-database/tree/main/vulns/scrapy/PYSEC-2024-162.yaml web
- https://github.com/scrapy/scrapy package
- https://huntr.com/bounties/271f94f2-1e05-4616-ac43-41752389e26b web