summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python
diff options
context:
space:
mode:
authorFlorin Diaconescu <florin.diaconescu009@gmail.com>2022-12-15 13:42:55 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-12-23 23:05:50 +0000
commitc4bbc6d9c5077b26d6d8e48aa47927b3cbb023e0 (patch)
treee190ceacf38ca9832ad31da8e5c9075231d7e8ca /meta/recipes-devtools/python
parentf7133e57f8688697fdb305b5e92a4c63ccc423a6 (diff)
downloadpoky-c4bbc6d9c5077b26d6d8e48aa47927b3cbb023e0.tar.gz
python3: upgrade 3.10.8 -> 3.10.9
Security and bug fixes. Drop patch for CVE-2022-42919 and CVE-2022-37454 which were merged in 3.10.9 Fixes: * CVE-2022-45061 (gh-98433) https://nvd.nist.gov/vuln/detail/CVE-2022-45061 List of changes: https://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-9-final (From OE-Core rev: f98b9c71686eb5ce5115ee73155a7d0389831ef0) Signed-off-by: Florin Diaconescu <florin.diaconescu009@gmail.com> Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/python')
-rw-r--r--meta/recipes-devtools/python/python3/CVE-2022-42919.patch70
-rw-r--r--meta/recipes-devtools/python/python3/cve-2022-37454.patch108
-rw-r--r--meta/recipes-devtools/python/python3_3.10.9.bb (renamed from meta/recipes-devtools/python/python3_3.10.8.bb)3
3 files changed, 1 insertions, 180 deletions
diff --git a/meta/recipes-devtools/python/python3/CVE-2022-42919.patch b/meta/recipes-devtools/python/python3/CVE-2022-42919.patch
deleted file mode 100644
index 6040724dae..0000000000
--- a/meta/recipes-devtools/python/python3/CVE-2022-42919.patch
+++ /dev/null
@@ -1,70 +0,0 @@
1From 87ef80926ea0ec960a220af89d8ff4db99417b03 Mon Sep 17 00:00:00 2001
2From: Vivek Kumbhar <vkumbhar@mvista.com>
3Date: Thu, 24 Nov 2022 17:44:18 +0530
4Subject: [PATCH] CVE-2022-42919
5
6Upstream-Status: Backport [https://github.com/python/cpython/commit/eae692eed18892309bcc25a2c0f8980038305ea2]
7CVE: CVE-2022-42919
8Signed-off-by: Vivek Kumbhar <vkumbhar@mvista.com>
9
10[3.10] gh-97514: Don't use Linux abstract sockets for multiprocessing (GH-98501) (GH-98503)
11
12Linux abstract sockets are insecure as they lack any form of filesystem
13permissions so their use allows anyone on the system to inject code into
14the process.
15
16This removes the default preference for abstract sockets in
17multiprocessing introduced in Python 3.9+ via
18https://github.com/python/cpython/pull/18866 while fixing
19https://github.com/python/cpython/issues/84031.
20
21Explicit use of an abstract socket by a user now generates a
22RuntimeWarning. If we choose to keep this warning, it should be
23backported to the 3.7 and 3.8 branches.
24(cherry picked from commit 49f61068f49747164988ffc5a442d2a63874fc17)
25---
26 Lib/multiprocessing/connection.py | 5 -----
27 .../2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst | 15 +++++++++++++++
28 2 files changed, 15 insertions(+), 5 deletions(-)
29 create mode 100644 Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
30
31diff --git a/Lib/multiprocessing/connection.py b/Lib/multiprocessing/connection.py
32index 510e4b5..8e2facf 100644
33--- a/Lib/multiprocessing/connection.py
34+++ b/Lib/multiprocessing/connection.py
35@@ -73,11 +73,6 @@ def arbitrary_address(family):
36 if family == 'AF_INET':
37 return ('localhost', 0)
38 elif family == 'AF_UNIX':
39- # Prefer abstract sockets if possible to avoid problems with the address
40- # size. When coding portable applications, some implementations have
41- # sun_path as short as 92 bytes in the sockaddr_un struct.
42- if util.abstract_sockets_supported:
43- return f"\0listener-{os.getpid()}-{next(_mmap_counter)}"
44 return tempfile.mktemp(prefix='listener-', dir=util.get_temp_dir())
45 elif family == 'AF_PIPE':
46 return tempfile.mktemp(prefix=r'\\.\pipe\pyc-%d-%d-' %
47diff --git a/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst b/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
48new file mode 100644
49index 0000000..02d95b5
50--- /dev/null
51+++ b/Misc/NEWS.d/next/Security/2022-09-07-10-42-00.gh-issue-97514.Yggdsl.rst
52@@ -0,0 +1,15 @@
53+On Linux the :mod:`multiprocessing` module returns to using filesystem backed
54+unix domain sockets for communication with the *forkserver* process instead of
55+the Linux abstract socket namespace. Only code that chooses to use the
56+:ref:`"forkserver" start method <multiprocessing-start-methods>` is affected.
57+
58+Abstract sockets have no permissions and could allow any user on the system in
59+the same `network namespace
60+<https://man7.org/linux/man-pages/man7/network_namespaces.7.html>`_ (often the
61+whole system) to inject code into the multiprocessing *forkserver* process.
62+This was a potential privilege escalation. Filesystem based socket permissions
63+restrict this to the *forkserver* process user as was the default in Python 3.8
64+and earlier.
65+
66+This prevents Linux `CVE-2022-42919
67+<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_.
68--
692.25.1
70
diff --git a/meta/recipes-devtools/python/python3/cve-2022-37454.patch b/meta/recipes-devtools/python/python3/cve-2022-37454.patch
deleted file mode 100644
index c019151a64..0000000000
--- a/meta/recipes-devtools/python/python3/cve-2022-37454.patch
+++ /dev/null
@@ -1,108 +0,0 @@
1From 1f66b714c5f2fef80ec5389456ac31756dbfff0e Mon Sep 17 00:00:00 2001
2From: Theo Buehler <botovq@users.noreply.github.com>
3Date: Fri, 21 Oct 2022 21:26:01 +0200
4Subject: [PATCH] gh-98517: Fix buffer overflows in _sha3 module (#98519)
5
6This is a port of the applicable part of XKCP's fix [1] for
7CVE-2022-37454 and avoids the segmentation fault and the infinite
8loop in the test cases published in [2].
9
10[1]: https://github.com/XKCP/XKCP/commit/fdc6fef075f4e81d6b1bc38364248975e08e340a
11[2]: https://mouha.be/sha-3-buffer-overflow/
12
13Regression test added by: Gregory P. Smith [Google LLC] <greg@krypto.org>
14---
15
16Patch applied without modification.
17
18CVE: CVE-2022-37454
19
20Upstream-Status: Backport [github.com/cpython/cpython.git 0e4e058602d...]
21
22Signed-off-by: Joe Slater <joe.slater@windriver.com>
23---
24 Lib/test/test_hashlib.py | 9 +++++++++
25 .../2022-10-21-13-31-47.gh-issue-98517.SXXGfV.rst | 1 +
26 Modules/_sha3/kcp/KeccakSponge.inc | 15 ++++++++-------
27 3 files changed, 18 insertions(+), 7 deletions(-)
28 create mode 100644 Misc/NEWS.d/next/Security/2022-10-21-13-31-47.gh-issue-98517.SXXGfV.rst
29
30diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py
31index ea31f8b..65330e1 100644
32--- a/Lib/test/test_hashlib.py
33+++ b/Lib/test/test_hashlib.py
34@@ -491,6 +491,15 @@ class HashLibTestCase(unittest.TestCase):
35 def test_case_md5_uintmax(self, size):
36 self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')
37
38+ @unittest.skipIf(sys.maxsize < _4G - 1, 'test cannot run on 32-bit systems')
39+ @bigmemtest(size=_4G - 1, memuse=1, dry_run=False)
40+ def test_sha3_update_overflow(self, size):
41+ """Regression test for gh-98517 CVE-2022-37454."""
42+ h = hashlib.sha3_224()
43+ h.update(b'\x01')
44+ h.update(b'\x01'*0xffff_ffff)
45+ self.assertEqual(h.hexdigest(), '80762e8ce6700f114fec0f621fd97c4b9c00147fa052215294cceeed')
46+
47 # use the three examples from Federal Information Processing Standards
48 # Publication 180-1, Secure Hash Standard, 1995 April 17
49 # http://www.itl.nist.gov/div897/pubs/fip180-1.htm
50diff --git a/Misc/NEWS.d/next/Security/2022-10-21-13-31-47.gh-issue-98517.SXXGfV.rst b/Misc/NEWS.d/next/Security/2022-10-21-13-31-47.gh-issue-98517.SXXGfV.rst
51new file mode 100644
52index 0000000..2d23a6a
53--- /dev/null
54+++ b/Misc/NEWS.d/next/Security/2022-10-21-13-31-47.gh-issue-98517.SXXGfV.rst
55@@ -0,0 +1 @@
56+Port XKCP's fix for the buffer overflows in SHA-3 (CVE-2022-37454).
57diff --git a/Modules/_sha3/kcp/KeccakSponge.inc b/Modules/_sha3/kcp/KeccakSponge.inc
58index e10739d..cf92e4d 100644
59--- a/Modules/_sha3/kcp/KeccakSponge.inc
60+++ b/Modules/_sha3/kcp/KeccakSponge.inc
61@@ -171,7 +171,7 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
62 i = 0;
63 curData = data;
64 while(i < dataByteLen) {
65- if ((instance->byteIOIndex == 0) && (dataByteLen >= (i + rateInBytes))) {
66+ if ((instance->byteIOIndex == 0) && (dataByteLen-i >= rateInBytes)) {
67 #ifdef SnP_FastLoop_Absorb
68 /* processing full blocks first */
69
70@@ -199,10 +199,10 @@ int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dat
71 }
72 else {
73 /* normal lane: using the message queue */
74-
75- partialBlock = (unsigned int)(dataByteLen - i);
76- if (partialBlock+instance->byteIOIndex > rateInBytes)
77+ if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
78 partialBlock = rateInBytes-instance->byteIOIndex;
79+ else
80+ partialBlock = (unsigned int)(dataByteLen - i);
81 #ifdef KeccakReference
82 displayBytes(1, "Block to be absorbed (part)", curData, partialBlock);
83 #endif
84@@ -281,7 +281,7 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
85 i = 0;
86 curData = data;
87 while(i < dataByteLen) {
88- if ((instance->byteIOIndex == rateInBytes) && (dataByteLen >= (i + rateInBytes))) {
89+ if ((instance->byteIOIndex == rateInBytes) && (dataByteLen-i >= rateInBytes)) {
90 for(j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) {
91 SnP_Permute(instance->state);
92 SnP_ExtractBytes(instance->state, curData, 0, rateInBytes);
93@@ -299,9 +299,10 @@ int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByte
94 SnP_Permute(instance->state);
95 instance->byteIOIndex = 0;
96 }
97- partialBlock = (unsigned int)(dataByteLen - i);
98- if (partialBlock+instance->byteIOIndex > rateInBytes)
99+ if (dataByteLen-i > rateInBytes-instance->byteIOIndex)
100 partialBlock = rateInBytes-instance->byteIOIndex;
101+ else
102+ partialBlock = (unsigned int)(dataByteLen - i);
103 i += partialBlock;
104
105 SnP_ExtractBytes(instance->state, curData, instance->byteIOIndex, partialBlock);
106--
1072.32.0
108
diff --git a/meta/recipes-devtools/python/python3_3.10.8.bb b/meta/recipes-devtools/python/python3_3.10.9.bb
index 8963ce6dd2..d6b7a618c1 100644
--- a/meta/recipes-devtools/python/python3_3.10.8.bb
+++ b/meta/recipes-devtools/python/python3_3.10.9.bb
@@ -35,7 +35,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
35 file://0001-setup.py-Do-not-detect-multiarch-paths-when-cross-co.patch \ 35 file://0001-setup.py-Do-not-detect-multiarch-paths-when-cross-co.patch \
36 file://deterministic_imports.patch \ 36 file://deterministic_imports.patch \
37 file://0001-Avoid-shebang-overflow-on-python-config.py.patch \ 37 file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
38 file://CVE-2022-42919.patch \
39 " 38 "
40 39
41SRC_URI:append:class-native = " \ 40SRC_URI:append:class-native = " \
@@ -44,7 +43,7 @@ SRC_URI:append:class-native = " \
44 file://12-distutils-prefix-is-inside-staging-area.patch \ 43 file://12-distutils-prefix-is-inside-staging-area.patch \
45 file://0001-Don-t-search-system-for-headers-libraries.patch \ 44 file://0001-Don-t-search-system-for-headers-libraries.patch \
46 " 45 "
47SRC_URI[sha256sum] = "6a30ecde59c47048013eb5a658c9b5dec277203d2793667f578df7671f7f03f3" 46SRC_URI[sha256sum] = "5ae03e308260164baba39921fdb4dbf8e6d03d8235a939d4582b33f0b5e46a83"
48 47
49# exclude pre-releases for both python 2.x and 3.x 48# exclude pre-releases for both python 2.x and 3.x
50UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" 49UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"