---
id: CVE-2019-9947
title: >-
  An issue was discovered in urllib2 in Python 2.x through 2.7.16 and urllib in
  Python 3.x through 3.7.3
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 …
severity: medium
cvss: 6.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'
cwe:
  - CWE-93
vendor: python
product: python
affected:
  - 'python >= 2.7.0, < 2.7.17'
  - 'python >= 3.5.0, < 3.5.8'
  - 'python >= 3.6.0, < 3.6.9'
  - 'python >= 3.7.0, < 3.7.4'
patched:
  - python 3.7.4
published: '2019-03-23'
updated: '2026-10-07'
sourceUpdated: '2026-10-07T19:17:15.640'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2019-9947'
references:
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00062.html'
    label: cve@mitre.org
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00063.html'
    label: cve@mitre.org
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2020-01/msg00040.html'
    label: cve@mitre.org
  - url: 'http://www.openwall.com/lists/oss-security/2021/02/04/2'
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2019:1260'
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2019:2030'
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2019:3335'
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2019:3520'
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2019:3725'
    label: cve@mitre.org
  - url: 'https://bugs.python.org/issue35906'
    label: cve@mitre.org
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00022.html'
    label: cve@mitre.org
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00023.html'
    label: cve@mitre.org
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00026.html'
    label: cve@mitre.org
  - url: 'https://lists.debian.org/debian-lts-announce/2020/07/msg00011.html'
    label: cve@mitre.org
  - url: 'https://lists.debian.org/debian-lts-announce/2020/08/msg00034.html'
    label: cve@mitre.org
  - url: >-
      https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JMWSKTNOHSUOT3L25QFJAVCFYZX46FYK/
    label: cve@mitre.org
  - url: >-
      https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JXASHCDD4PQFKTMKQN4YOP5ZH366ABN4/
    label: cve@mitre.org
  - url: 'https://security.gentoo.org/glsa/202003-26'
    label: cve@mitre.org
  - url: 'https://security.netapp.com/advisory/ntap-20190404-0004/'
    label: cve@mitre.org
  - url: 'https://usn.ubuntu.com/4127-1/'
    label: cve@mitre.org
  - url: 'https://usn.ubuntu.com/4127-2/'
    label: cve@mitre.org
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00062.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2019-10/msg00063.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'http://lists.opensuse.org/opensuse-security-announce/2020-01/msg00040.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'http://www.openwall.com/lists/oss-security/2021/02/04/2'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://access.redhat.com/errata/RHSA-2019:1260'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://access.redhat.com/errata/RHSA-2019:2030'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://access.redhat.com/errata/RHSA-2019:3335'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://access.redhat.com/errata/RHSA-2019:3520'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://access.redhat.com/errata/RHSA-2019:3725'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://bugs.python.org/issue35906'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00022.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00023.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://lists.debian.org/debian-lts-announce/2019/06/msg00026.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://lists.debian.org/debian-lts-announce/2020/07/msg00011.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://lists.debian.org/debian-lts-announce/2020/08/msg00034.html'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: >-
      https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JMWSKTNOHSUOT3L25QFJAVCFYZX46FYK/
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: >-
      https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/JXASHCDD4PQFKTMKQN4YOP5ZH366ABN4/
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://security.gentoo.org/glsa/202003-26'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://security.netapp.com/advisory/ntap-20190404-0004/'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://usn.ubuntu.com/4127-1/'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://usn.ubuntu.com/4127-2/'
    label: af854a3a-2127-422b-91ae-364da2661108
tags:
  - nvd
  - cve.org
epss: 0.05253
epssPercentile: 0.92313
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-10-07T18:18:57.743507Z'
scores:
  nvd: 6.1
  adp: 5.4
ingestedAt: '2026-10-07T18:42:20.899Z'
---

## Overview

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.

## Affected

- `python >= 2.7.0, < 2.7.17`
- `python >= 3.5.0, < 3.5.8`
- `python >= 3.6.0, < 3.6.9`
- `python >= 3.7.0, < 3.7.4`

## Remediation

Upgrade past the affected range:

- `python 3.7.4`
