Skip to content

Commit 58d8220

Browse files
jslobodzianKanishk-BansalKavyaSree2610xordux
authored
Fix python3 for CVE-2025-0938 (#12608)
Co-authored-by: Kanishk Bansal <103916909+Kanishk-Bansal@users.noreply.github.com> Co-authored-by: KavyaSree2610 <92566732+KavyaSree2610@users.noreply.github.com> Co-authored-by: Rohit Rawat <rohitrawat@microsoft.com>
1 parent c920e5e commit 58d8220

6 files changed

Lines changed: 82 additions & 27 deletions

File tree

SPECS/python3/CVE-2025-0938.patch

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
From 753e79fd29bd6242575330d702caa95bc0a9f569 Mon Sep 17 00:00:00 2001
2+
From: Kanishk Bansal <kbkanishk975@gmail.com>
3+
Date: Thu, 6 Feb 2025 18:45:06 +0000
4+
Subject: [PATCH] Address CVE-2025-0938
5+
6+
---
7+
Lib/urllib/parse.py | 20 ++++++++++++++++++--
8+
1 file changed, 18 insertions(+), 2 deletions(-)
9+
10+
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
11+
index 2eb3448..dc0b71f 100644
12+
--- a/Lib/urllib/parse.py
13+
+++ b/Lib/urllib/parse.py
14+
@@ -443,6 +443,23 @@ def _checknetloc(netloc):
15+
raise ValueError("netloc '" + netloc + "' contains invalid " +
16+
"characters under NFKC normalization")
17+
18+
+def _check_bracketed_netloc(netloc):
19+
+ # Note that this function must mirror the splitting
20+
+ # done in NetlocResultMixins._hostinfo().
21+
+ hostname_and_port = netloc.rpartition('@')[2]
22+
+ before_bracket, have_open_br, bracketed = hostname_and_port.partition('[')
23+
+ if have_open_br:
24+
+ # No data is allowed before a bracket.
25+
+ if before_bracket:
26+
+ raise ValueError("Invalid IPv6 URL")
27+
+ hostname, _, port = bracketed.partition(']')
28+
+ # No data is allowed after the bracket but before the port delimiter.
29+
+ if port and not port.startswith(":"):
30+
+ raise ValueError("Invalid IPv6 URL")
31+
+ else:
32+
+ hostname, _, port = hostname_and_port.partition(':')
33+
+ _check_bracketed_host(hostname)
34+
+
35+
# Valid bracketed hosts are defined in
36+
# https://www.rfc-editor.org/rfc/rfc3986#page-49 and https://url.spec.whatwg.org/
37+
def _check_bracketed_host(hostname):
38+
@@ -506,8 +523,7 @@ def urlsplit(url, scheme='', allow_fragments=True):
39+
(']' in netloc and '[' not in netloc)):
40+
raise ValueError("Invalid IPv6 URL")
41+
if '[' in netloc and ']' in netloc:
42+
- bracketed_host = netloc.partition('[')[2].partition(']')[0]
43+
- _check_bracketed_host(bracketed_host)
44+
+ _check_bracketed_netloc(netloc)
45+
if allow_fragments and '#' in url:
46+
url, fragment = url.split('#', 1)
47+
if '?' in url:
48+
--
49+
2.43.0
50+

SPECS/python3/python3.spec

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
Summary: A high-level scripting language
1313
Name: python3
1414
Version: 3.9.19
15-
Release: 9%{?dist}
15+
Release: 10%{?dist}
1616
License: PSF
1717
Vendor: Microsoft Corporation
1818
Distribution: Mariner
@@ -30,6 +30,7 @@ Patch6: CVE-2024-4032.patch
3030
Patch7: CVE-2024-11168.patch
3131
Patch8: CVE-2024-6923.patch
3232
Patch9: CVE-2023-27043.patch
33+
Patch10: CVE-2025-0938.patch
3334
# Patch for setuptools, resolved in 65.5.1
3435
Patch1000: CVE-2022-40897.patch
3536
Patch1001: CVE-2024-6345.patch
@@ -177,6 +178,7 @@ The test package contains all regression tests for Python as well as the modules
177178
%patch7 -p1
178179
%patch8 -p1
179180
%patch9 -p1
181+
%patch10 -p1
180182

181183
%build
182184
# Remove GCC specs and build environment linker scripts
@@ -332,6 +334,9 @@ rm -rf %{buildroot}%{_bindir}/__pycache__
332334
%{_libdir}/python%{majmin}/test/*
333335

334336
%changelog
337+
* Thu Feb 06 2025 Kanishk Bansal <kanbansal@microsoft.com> - 3.9.19-10
338+
- Patch CVE-2025-0938
339+
335340
* Mon Feb 03 2024 Bala <balakumaran.kannan@microsoft.com> - 3.9.19-9
336341
- Address CVE-2023-27043 by patching
337342

toolkit/resources/manifests/package/pkggen_core_aarch64.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,10 @@ ca-certificates-base-2.0.0-19.cm2.noarch.rpm
237237
ca-certificates-2.0.0-19.cm2.noarch.rpm
238238
dwz-0.14-2.cm2.aarch64.rpm
239239
unzip-6.0-21.cm2.aarch64.rpm
240-
python3-3.9.19-9.cm2.aarch64.rpm
241-
python3-devel-3.9.19-9.cm2.aarch64.rpm
242-
python3-libs-3.9.19-9.cm2.aarch64.rpm
243-
python3-setuptools-3.9.19-9.cm2.noarch.rpm
240+
python3-3.9.19-10.cm2.aarch64.rpm
241+
python3-devel-3.9.19-10.cm2.aarch64.rpm
242+
python3-libs-3.9.19-10.cm2.aarch64.rpm
243+
python3-setuptools-3.9.19-10.cm2.noarch.rpm
244244
python3-pygments-2.4.2-7.cm2.noarch.rpm
245245
which-2.21-8.cm2.aarch64.rpm
246246
libselinux-3.2-1.cm2.aarch64.rpm

toolkit/resources/manifests/package/pkggen_core_x86_64.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,10 @@ ca-certificates-base-2.0.0-19.cm2.noarch.rpm
237237
ca-certificates-2.0.0-19.cm2.noarch.rpm
238238
dwz-0.14-2.cm2.x86_64.rpm
239239
unzip-6.0-21.cm2.x86_64.rpm
240-
python3-3.9.19-9.cm2.x86_64.rpm
241-
python3-devel-3.9.19-9.cm2.x86_64.rpm
242-
python3-libs-3.9.19-9.cm2.x86_64.rpm
243-
python3-setuptools-3.9.19-9.cm2.noarch.rpm
240+
python3-3.9.19-10.cm2.x86_64.rpm
241+
python3-devel-3.9.19-10.cm2.x86_64.rpm
242+
python3-libs-3.9.19-10.cm2.x86_64.rpm
243+
python3-setuptools-3.9.19-10.cm2.noarch.rpm
244244
python3-pygments-2.4.2-7.cm2.noarch.rpm
245245
which-2.21-8.cm2.x86_64.rpm
246246
libselinux-3.2-1.cm2.x86_64.rpm

toolkit/resources/manifests/package/toolchain_aarch64.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -510,28 +510,28 @@ procps-ng-devel-3.3.17-2.cm2.aarch64.rpm
510510
procps-ng-lang-3.3.17-2.cm2.aarch64.rpm
511511
pyproject-rpm-macros-1.0.0~rc1-4.cm2.noarch.rpm
512512
python-markupsafe-debuginfo-2.1.0-1.cm2.aarch64.rpm
513-
python3-3.9.19-9.cm2.aarch64.rpm
513+
python3-3.9.19-10.cm2.aarch64.rpm
514514
python3-audit-3.0.6-8.cm2.aarch64.rpm
515515
python3-cracklib-2.9.7-5.cm2.aarch64.rpm
516-
python3-curses-3.9.19-9.cm2.aarch64.rpm
516+
python3-curses-3.9.19-10.cm2.aarch64.rpm
517517
python3-Cython-0.29.33-2.cm2.aarch64.rpm
518-
python3-debuginfo-3.9.19-9.cm2.aarch64.rpm
519-
python3-devel-3.9.19-9.cm2.aarch64.rpm
518+
python3-debuginfo-3.9.19-10.cm2.aarch64.rpm
519+
python3-devel-3.9.19-10.cm2.aarch64.rpm
520520
python3-gpg-1.16.0-2.cm2.aarch64.rpm
521521
python3-jinja2-3.0.3-5.cm2.noarch.rpm
522522
python3-libcap-ng-0.8.2-2.cm2.aarch64.rpm
523-
python3-libs-3.9.19-9.cm2.aarch64.rpm
523+
python3-libs-3.9.19-10.cm2.aarch64.rpm
524524
python3-libxml2-2.10.4-6.cm2.aarch64.rpm
525525
python3-lxml-4.9.1-1.cm2.aarch64.rpm
526526
python3-magic-5.40-3.cm2.noarch.rpm
527527
python3-markupsafe-2.1.0-1.cm2.aarch64.rpm
528528
python3-newt-0.52.21-5.cm2.aarch64.rpm
529-
python3-pip-3.9.19-9.cm2.noarch.rpm
529+
python3-pip-3.9.19-10.cm2.noarch.rpm
530530
python3-pygments-2.4.2-7.cm2.noarch.rpm
531531
python3-rpm-4.18.0-4.cm2.aarch64.rpm
532-
python3-setuptools-3.9.19-9.cm2.noarch.rpm
533-
python3-test-3.9.19-9.cm2.aarch64.rpm
534-
python3-tools-3.9.19-9.cm2.aarch64.rpm
532+
python3-setuptools-3.9.19-10.cm2.noarch.rpm
533+
python3-test-3.9.19-10.cm2.aarch64.rpm
534+
python3-tools-3.9.19-10.cm2.aarch64.rpm
535535
readline-8.1-1.cm2.aarch64.rpm
536536
readline-debuginfo-8.1-1.cm2.aarch64.rpm
537537
readline-devel-8.1-1.cm2.aarch64.rpm

toolkit/resources/manifests/package/toolchain_x86_64.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -516,28 +516,28 @@ procps-ng-devel-3.3.17-2.cm2.x86_64.rpm
516516
procps-ng-lang-3.3.17-2.cm2.x86_64.rpm
517517
pyproject-rpm-macros-1.0.0~rc1-4.cm2.noarch.rpm
518518
python-markupsafe-debuginfo-2.1.0-1.cm2.x86_64.rpm
519-
python3-3.9.19-9.cm2.x86_64.rpm
519+
python3-3.9.19-10.cm2.x86_64.rpm
520520
python3-audit-3.0.6-8.cm2.x86_64.rpm
521521
python3-cracklib-2.9.7-5.cm2.x86_64.rpm
522-
python3-curses-3.9.19-9.cm2.x86_64.rpm
522+
python3-curses-3.9.19-10.cm2.x86_64.rpm
523523
python3-Cython-0.29.33-2.cm2.x86_64.rpm
524-
python3-debuginfo-3.9.19-9.cm2.x86_64.rpm
525-
python3-devel-3.9.19-9.cm2.x86_64.rpm
524+
python3-debuginfo-3.9.19-10.cm2.x86_64.rpm
525+
python3-devel-3.9.19-10.cm2.x86_64.rpm
526526
python3-gpg-1.16.0-2.cm2.x86_64.rpm
527527
python3-jinja2-3.0.3-5.cm2.noarch.rpm
528528
python3-libcap-ng-0.8.2-2.cm2.x86_64.rpm
529-
python3-libs-3.9.19-9.cm2.x86_64.rpm
529+
python3-libs-3.9.19-10.cm2.x86_64.rpm
530530
python3-libxml2-2.10.4-6.cm2.x86_64.rpm
531531
python3-lxml-4.9.1-1.cm2.x86_64.rpm
532532
python3-magic-5.40-3.cm2.noarch.rpm
533533
python3-markupsafe-2.1.0-1.cm2.x86_64.rpm
534534
python3-newt-0.52.21-5.cm2.x86_64.rpm
535-
python3-pip-3.9.19-9.cm2.noarch.rpm
535+
python3-pip-3.9.19-10.cm2.noarch.rpm
536536
python3-pygments-2.4.2-7.cm2.noarch.rpm
537537
python3-rpm-4.18.0-4.cm2.x86_64.rpm
538-
python3-setuptools-3.9.19-9.cm2.noarch.rpm
539-
python3-test-3.9.19-9.cm2.x86_64.rpm
540-
python3-tools-3.9.19-9.cm2.x86_64.rpm
538+
python3-setuptools-3.9.19-10.cm2.noarch.rpm
539+
python3-test-3.9.19-10.cm2.x86_64.rpm
540+
python3-tools-3.9.19-10.cm2.x86_64.rpm
541541
readline-8.1-1.cm2.x86_64.rpm
542542
readline-debuginfo-8.1-1.cm2.x86_64.rpm
543543
readline-devel-8.1-1.cm2.x86_64.rpm

0 commit comments

Comments
 (0)