From e5201279e893aa9f38d4a6c89ed4d5ec49037051 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 9 Nov 2021 04:49:26 -0500 Subject: [PATCH] import python3x-pip-19.3.1-4.module+el8.5.0+12205+a865257a --- SOURCES/CVE-2021-33503.patch | 42 ++++++++++++++++++++++++++++++++++++ SOURCES/CVE-2021-3572.patch | 34 +++++++++++++++++++++++++++++ SPECS/python3x-pip.spec | 32 ++++++++++++++++++++++++--- 3 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 SOURCES/CVE-2021-33503.patch create mode 100644 SOURCES/CVE-2021-3572.patch diff --git a/SOURCES/CVE-2021-33503.patch b/SOURCES/CVE-2021-33503.patch new file mode 100644 index 0000000..d7a8b01 --- /dev/null +++ b/SOURCES/CVE-2021-33503.patch @@ -0,0 +1,42 @@ +From 6d2dcef3427b96c36ddfebf217f774a2c5ecad38 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Wed, 30 Jun 2021 09:27:07 +0200 +Subject: [PATCH] CVE-2021-33503 + +--- + src/pip/_vendor/urllib3/util/url.py | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/pip/_vendor/urllib3/util/url.py b/src/pip/_vendor/urllib3/util/url.py +index 5fe37a7..addaeb7 100644 +--- a/src/pip/_vendor/urllib3/util/url.py ++++ b/src/pip/_vendor/urllib3/util/url.py +@@ -63,12 +63,12 @@ IPV6_ADDRZ_RE = re.compile("^" + IPV6_ADDRZ_PAT + "$") + BRACELESS_IPV6_ADDRZ_RE = re.compile("^" + IPV6_ADDRZ_PAT[2:-2] + "$") + ZONE_ID_RE = re.compile("(" + ZONE_ID_PAT + r")\]$") + +-SUBAUTHORITY_PAT = (u"^(?:(.*)@)?(%s|%s|%s)(?::([0-9]{0,5}))?$") % ( ++_HOST_PORT_PAT = ("^(%s|%s|%s)(?::([0-9]{0,5}))?$") % ( + REG_NAME_PAT, + IPV4_PAT, + IPV6_ADDRZ_PAT, + ) +-SUBAUTHORITY_RE = re.compile(SUBAUTHORITY_PAT, re.UNICODE | re.DOTALL) ++_HOST_PORT_RE = re.compile(_HOST_PORT_PAT, re.UNICODE | re.DOTALL) + + UNRESERVED_CHARS = set( + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~" +@@ -374,7 +374,9 @@ def parse_url(url): + scheme = scheme.lower() + + if authority: +- auth, host, port = SUBAUTHORITY_RE.match(authority).groups() ++ auth, _, host_port = authority.rpartition("@") ++ auth = auth or None ++ host, port = _HOST_PORT_RE.match(host_port).groups() + if auth and normalize_uri: + auth = _encode_invalid_chars(auth, USERINFO_CHARS) + if port == "": +-- +2.31.1 + diff --git a/SOURCES/CVE-2021-3572.patch b/SOURCES/CVE-2021-3572.patch new file mode 100644 index 0000000..04739c1 --- /dev/null +++ b/SOURCES/CVE-2021-3572.patch @@ -0,0 +1,34 @@ +From 4f0099156245ed2873d6945d5e58db741e15836d Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Tue, 8 Jun 2021 09:51:47 +0200 +Subject: [PATCH] CVE-2021-3572 + +--- + src/pip/_internal/vcs/git.py | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/pip/_internal/vcs/git.py b/src/pip/_internal/vcs/git.py +index 92b8457..7b3cc4a 100644 +--- a/src/pip/_internal/vcs/git.py ++++ b/src/pip/_internal/vcs/git.py +@@ -120,9 +120,15 @@ class Git(VersionControl): + output = cls.run_command(['show-ref', rev], cwd=dest, + show_stdout=False, on_returncode='ignore') + refs = {} +- for line in output.strip().splitlines(): ++ # NOTE: We do not use splitlines here since that would split on other ++ # unicode separators, which can be maliciously used to install a ++ # different revision. ++ for line in output.strip().split("\n"): ++ line = line.rstrip("\r") ++ if not line: ++ continue + try: +- sha, ref = line.split() ++ sha, ref = line.split(" ", maxsplit=2) + except ValueError: + # Include the offending line to simplify troubleshooting if + # this error ever occurs. +-- +2.31.1 + diff --git a/SPECS/python3x-pip.spec b/SPECS/python3x-pip.spec index b4ab78e..d6b5faa 100644 --- a/SPECS/python3x-pip.spec +++ b/SPECS/python3x-pip.spec @@ -16,7 +16,7 @@ Name: python3x-%{srcname} # When updating, update the bundled libraries versions bellow! # You can use vendor_meta.sh in the dist git repo Version: 19.3.1 -Release: 1%{?dist} +Release: 4%{?dist} Summary: A tool for installing and managing Python packages # We bundle a lot of libraries with pip, which itself is under MIT license. @@ -91,6 +91,16 @@ Patch4: dummy-certifi.patch # https://github.com/pypa/pip/pull/7359 Patch5: network-tests.patch +# Patch for CVE-2021-3572 - pip incorrectly handled unicode separators in git references +# Upstream PR: https://github.com/pypa/pip/pull/9827 +# Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1962856 +Patch6: CVE-2021-3572.patch + +# CVE-2021-33503 Catastrophic backtracking in URL authority parser +# Tracking bug: https://bugzilla.redhat.com/show_bug.cgi?id=1968074 +# Upstream fix: https://github.com/urllib3/urllib3/commit/2d4a3fee6de2fa45eb82169361918f759269b4ec +Patch7: CVE-2021-33503.patch + # Downstream only patch # Users might have local installations of pip from using # `pip install --user --upgrade pip` on older/newer versions. @@ -185,6 +195,8 @@ BuildRequires: ca-certificates Requires: ca-certificates Requires: python%{python3_pkgversion}-setuptools +# Require alternatives version that implements the --keep-foreign flag +Requires(postun): alternatives >= 1.19.1-1 # python38 installs the alternatives master symlink to which we attach a slave Requires: python38 Requires(post): python38 @@ -242,6 +254,8 @@ popd %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 +%patch7 -p1 # this goes together with patch4 rm src/pip/_vendor/certifi/*.pem @@ -366,9 +380,9 @@ if [ $1 -eq 0 ]; then grep -c "^/usr/bin/python3.8 - priority [0-9]*"` if [ $EXISTS -ne 0 ]; then - alternatives --remove-slave python3 %{_bindir}/python3.8 \ + alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.8 \ pip3 - alternatives --remove-slave python3 %{_bindir}/python3.8 \ + alternatives --keep-foreign --remove-slave python3 %{_bindir}/python3.8 \ pip-3 fi fi @@ -403,6 +417,18 @@ fi %{python_wheeldir}/%{python_wheelname} %changelog +* Mon Aug 02 2021 Tomas Orsava - 19.3.1-4 +- Adjusted the postun scriptlets to enable upgrading to RHEL 9 +- Resolves: rhbz#1933055 + +* Wed Jun 30 2021 Lumír Balhar - 19.3.1-3 +- Fix for CVE-2021-33503 Catastrophic backtracking in URL authority parser +Resolves: rhbz#1968074 + +* Tue Jun 08 2021 Lumír Balhar - 19.3.1-2 +- Fix for CVE-2021-3572 - pip incorrectly handled unicode separators in git references +Resolves: rhbz#1962856 + * Thu Apr 23 2020 Lumír Balhar - 19.3.1 - Rebase to 19.3.1 to enable support for manylinux2014 Resolves: rhbz#1827623