CVE-2020-7212: Uncontrolled Resource Consumption in urllib3
(updated )
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).
References
- github.com/advisories/GHSA-hmv2-79q8-fv6g
- github.com/pypa/advisory-database/tree/main/vulns/urllib3/PYSEC-2020-149.yaml
- github.com/urllib3/urllib3
- github.com/urllib3/urllib3/blob/master/CHANGES.rst
- github.com/urllib3/urllib3/commit/a74c9cfbaed9f811e7563cfc3dce894928e0221a
- nvd.nist.gov/vuln/detail/CVE-2020-7212
- pypi.org/project/urllib3/1.25.8
Code Behaviors & Features
Detect and mitigate CVE-2020-7212 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →