{
  "schema_version": "1.4.0",
  "id": "GHSA-hmv2-79q8-fv6g",
  "modified": "2024-11-18T22:23:05Z",
  "published": "2021-04-30T17:31:43Z",
  "aliases": [
    "CVE-2020-7212"
  ],
  "summary": "Uncontrolled Resource Consumption in urllib3",
  "details": "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).",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
    },
    {
      "type": "CVSS_V4",
      "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "PyPI",
        "name": "urllib3"
      },
      "ranges": [
        {
          "type": "ECOSYSTEM",
          "events": [
            {
              "introduced": "1.25.2"
            },
            {
              "fixed": "1.25.8"
            }
          ]
        }
      ],
      "database_specific": {
        "last_known_affected_version_range": "<= 1.25.7"
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2020-7212"
    },
    {
      "type": "WEB",
      "url": "https://github.com/urllib3/urllib3/commit/a74c9cfbaed9f811e7563cfc3dce894928e0221a"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/advisories/GHSA-hmv2-79q8-fv6g"
    },
    {
      "type": "WEB",
      "url": "https://github.com/pypa/advisory-database/tree/main/vulns/urllib3/PYSEC-2020-149.yaml"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/urllib3/urllib3"
    },
    {
      "type": "WEB",
      "url": "https://github.com/urllib3/urllib3/blob/master/CHANGES.rst"
    },
    {
      "type": "WEB",
      "url": "https://pypi.org/project/urllib3/1.25.8"
    }
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-400"
    ],
    "severity": "HIGH",
    "github_reviewed": true,
    "github_reviewed_at": "2021-04-22T22:04:31Z",
    "nvd_published_at": "2020-03-06T20:15:00Z"
  }
}