46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
From dbcfc664ee7ae6e9e97ca0d69ad6581a36871836 Mon Sep 17 00:00:00 2001
|
|
From: Victor Stinner <vstinner@python.org>
|
|
Date: Thu, 30 Jan 2020 16:13:03 +0100
|
|
Subject: [PATCH] bpo-39503: Fix urllib basic auth regex
|
|
|
|
The AbstractBasicAuthHandler class of the urllib.request module uses
|
|
an inefficient regular expression which can be exploited by an
|
|
attacker to cause a denial of service. Fix the regex to prevent the
|
|
catastrophic backtracking.
|
|
|
|
Vulnerability reported by Matt Schwager.
|
|
|
|
Signed-off-by: hanxinke <hanxinke@huawei.com>
|
|
---
|
|
Lib/urllib2.py | 2 +-
|
|
.../next/Security/2020-01-30-16-15-29.bpo-39503.B299Yq.rst | 4 ++++
|
|
2 files changed, 5 insertions(+), 1 deletion(-)
|
|
create mode 100644 Misc/NEWS.d/next/Security/2020-01-30-16-15-29.bpo-39503.B299Yq.rst
|
|
|
|
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
|
|
index fd19e1a..1596a51 100644
|
|
--- a/Lib/urllib2.py
|
|
+++ b/Lib/urllib2.py
|
|
@@ -858,7 +858,7 @@ class AbstractBasicAuthHandler:
|
|
|
|
# allow for double- and single-quoted realm values
|
|
# (single quotes are a violation of the RFC, but appear in the wild)
|
|
- rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
|
|
+ rx = re.compile('(?:[^,]*,)*[ \t]*([^ \t]+)[ \t]+'
|
|
'realm=(["\']?)([^"\']*)\\2', re.I)
|
|
|
|
# XXX could pre-emptively send auth info already accepted (RFC 2617,
|
|
diff --git a/Misc/NEWS.d/next/Security/2020-01-30-16-15-29.bpo-39503.B299Yq.rst b/Misc/NEWS.d/next/Security/2020-01-30-16-15-29.bpo-39503.B299Yq.rst
|
|
new file mode 100644
|
|
index 0000000..92f186d
|
|
--- /dev/null
|
|
+++ b/Misc/NEWS.d/next/Security/2020-01-30-16-15-29.bpo-39503.B299Yq.rst
|
|
@@ -0,0 +1,4 @@
|
|
+CVE-2020-8492: The :class:`~urllib.request.AbstractBasicAuthHandler` class of the
|
|
+:mod:`urllib.request` module uses an inefficient regular expression which can
|
|
+be exploited by an attacker to cause a denial of service. Fix the regex to
|
|
+prevent the catastrophic backtracking. Vulnerability reported by Matt Schwager.
|
|
--
|
|
2.23.0
|
|
|