CVE-2020-7212

High

Description

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

SeverityHigh
CVSS7.5
Exploit probability—
ProductPython Urllib3
PublishedMar 6, 2020
First seenMar 6, 2020

How to fix

Update
  • urllib31.25.8 or later

Affected products

ProductAffected versionsFixed in
python urllib31.25.2 ≤ v ≤ 1.25.7—
urllib3PyPI1.25.2 ≤ v < 1.25.81.25.8

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.