Skip to content

Scrapy decompression bomb vulnerability

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

Package

pip scrapy (pip)

Affected versions

>= 2.0.0, < 2.11.1
< 1.8.4

Patched versions

2.11.1
1.8.4

Description

Impact

Scrapy limits allowed response sizes by default through the DOWNLOAD_MAXSIZE and DOWNLOAD_WARNSIZE settings.

However, those limits were only being enforced during the download of the raw, usually-compressed response bodies, and not during decompression, making Scrapy vulnerable to decompression bombs.

A malicious website being scraped could send a small response that, on decompression, could exhaust the memory available to the Scrapy process, potentially affecting any other process sharing that memory, and affecting disk usage in case of uncompressed response caching.

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

There is no easy workaround.

Disabling HTTP decompression altogether is impractical, as HTTP compression is a rather common practice.

However, it is technically possible to manually backport the 2.11.1 or 1.8.4 fix, replacing the corresponding components of an unpatched version of Scrapy with patched versions copied into your own code.

Acknowledgements

This security issue was reported by @dmandefy through huntr.com.

References

@Gallaecio Gallaecio published to scrapy/scrapy Feb 14, 2024
Published to the GitHub Advisory Database Feb 16, 2024
Reviewed Feb 16, 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-3572

GHSA ID

GHSA-7j7m-v7m3-jqm7

Source code

Credits

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