import python3x-pip-19.3.1-7.module+el8.9.0+19642+a12b4af6

c8-stream-3.8 imports/c8-stream-3.8/python3x-pip-19.3.1-7.module+el8.9.0+19642+a12b4af6
MSVSphere Packaging Team 1 year ago
parent f1fef39079
commit 9b95d404f0

@ -0,0 +1,78 @@
Minimal patch for pip
diff -rU3 pip-orig/src/pip/_internal/utils/unpacking.py pip/src/pip/_internal/utils/unpacking.py
--- pip-orig/src/pip/_internal/utils/unpacking.py 2022-11-05 16:25:43.000000000 +0100
+++ pip/src/pip/_internal/utils/unpacking.py 2023-08-08 13:17:47.705613554 +0200
@@ -184,6 +184,13 @@
raise InstallationError(
message.format(filename, path, location)
)
+
+ # Call the `data` filter for its side effect (raising exception)
+ try:
+ tarfile.data_filter(member.replace(name=fn), location)
+ except tarfile.LinkOutsideDestinationError:
+ pass
+
if member.isdir():
ensure_dir(path)
elif member.issym():
Test from https://github.com/pypa/pip/pull/12214
diff -rU3 pip-orig/tests/unit/test_utils_unpacking.py pip/tests/unit/test_utils_unpacking.py
--- pip-orig/tests/unit/test_utils_unpacking.py 2022-11-05 16:25:43.000000000 +0100
+++ pip/tests/unit/test_utils_unpacking.py 2023-08-08 13:17:35.151540108 +0200
@@ -171,6 +171,23 @@
test_tar = self.make_tar_file('test_tar.tar', files)
untar_file(test_tar, self.tempdir)
+ def test_unpack_tar_filter(self) -> None:
+ """
+ Test that the tarfile.data_filter is used to disallow dangerous
+ behaviour (PEP-721)
+ """
+ test_tar = os.path.join(self.tempdir, "test_tar_filter.tar")
+ with tarfile.open(test_tar, "w") as mytar:
+ file_tarinfo = tarfile.TarInfo("bad-link")
+ file_tarinfo.type = tarfile.SYMTYPE
+ file_tarinfo.linkname = "../../../../pwn"
+ mytar.addfile(file_tarinfo, io.BytesIO(b""))
+ with pytest.raises(InstallationError) as e:
+ untar_file(test_tar, self.tempdir)
+
+ assert "is outside the destination" in str(e.value)
+
+
@pytest.mark.parametrize('args, expected', [
# Test the second containing the first.
Patch for vendored distlib from https://github.com/pypa/distlib/pull/201
diff --git a/distlib/util.py b/distlib/util.py
index e0622e4..4349d0b 100644
--- a/src/pip/_vendor/distlib/util.py
+++ b/src/pip/_vendor/distlib/util.py
@@ -1249,6 +1249,19 @@ def check_path(path):
for tarinfo in archive.getmembers():
if not isinstance(tarinfo.name, text_type):
tarinfo.name = tarinfo.name.decode('utf-8')
+
+ # Limit extraction of dangerous items, if this Python
+ # allows it easily. If not, just trust the input.
+ # See: https://docs.python.org/3/library/tarfile.html#extraction-filters
+ def extraction_filter(member, path):
+ """Run tarfile.tar_fillter, but raise the expected ValueError"""
+ # This is only called if the current Python has tarfile filters
+ try:
+ return tarfile.tar_filter(member, path)
+ except tarfile.FilterError as exc:
+ raise ValueError(str(exc))
+ archive.extraction_filter = extraction_filter
+
archive.extractall(dest_dir)
finally:

@ -16,7 +16,7 @@ Name: python3x-%{srcname}
# When updating, update the bundled libraries versions bellow! # When updating, update the bundled libraries versions bellow!
# You can use vendor_meta.sh in the dist git repo # You can use vendor_meta.sh in the dist git repo
Version: 19.3.1 Version: 19.3.1
Release: 6%{?dist} Release: 7%{?dist}
Summary: A tool for installing and managing Python packages Summary: A tool for installing and managing Python packages
# We bundle a lot of libraries with pip, which itself is under MIT license. # We bundle a lot of libraries with pip, which itself is under MIT license.
@ -105,6 +105,14 @@ Patch7: CVE-2021-33503.patch
# https://github.com/pypa/pip/pull/7873 # https://github.com/pypa/pip/pull/7873
Patch8: fix-tmpdir-infinite-recursion.patch Patch8: fix-tmpdir-infinite-recursion.patch
# CVE-2007-4559, PEP-721, PEP-706: Use tarfile.data_filter for extracting
# - Minimal downstream-only patch, to be replaced by upstream solution
# proposed in https://github.com/pypa/pip/pull/12214
# - Test patch submitted upstream in the above pull request
# - Patch for vendored distlib, accepted upstream:
# https://github.com/pypa/distlib/pull/201
Patch9: cve-2007-4559-tarfile.patch
# Downstream only patch # Downstream only patch
# Users might have local installations of pip from using # Users might have local installations of pip from using
# `pip install --user --upgrade pip` on older/newer versions. # `pip install --user --upgrade pip` on older/newer versions.
@ -261,6 +269,7 @@ popd
%patch6 -p1 %patch6 -p1
%patch7 -p1 %patch7 -p1
%patch8 -p1 %patch8 -p1
%patch9 -p1
# this goes together with patch4 # this goes together with patch4
rm src/pip/_vendor/certifi/*.pem rm src/pip/_vendor/certifi/*.pem
@ -274,6 +283,11 @@ ln -s %{python_wheeldir} tests/data/common_wheels
rm -v src/pip/_vendor/distlib/*.exe rm -v src/pip/_vendor/distlib/*.exe
sed -i '/\.exe/d' setup.py sed -i '/\.exe/d' setup.py
# Backports for Python 2
rm src/pip/_vendor/distlib/_backport/shutil.py
rm src/pip/_vendor/distlib/_backport/tarfile.py
%build %build
%py3_build_wheel %py3_build_wheel
@ -425,6 +439,10 @@ fi
%{python_wheeldir}/%{python_wheelname} %{python_wheeldir}/%{python_wheelname}
%changelog %changelog
* Tue Aug 08 2023 Petr Viktorin <pviktori@redhat.com> - 19.3.1-6
- Use tarfile.data_filter for extracting (CVE-2007-4559, PEP-721, PEP-706)
Resolves: RHBZ#2218267
* Tue May 24 2022 Orion Poplawski <orion@nwra.com> - 19.3.1-6 * Tue May 24 2022 Orion Poplawski <orion@nwra.com> - 19.3.1-6
- Backport patch to fix infinite recursion with pip wheel with $TMPDIR in $PWD - Backport patch to fix infinite recursion with pip wheel with $TMPDIR in $PWD
- Resolves: rhbz#2090006 - Resolves: rhbz#2090006

Loading…
Cancel
Save