import python2-2.7.18-12.module+el8.8.0+17629+2cfc9d03
This commit is contained in:
		
							parent
							
								
									307a7d882d
								
							
						
					
					
						commit
						deaf7b5746
					
				| @ -0,0 +1,98 @@ | |||||||
|  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: "Miss Islington (bot)" | ||||||
|  |  <31488909+miss-islington@users.noreply.github.com> | ||||||
|  | Date: Mon, 7 Nov 2022 19:22:14 -0800 | ||||||
|  | Subject: [PATCH]  | ||||||
|  |  00394-cve-2022-45061-cpu-denial-of-service-via-inefficient-idna-decoder.patch | ||||||
|  | 
 | ||||||
|  | 00394 # | ||||||
|  | gh-98433: Fix quadratic time idna decoding. | ||||||
|  | 
 | ||||||
|  | There was an unnecessary quadratic loop in idna decoding. This restores | ||||||
|  | the behavior to linear. | ||||||
|  | 
 | ||||||
|  | Backported from python3. | ||||||
|  | 
 | ||||||
|  | (cherry picked from commit a6f6c3a3d6f2b580f2d87885c9b8a9350ad7bf15) | ||||||
|  | 
 | ||||||
|  | Co-authored-by: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | ||||||
|  | Co-authored-by: Gregory P. Smith <greg@krypto.org> | ||||||
|  | ---
 | ||||||
|  |  Lib/encodings/idna.py                         | 32 +++++++++---------- | ||||||
|  |  Lib/test/test_codecs.py                       |  6 ++++ | ||||||
|  |  ...2-11-04-09-29-36.gh-issue-98433.l76c5G.rst |  6 ++++ | ||||||
|  |  3 files changed, 27 insertions(+), 17 deletions(-) | ||||||
|  |  create mode 100644 Misc/NEWS.d/next/Security/2022-11-04-09-29-36.gh-issue-98433.l76c5G.rst | ||||||
|  | 
 | ||||||
|  | diff --git a/Lib/encodings/idna.py b/Lib/encodings/idna.py
 | ||||||
|  | index ea90d67142f..2ce798cf47e 100644
 | ||||||
|  | --- a/Lib/encodings/idna.py
 | ||||||
|  | +++ b/Lib/encodings/idna.py
 | ||||||
|  | @@ -39,23 +39,21 @@ def nameprep(label):
 | ||||||
|  |   | ||||||
|  |      # Check bidi | ||||||
|  |      RandAL = map(stringprep.in_table_d1, label) | ||||||
|  | -    for c in RandAL:
 | ||||||
|  | -        if c:
 | ||||||
|  | -            # There is a RandAL char in the string. Must perform further
 | ||||||
|  | -            # tests:
 | ||||||
|  | -            # 1) The characters in section 5.8 MUST be prohibited.
 | ||||||
|  | -            # This is table C.8, which was already checked
 | ||||||
|  | -            # 2) If a string contains any RandALCat character, the string
 | ||||||
|  | -            # MUST NOT contain any LCat character.
 | ||||||
|  | -            if filter(stringprep.in_table_d2, label):
 | ||||||
|  | -                raise UnicodeError("Violation of BIDI requirement 2")
 | ||||||
|  | -
 | ||||||
|  | -            # 3) If a string contains any RandALCat character, a
 | ||||||
|  | -            # RandALCat character MUST be the first character of the
 | ||||||
|  | -            # string, and a RandALCat character MUST be the last
 | ||||||
|  | -            # character of the string.
 | ||||||
|  | -            if not RandAL[0] or not RandAL[-1]:
 | ||||||
|  | -                raise UnicodeError("Violation of BIDI requirement 3")
 | ||||||
|  | +    if any(RandAL):
 | ||||||
|  | +        # There is a RandAL char in the string. Must perform further
 | ||||||
|  | +        # tests:
 | ||||||
|  | +        # 1) The characters in section 5.8 MUST be prohibited.
 | ||||||
|  | +        # This is table C.8, which was already checked
 | ||||||
|  | +        # 2) If a string contains any RandALCat character, the string
 | ||||||
|  | +        # MUST NOT contain any LCat character.
 | ||||||
|  | +        if any(stringprep.in_table_d2(x) for x in label):
 | ||||||
|  | +            raise UnicodeError("Violation of BIDI requirement 2")
 | ||||||
|  | +        # 3) If a string contains any RandALCat character, a
 | ||||||
|  | +        # RandALCat character MUST be the first character of the
 | ||||||
|  | +        # string, and a RandALCat character MUST be the last
 | ||||||
|  | +        # character of the string.
 | ||||||
|  | +        if not RandAL[0] or not RandAL[-1]:
 | ||||||
|  | +            raise UnicodeError("Violation of BIDI requirement 3")
 | ||||||
|  |   | ||||||
|  |      return label | ||||||
|  |   | ||||||
|  | diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
 | ||||||
|  | index 0ec8bf5a4b4..76428e1794a 100644
 | ||||||
|  | --- a/Lib/test/test_codecs.py
 | ||||||
|  | +++ b/Lib/test/test_codecs.py
 | ||||||
|  | @@ -1318,6 +1318,12 @@ class IDNACodecTest(unittest.TestCase):
 | ||||||
|  |          self.assertEqual(u"pyth\xf6n.org".encode("idna"), "xn--pythn-mua.org") | ||||||
|  |          self.assertEqual(u"pyth\xf6n.org.".encode("idna"), "xn--pythn-mua.org.") | ||||||
|  |   | ||||||
|  | +    def test_builtin_decode_length_limit(self):
 | ||||||
|  | +        with self.assertRaisesRegexp(UnicodeError, "too long"):
 | ||||||
|  | +            (b"xn--016c"+b"a"*1100).decode("idna")
 | ||||||
|  | +        with self.assertRaisesRegexp(UnicodeError, "too long"):
 | ||||||
|  | +            (b"xn--016c"+b"a"*70).decode("idna")
 | ||||||
|  | +
 | ||||||
|  |      def test_stream(self): | ||||||
|  |          import StringIO | ||||||
|  |          r = codecs.getreader("idna")(StringIO.StringIO("abc")) | ||||||
|  | diff --git a/Misc/NEWS.d/next/Security/2022-11-04-09-29-36.gh-issue-98433.l76c5G.rst b/Misc/NEWS.d/next/Security/2022-11-04-09-29-36.gh-issue-98433.l76c5G.rst
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 00000000000..5185fac2e29
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/Misc/NEWS.d/next/Security/2022-11-04-09-29-36.gh-issue-98433.l76c5G.rst
 | ||||||
|  | @@ -0,0 +1,6 @@
 | ||||||
|  | +The IDNA codec decoder used on DNS hostnames by :mod:`socket` or :mod:`asyncio`
 | ||||||
|  | +related name resolution functions no longer involves a quadratic algorithm.
 | ||||||
|  | +This prevents a potential CPU denial of service if an out-of-spec excessive
 | ||||||
|  | +length hostname involving bidirectional characters were decoded. Some protocols
 | ||||||
|  | +such as :mod:`urllib` http ``3xx`` redirects potentially allow for an attacker
 | ||||||
|  | +to supply such a name.
 | ||||||
| @ -104,7 +104,7 @@ Summary: An interpreted, interactive, object-oriented programming language | |||||||
| Name: %{python} | Name: %{python} | ||||||
| # Remember to also rebase python2-docs when changing this: | # Remember to also rebase python2-docs when changing this: | ||||||
| Version: 2.7.18 | Version: 2.7.18 | ||||||
| Release: 11%{?dist} | Release: 12%{?dist} | ||||||
| License: Python | License: Python | ||||||
| Group: Development/Languages | Group: Development/Languages | ||||||
| Requires: %{python}-libs%{?_isa} = %{version}-%{release} | Requires: %{python}-libs%{?_isa} = %{version}-%{release} | ||||||
| @ -807,6 +807,15 @@ Patch378: 00378-support-expat-2-4-5.patch | |||||||
| # Backported from python3. | # Backported from python3. | ||||||
| Patch382: 00382-cve-2015-20107.patch | Patch382: 00382-cve-2015-20107.patch | ||||||
| 
 | 
 | ||||||
|  | # 00394 # | ||||||
|  | # gh-98433: Fix quadratic time idna decoding. | ||||||
|  | # | ||||||
|  | # There was an unnecessary quadratic loop in idna decoding. This restores | ||||||
|  | # the behavior to linear. | ||||||
|  | # | ||||||
|  | # Backported from python3. | ||||||
|  | Patch394: 00394-cve-2022-45061-cpu-denial-of-service-via-inefficient-idna-decoder.patch | ||||||
|  | 
 | ||||||
| # (New patches go here ^^^) | # (New patches go here ^^^) | ||||||
| # | # | ||||||
| # When adding new patches to "python2" and "python3" in Fedora, EL, etc., | # When adding new patches to "python2" and "python3" in Fedora, EL, etc., | ||||||
| @ -1140,6 +1149,7 @@ git apply %{PATCH351} | |||||||
| %patch377 -p1 | %patch377 -p1 | ||||||
| %patch378 -p1 | %patch378 -p1 | ||||||
| %patch382 -p1 | %patch382 -p1 | ||||||
|  | %patch394 -p1 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # This shouldn't be necesarry, but is right now (2.2a3) | # This shouldn't be necesarry, but is right now (2.2a3) | ||||||
| @ -2079,6 +2089,10 @@ fi | |||||||
| # ====================================================== | # ====================================================== | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Wed Dec 21 2022 Charalampos Stratakis <cstratak@redhat.com> - 2.7.18-12 | ||||||
|  | - Security fix for CVE-2022-45061: CPU denial of service via inefficient IDNA decoder | ||||||
|  | Resolves: rhbz#2144072 | ||||||
|  | 
 | ||||||
| * Fri Jun 17 2022 Charalampos Stratakis <cstratak@redhat.com> - 2.7.18-11 | * Fri Jun 17 2022 Charalampos Stratakis <cstratak@redhat.com> - 2.7.18-11 | ||||||
| - Security fix for CVE-2015-20107 | - Security fix for CVE-2015-20107 | ||||||
| - Fix the test suite support for Expat >= 2.4.5 | - Fix the test suite support for Expat >= 2.4.5 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user