First published: Sat Mar 23 2019(Updated: )
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.
Credit: cve@mitre.org cve@mitre.org
Affected Software | Affected Version | How to fix |
---|---|---|
redhat/python | <0:2.7.5-86.el7 | 0:2.7.5-86.el7 |
redhat/python | <0:2.7.5-63.el7_4 | 0:2.7.5-63.el7_4 |
redhat/python | <0:2.7.5-74.el7_5 | 0:2.7.5-74.el7_5 |
redhat/python | <0:2.7.5-83.el7_6 | 0:2.7.5-83.el7_6 |
redhat/python3 | <0:3.6.8-15.1.el8 | 0:3.6.8-15.1.el8 |
redhat/python27-python | <0:2.7.16-4.el6 | 0:2.7.16-4.el6 |
redhat/python27-python-jinja2 | <0:2.6-12.el6 | 0:2.6-12.el6 |
redhat/rh-python36-python | <0:3.6.9-2.el6 | 0:3.6.9-2.el6 |
redhat/python27-python | <0:2.7.16-4.el7 | 0:2.7.16-4.el7 |
redhat/python27-python-jinja2 | <0:2.6-15.el7 | 0:2.6-15.el7 |
redhat/rh-python36-python | <0:3.6.9-2.el7 | 0:3.6.9-2.el7 |
Python Python | >=2.7.0<2.7.17 | |
Python Python | >=3.5.0<3.5.8 | |
Python Python | >=3.6.0<3.6.9 | |
Python Python | >=3.7.0<3.7.4 | |
ubuntu/python2.7 | <2.7.15-4ubuntu4~18.04.1 | 2.7.15-4ubuntu4~18.04.1 |
ubuntu/python2.7 | <2.7.16-2ubuntu0.1 | 2.7.16-2ubuntu0.1 |
ubuntu/python2.7 | <2.7.6-8ubuntu0.6+ | 2.7.6-8ubuntu0.6+ |
ubuntu/python2.7 | <2.7.12-1ubuntu0~16.04.8 | 2.7.12-1ubuntu0~16.04.8 |
ubuntu/python3.4 | <3.4.3-1ubuntu1~14.04.7+ | 3.4.3-1ubuntu1~14.04.7+ |
ubuntu/python3.5 | <3.5.2-2ubuntu0~16.04.8 | 3.5.2-2ubuntu0~16.04.8 |
ubuntu/python3.6 | <3.6.8-1~18.04.2 | 3.6.8-1~18.04.2 |
ubuntu/python3.7 | <3.7.3-2ubuntu0.1 | 3.7.3-2ubuntu0.1 |
debian/python2.7 | 2.7.16-2+deb10u1 2.7.16-2+deb10u4 2.7.18-8+deb11u1 | |
debian/python3.7 | 3.7.3-2+deb10u3 3.7.3-2+deb10u7 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
(Appears in the following advisories)
CVE-2019-9947 is a vulnerability in urllib2 in Python 2.x and urllib in Python 3.x that allows for CRLF injection if the attacker controls a URL parameter.
CVE-2019-9947 has a severity score of 6.5 (medium).
Python 2.x versions up to 2.7.16 and Python 3.x versions up to 3.7.3 are affected by CVE-2019-9947.
To prevent CRLF injection in urllib2 and urllib, it is recommended to carefully validate and sanitize user-supplied input before using it in a URL.
You can find more information about CVE-2019-9947 on the Red Hat Security Advisory website and the Python bug tracker.