CVE-2020-7212: Uncontrolled Resource Consumption in urllib3

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

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.