Bug 1812095 (CVE-2020-7212) - CVE-2020-7212 python-urllib3: inefficient algorithm allows a DoS (CPU consumption) in _encode_invalid_chars function in util/url.py
Summary: CVE-2020-7212 python-urllib3: inefficient algorithm allows a DoS (CPU consump...
Keywords:
Status: CLOSED NOTABUG
Alias: CVE-2020-7212
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 1812102
Blocks: 1812101
TreeView+ depends on / blocked
 
Reported: 2020-03-10 14:14 UTC by Guilherme de Almeida Suckevicz
Modified: 2021-12-14 18:47 UTC (History)
42 users (show)

Fixed In Version: urllib3 1.25.8
Clone Of:
Environment:
Last Closed: 2020-03-30 05:18:20 UTC
Embargoed:


Attachments (Terms of Use)

Description Guilherme de Almeida Suckevicz 2020-03-10 14:14:24 UTC
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).

Reference and upstream commit:
https://github.com/urllib3/urllib3/commit/4ab10abde715c7098e77686462b987586825d228

Comment 1 Guilherme de Almeida Suckevicz 2020-03-10 14:19:46 UTC
Created python-urllib3 tracking bugs for this issue:

Affects: fedora-all [bug 1812102]

Comment 2 Jason Shepherd 2020-03-11 01:04:57 UTC
OpenShift Container Platform uses urllib3-1.21.1-1, which does not include the vulnerable _encode_invalid_chars function.

Comment 5 Summer Long 2020-03-16 06:15:23 UTC
Note: flawed code was added in urllib3 1.25.2, Pull: https://github.com/urllib3/urllib3/pull/1586
Commit: https://github.com/urllib3/urllib3/commit/a74c9cfbaed9f811e7563cfc3dce894928e0221a

Comment 6 Doran Moppert 2020-03-30 05:18:30 UTC
Statement:

Red Hat Product Security does not consider this to be a vulnerability. The choice of an inefficient algorithm could cause a little more CPU time to be used than the alternative, however the difference in practice is not sufficient to cause a meaningful or even noticeable impact on the application.


Note You need to log in before you can comment on or make changes to this bug.