# CVE-2020-7212: Uncontrolled Resource Consumption in urllib3

Source: https://junglewise.ai/threats/cve-2020-7212-uncontrolled-resource-consumption-in-urllib3  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2020-03-06  
License: CC BY 4.0 with a link back

CVE-2020-7212 · Severity: low · CVSS 3.1 · Published 2020-03-06

The _encode_invalid_chars function in util/url.py in the urllib3 library 1.25.2 through 1.25.7 for Python allows a denial of service (CPU consumption) because of an inefficient algorithm. The percent_encodings array contains all matches of percent encodings. It is not deduplicated. For a URL of length N, the size of percent_encodings may be up to O(N). The next step (normalize existing percent-encoded bytes) also takes up to O(N) for each step, so the total time is O(N^2). If percent_encodings were deduplicated, the time to compute _encode_invalid_chars would be O(kN), where k is at most 484 ((10+6*2)^2).

Technologies: [urllib3 (PyPI)](https://junglewise.ai/threats/technologies/urllib3). Vendors: [PyPI](https://junglewise.ai/threats/vendors/pypi).

## Quick answers

**Is CVE-2020-7212 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2020-7212 being exploited in the wild.

**How severe is CVE-2020-7212?** Low severity, with a CVSS score of 3.1, published 6 March 2020.

**Which products and versions are affected?** urllib3 (PyPI) ECOSYSTEM:introduced=1.25.2,fixed=1.25.8, GIT:introduced=0,fixed=a74c9cfbaed9f811e7563cfc3dce894928e0221a|ECOSYSTEM:introduced=1.25.2,fixed=1.25.8.

**Is there a fix for CVE-2020-7212?** Yes. urllib3 (PyPI): upgrade to 1.25.8 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**Am I affected by CVE-2020-7212?** Check whether you run urllib3 (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- urllib3 (PyPI): upgrade to 1.25.8 or later

  ```sh
  pip install "urllib3>=1.25.8"
  ```


## Affected products

- urllib3 (PyPI) ECOSYSTEM:introduced=1.25.2,fixed=1.25.8, GIT:introduced=0,fixed=a74c9cfbaed9f811e7563cfc3dce894928e0221a|ECOSYSTEM:introduced=1.25.2,fixed=1.25.8

## Identifiers

- CVE-2020-7212
- GHSA-hmv2-79q8-fv6g
- PYSEC-2020-149

## Related threats

- [urllib3 HTTP client unbounded memory allocation in chunked transfer](https://junglewise.ai/threats/cve-2026-97689-urllib3-is-an-http-client-library-for-python-from-1-10-3-until-2)
- [urllib3 infinite loop in Deflate decoder](https://junglewise.ai/threats/cve-2026-97688-urllib3-is-an-http-client-library-for-python-from-2-6-2-until-2-8)
- [urllib3 HTTPS proxy TLS settings isolation](https://junglewise.ai/threats/cve-2026-97687-urllib3-is-an-http-client-library-for-python-from-1-26-0-until-2)
- [PYSEC-2026-1997 - urllib3 does not control redirects in browsers and Node.js](https://junglewise.ai/threats/cve-2025-50182-urllib3-does-not-control-redirects-in-browsers-and-node-js)
- [PYSEC-2026-1999 - urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation](https://junglewise.ai/threats/cve-2025-50181-urllib3-redirects-are-not-disabled-when-retries-are-disabled-on)
