Security advisory
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
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"
}