]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43075: Fix ReDoS in urllib AbstractBasicAuthHandler (GH-24391)
authorYeting Li <liyt@ios.ac.cn>
Wed, 7 Apr 2021 11:27:41 +0000 (19:27 +0800)
committerGitHub <noreply@github.com>
Wed, 7 Apr 2021 11:27:41 +0000 (13:27 +0200)
Fix Regular Expression Denial of Service (ReDoS) vulnerability in
urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex
has quadratic worst-case complexity and it allows cause a denial of
service when identifying crafted invalid RFCs. This ReDoS issue is on
the client side and needs remote attackers to control the HTTP server.

Lib/urllib/request.py
Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst [new file with mode: 0644]

index e5febe61f556d31f585ed26d94b4253fc090bea7..8363905f20fa35ebdd4d20a535c624b8a8fff494 100644 (file)
@@ -945,7 +945,7 @@ class AbstractBasicAuthHandler:
     # (single quotes are a violation of the RFC, but appear in the wild)
     rx = re.compile('(?:^|,)'   # start of the string or ','
                     '[ \t]*'    # optional whitespaces
-                    '([^ \t]+)' # scheme like "Basic"
+                    '([^ \t,]+)' # scheme like "Basic"
                     '[ \t]+'    # mandatory whitespaces
                     # realm=xxx
                     # realm='xxx'
diff --git a/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst b/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst
new file mode 100644 (file)
index 0000000..1c9f727
--- /dev/null
@@ -0,0 +1 @@
+Fix Regular Expression Denial of Service (ReDoS) vulnerability in :class:`urllib.request.AbstractBasicAuthHandler`.  The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server.