Skip to content
Heist/ feed
Back to feed
Medium

Security advisory

Type: advisorySources: OSVCVE: CVE-2019-9947

An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \r\n (specifically in the path component of a URL that lacks a ? character) followed by an HTTP header or a Redis command. This is similar to the CVE-2019-9740 query string issue. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2019-9947
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 07:11 UTC · Revision 1

Source evidence

CVE-2019-9947

core-osv · Original source

Published 23 Mar 2019, 18:29 UTC

An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \r\n (specifically in the path component of a URL that lacks a ? character) followed by an HTTP header or a Redis command. This is similar to the CVE-2019-9740 query string issue. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.

osv:CVE-2019-9947
Complete source record
{
  "id": "a2554d720e2b0b10ac5cdaa37a592ef50e035bd1329a51a35f94ddccfc8d62c3",
  "url": "https://osv.dev/vulnerability/CVE-2019-9947",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "CVE-2019-9947",
    "summary": "An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in Python 3.x through 3.7.3. CRLF injection is possible if the attacker controls a url parameter, as demonstrated by the first argument to urllib.request.urlopen with \\r\\n (specifically in the path component of a URL that lacks a ? character) followed by an HTTP header or a Redis command. This is similar to the CVE-2019-9740 query string issue. This is fixed in: v2.7.17, v2.7.17rc1, v2.7.18, v2.7.18rc1; v3.5.10, v3.5.10rc1, v3.5.8, v3.5.8rc1, v3.5.8rc2, v3.5.9; v3.6.10, v3.6.10rc1, v3.6.11, v3.6.11rc1, v3.6.12, v3.6.9, v3.6.9rc1; v3.7.4, v3.7.4rc1, v3.7.4rc2, v3.7.5, v3.7.5rc1, v3.7.6, v3.7.6rc1, v3.7.7, v3.7.7rc1, v3.7.8, v3.7.8rc1, v3.7.9.",
    "evidence": "osv:CVE-2019-9947",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2019-9947",
      "aliases": [
        "CVE-2019-9947",
        "PSF-2019-11"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/python/cpython",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "c2f86d86e6c8f5fd1ef602128b537a48f3f5c063"
                },
                {
                  "introduced": "2e789a1f1d84b343a996e8654590703b5fbdd441"
                },
                {
                  "fixed": "ac39a516017c80993309f803441c8ee97c44838e"
                },
                {
                  "introduced": "5c4568a05a0a62b5947c55f68f9f2ecfb90a4f12"
                },
                {
                  "fixed": "201c8f79450628241574fba940e08107178dc3a5"
                },
                {
                  "introduced": "1bf9cc509326bc42cd8cb1650eb9bf64550d817e"
                },
                {
                  "fixed": "e09359112e250268eca209355abeb17abf822486"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:python:python:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "2.7.0"
                      },
                      {
                        "fixed": "2.7.17"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:python:python:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "3.5.0"
                      },
                      {
                        "fixed": "3.5.8"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:python:python:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "3.6.0"
                      },
                      {
                        "fixed": "3.6.9"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:python:python:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "3.7.0"
                      },
                      {
                        "fixed": "3.7.4"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v3.5.8rc2",
            "v3.5.8rc1",
            "v2.7.17rc1",
            "v3.7.4rc2",
            "v3.7.4rc1",
            "v3.6.9rc1",
            "v3.7.3rc1",
            "v3.5.7",
            "v3.5.7rc1",
            "v2.7.16rc1",
            "v3.6.8",
            "v3.7.2rc1",
            "v3.6.8rc1",
            "v3.5.6",
            "v3.5.6rc1",
            "v3.7.0rc1",
            "v3.6.6rc1",
            "v3.7.0b5",
            "v3.7.0b4",
            "v2.7.15rc1",
            "v3.7.0b3",
            "v3.7.0b2",
            "v3.5.5",
            "v3.5.5rc1",
            "v3.7.0b1",
            "v3.7.0a2",
            "v3.5.4",
            "v3.5.4rc1",
            "v3.6.2rc1",
            "v3.5.3",
            "v3.5.3rc1",
            "v3.6.0rc1",
            "v2.7.13rc1",
            "v3.6.0b4",
            "v3.6.0b3",
            "v3.6.0b1",
            "v3.6.0a3",
            "v3.5.2",
            "v3.5.2rc1",
            "v2.7.12rc1",
            "v3.5.1rc1",
            "v2.7.11rc1",
            "v3.5.0rc3",
            "v3.5.0rc2",
            "v3.5.0rc1",
            "v3.5.0b4",
            "v3.5.0b3",
            "v3.5.0b1",
            "v2.7.10rc1",
            "v3.5.0a4",
            "v3.5.0a3",
            "v3.5.0a2",
            "v3.5.0a1",
            "v2.7.9rc1",
            "v2.7.8",
            "v3.4.0b3",
            "v3.4.0b2",
            "v3.4.0b1",
            "v2.7.6rc1",
            "v3.4.0a4",
            "v3.4.0a3",
            "v3.4.0a2",
            "v3.4.0a1",
            "v2.7.5",
            "v2.7.4rc1",
            "v3.3.0rc3",
            "v3.3.0rc2",
            "v3.3.0rc1",
            "v3.3.0b2",
            "v3.3.0b1",
            "v3.3.0a4",
            "v3.3.0a3",
            "v3.3.0a2",
            "v2.7.3rc1",
            "v2.7.2rc1",
            "v2.7",
            "v3.2rc3",
            "v3.2rc2",
            "v3.2rc1",
            "v3.2b2",
            "v3.2b1",
            "v2.7.1",
            "v2.7.1rc1",
            "v3.2a4",
            "v3.2a3",
            "v3.2a2",
            "v3.2a1",
            "v2.7rc2",
            "v2.7rc1",
            "v2.7b2",
            "v2.7b1",
            "v2.7a4",
            "v2.7a3",
            "v2.7a2",
            "v2.7a1",
            "v3.1",
            "v3.1rc2",
            "v3.1rc1",
            "v3.1b1",
            "v3.1a2",
            "v3.1a1",
            "v3.0rc3",
            "v3.0rc2",
            "v2.6",
            "v2.6rc2",
            "v3.0rc1",
            "v2.6rc1",
            "v3.0b3",
            "v2.6b3",
            "v2.6b2",
            "v3.0b2",
            "v2.6b1",
            "v3.0b1",
            "v2.6a3",
            "v3.0a5",
            "v2.6a2",
            "v3.0a4",
            "v3.0a3",
            "v2.6a1",
            "v3.0a2",
            "v3.0a1",
            "v2.5b3",
            "v2.5b2",
            "v2.5b1",
            "v2.5a2",
            "v2.5a1",
            "v2.5a0",
            "v2.4",
            "v2.4c1",
            "v2.4b2",
            "v2.4b1",
            "v2.4a3",
            "v2.4a2",
            "v2.4a1",
            "v2.3c2",
            "v2.3c1",
            "v2.2a3",
            "v2.1",
            "v2.1c2",
            "v2.1c1",
            "v2.1b2",
            "v2.1b1",
            "v2.1a2",
            "v2.1a1",
            "v2.0",
            "v2.0c1",
            "v2.0b2",
            "v2.0b1",
            "v1.6a2",
            "v1.6a1",
            "v1.5.2",
            "v1.5.2c1",
            "v1.5.2b2",
            "v1.5.2b1",
            "v1.5.2a2",
            "v1.5.2a1",
            "v1.5.1",
            "v1.5",
            "v1.5b2",
            "v1.5b1",
            "v1.5a4",
            "v1.5a3",
            "v1.5a2",
            "v1.5a1",
            "v1.4",
            "v1.4b3",
            "v1.4b2",
            "v1.4b1",
            "v1.3",
            "v1.3b1",
            "v1.2",
            "v1.2b4",
            "v1.2b3",
            "v1.2b2",
            "v1.2b1",
            "v1.1.1",
            "v1.1",
            "v1.0.2",
            "v1.0.1",
            "v0.9.9",
            "v0.9.8"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-9947.json"
          }
        }
      ],
      "modified": "2026-10-24T10:30:50.051361721Z",
      "provider": "osv",
      "references": [
        "https://cert-portal.siemens.com/productcert/html/ssa-398330.html",
        "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JMWSKTNOHSUOT3L25QFJAVCFYZX46FYK/",
        "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JXASHCDD4PQFKTMKQN4YOP5ZH366ABN4/",
        "https://access.redhat.com/errata/RHSA-2019:1260",
        "https://access.redhat.com/errata/RHSA-2019:2030",
        "https://access.redhat.com/errata/RHSA-2019:3335",
        "https://access.redhat.com/errata/RHSA-2019:3520",
        "https://access.redhat.com/errata/RHSA-2019:3725",
        "https://lists.debian.org/debian-lts-announce/2019/06/msg00022.html",
        "https://lists.debian.org/debian-lts-announce/2019/06/msg00023.html",
        "https://lists.debian.org/debian-lts-announce/2019/06/msg00026.html",
        "https://lists.debian.org/debian-lts-announce/2020/07/msg00011.html",
        "https://lists.debian.org/debian-lts-announce/2020/08/msg00034.html",
        "https://security.gentoo.org/glsa/202003-26",
        "https://security.netapp.com/advisory/ntap-20190404-0004/",
        "https://usn.ubuntu.com/4127-1/",
        "https://usn.ubuntu.com/4127-2/",
        "https://bugs.python.org/issue35906"
      ],
      "provider_metadata": {}
    },
    "related_cves": [
      {
        "value": "CVE-2019-9947",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 437136,
  "published_at": "2019-03-23T18:29:02.027+00:00"
}