Bug 2218235 - python3-lib389: Python tarfile extraction needs change to avoid a warning (CVE-2007-4559 mitigation)
Summary: python3-lib389: Python tarfile extraction needs change to avoid a warning (CV...
Keywords:
Status: MODIFIED
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: 389-ds-base
Version: 8.9
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: LDAP Maintainers
QA Contact: LDAP QA Team
URL:
Whiteboard: sync-to-jira
Depends On: CVE-2007-4559
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-06-28 14:01 UTC by Charalampos Stratakis
Modified: 2023-08-17 08:33 UTC (History)
6 users (show)

Fixed In Version: 389-ds-1.4-820230816162424-17499975
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 2207691
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github 389ds 389-ds-base issues 5867 0 None closed lib389 should use filter for tarfile as recommended by PEP 706 - 2023-08-04 07:15:48 UTC
Red Hat Issue Tracker IDMDS-3415 0 None None None 2023-07-19 13:26:40 UTC
Red Hat Issue Tracker RHELPLAN-161094 0 None None None 2023-06-28 14:04:36 UTC

Description Charalampos Stratakis 2023-06-28 14:01:56 UTC
+++ This bug was initially created as a clone of Bug #2207691 +++

Hello,
In RHEL 9.3 and 8.9, we're planning to fix the long-standing CVE-2007-4559: Python's `tarfile` module makes it too easy to extract tarballs in an unsafe way.
Unfortunately, for the CVE to be considered fixed, this needs a behavior change. (If you don't think this is the case, let's bring it up with the security team.)
Upstream, Python will emit deprecation warnings for 2 releases, but in RHEL we change the behavior now, emit warnings, and provide ways for customers to restore earlier behavior.
To avoid the warning, software shipped by Red Hat will need a change.

For more details see upstream PEP 706: https://peps.python.org/pep-0706
and the Red Hat knowledge base draft: https://access.redhat.com/articles/7004769

---

In __init__.py and tools.py in /usr/lib/python3.9/site-packages/lib389/, lib389 calls `tar.extract()`. The calls will emit a warning by default, and tar features deemed too dangerous for general use will even be blocked by default.

It seems that this is a backup recovery, and you trust the archive to not be malicious. In that case, add the following after the `tar = tarfile.open(backup_file)`:

    # The archive is fully trusted, override warnings and "safe" defaults
    # see https://docs.python.org/3.12/library/tarfile.html#supporting-older-python-versions
    tar.extraction_filter = (lambda member, path: member)

This will restore previous behaviour, and it's a no-op on earlier Python versions.

---

Let me know if you have any questions!


Note You need to log in before you can comment on or make changes to this bug.