티스토리 수익 글 보기

티스토리 수익 글 보기

[4.0.x] Fixed CVE-2022-41323 — Prevented locales being interpreted a… · django/django@23f0093 · GitHub
Skip to content

Commit 23f0093

Browse files
adamchainzcarltongibson
authored andcommitted
[4.0.x] Fixed CVE-2022-41323 — Prevented locales being interpreted as regular expressions.
Thanks to Benjamin Balder Bach for the report.
1 parent 4a30e0d commit 23f0093

File tree

4 files changed

+17
3
lines changed

4 files changed

+17
3
lines changed

django/urls/resolvers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ def __init__(self, prefix_default_language=True):
338338
@property
339339
def regex(self):
340340
# This is only used by reverse() and cached in _reverse_dict.
341-
return re.compile(self.language_prefix)
341+
return re.compile(re.escape(self.language_prefix))
342342

343343
@property
344344
def language_prefix(self):

docs/releases/3.2.16.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ Django 3.2.16 release notes
66

77
Django 3.2.16 fixes a security issue with severity "medium" in 3.2.15.
88

9-
...
9+
CVE-2022-41323: Potential denial-of-service vulnerability in internationalized URLs
10+
===================================================================================
11+
12+
Internationalized URLs were subject to potential denial of service attack via
13+
the locale parameter.

docs/releases/4.0.8.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ Django 4.0.8 release notes
66

77
Django 4.0.8 fixes a security issue with severity "medium" in 4.0.7.
88

9-
...
9+
CVE-2022-41323: Potential denial-of-service vulnerability in internationalized URLs
10+
===================================================================================
11+
12+
Internationalized URLs were subject to potential denial of service attack via
13+
the locale parameter.

tests/i18n/patterns/tests.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,12 @@ def test_translate_url_utility(self):
198198
self.assertEqual(translate_url("/nl/gebruikers/", "en"), "/en/users/")
199199
self.assertEqual(translation.get_language(), "nl")
200200

201+
def test_locale_not_interepreted_as_regex(self):
202+
with translation.override("e("):
203+
# Would previously error:
204+
# re.error: missing ), unterminated subpattern at position 1
205+
reverse("users")
206+
201207

202208
class URLNamespaceTests(URLTestCaseBase):
203209
"""

0 commit comments

Comments
 (0)