Skip to content

Scrapy vulnerable to ReDoS via XMLFeedSpider

High severity GitHub Reviewed Published Feb 14, 2024 in scrapy/scrapy • Updated Apr 16, 2024

Package

pip scrapy (pip)

Affected versions

>= 2, < 2.11.1
< 1.8.4

Patched versions

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

References

@Gallaecio Gallaecio published to scrapy/scrapy Feb 14, 2024
Published to the GitHub Advisory Database Feb 15, 2024
Reviewed Feb 15, 2024
Last updated Apr 16, 2024

Severity

High
7.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Weaknesses

CVE ID

CVE-2024-1892

GHSA ID

GHSA-cc65-xxvf-f7r9

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.