Blame SOURCES/00366-CVE-2021-3733.patch

956e31
From 29c669440dddba61d18e1b7fdd57180cae9e4ae3 Mon Sep 17 00:00:00 2001
956e31
From: Yeting Li <liyt@ios.ac.cn>
956e31
Date: Wed, 7 Apr 2021 19:27:41 +0800
956e31
Subject: [PATCH] bpo-43075: Fix ReDoS in urllib AbstractBasicAuthHandler
956e31
 (GH-24391)
956e31
956e31
Fix Regular Expression Denial of Service (ReDoS) vulnerability in
956e31
urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex
956e31
has quadratic worst-case complexity and it allows cause a denial of
956e31
service when identifying crafted invalid RFCs. This ReDoS issue is on
956e31
the client side and needs remote attackers to control the HTTP server.
956e31
(cherry picked from commit 7215d1ae25525c92b026166f9d5cac85fb1defe1)
956e31
956e31
Co-authored-by: Yeting Li <liyt@ios.ac.cn>
956e31
---
956e31
 Lib/urllib/request.py                                           | 2 +-
956e31
 .../next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst      | 1 +
956e31
 2 files changed, 2 insertions(+), 1 deletion(-)
956e31
 create mode 100644 Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst
956e31
956e31
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
956e31
index 6624e04317ba2..56565405a7097 100644
956e31
--- a/Lib/urllib/request.py
956e31
+++ b/Lib/urllib/request.py
956e31
@@ -947,7 +947,7 @@ class AbstractBasicAuthHandler:
956e31
     # (single quotes are a violation of the RFC, but appear in the wild)
956e31
     rx = re.compile('(?:^|,)'   # start of the string or ','
956e31
                     '[ \t]*'    # optional whitespaces
956e31
-                    '([^ \t]+)' # scheme like "Basic"
956e31
+                    '([^ \t,]+)' # scheme like "Basic"
956e31
                     '[ \t]+'    # mandatory whitespaces
956e31
                     # realm=xxx
956e31
                     # realm='xxx'
956e31
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
956e31
new file mode 100644
956e31
index 0000000000000..1c9f727e965fb
956e31
--- /dev/null
956e31
+++ b/Misc/NEWS.d/next/Security/2021-01-31-05-28-14.bpo-43075.DoAXqO.rst
956e31
@@ -0,0 +1 @@
956e31
+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.