Bug 2218875 - [RHEL9] oscap-anaconda-addon: Python tarfile extraction needs change to avoid a warning (CVE-2007-4559 mitigation)
Summary: [RHEL9] oscap-anaconda-addon: Python tarfile extraction needs change to avoid...
Keywords:
Status: VERIFIED
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: oscap-anaconda-addon
Version: 9.3
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Matěj Týč
QA Contact: Release Test Team
URL:
Whiteboard:
: 2217905 (view as bug list)
Depends On:
Blocks: CVE-2007-4559 2219408
TreeView+ depends on / blocked
 
Reported: 2023-06-30 11:28 UTC by Petr Viktorin
Modified: 2023-08-04 10:56 UTC (History)
5 users (show)

Fixed In Version: oscap-anaconda-addon-2.0.0-17.el9
Doc Type: No Doc Update
Doc Text:
Clone Of:
: 2219408 (view as bug list)
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-161324 0 None None None 2023-06-30 11:29:51 UTC
Red Hat Issue Tracker RTT-5390 0 None None None 2023-07-19 12:43:03 UTC
Red Hat Issue Tracker RTT-5391 0 None None None 2023-07-19 12:43:08 UTC

Description Petr Viktorin 2023-06-30 11:28:35 UTC
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 /usr/share/anaconda/addons/org_fedora_oscap/common.py, oscap-anaconda-addon calls `tfile.extractall()`. The call will emit a warning by default. To prevent that, add something like this before the call:

tfile.extraction_filter = getattr(tarfile, 'data_filter',
                                  (lambda member, path: member))

This is compatible with unpatched versions of Python. If you only build for RHEL8.9+, instead add an argument to the call:
`tfile.extractall(path=out_dir, filter='data')`.

The 'data' filter above attempts a "safe" extraction, intended for pure data archives. For example:
- prevents extracting outside the target directory, and to absolute paths (by raising an exception)
- prevents symlinks pointing outside the target directory, and to absolute paths
- adjusts permissions (for the owner, only the executable bit is honored)
See PEP 706 for details: https://peps.python.org/pep-0706/#filters

If you trust the tarball, use `'fully_trusted_filter'` (or `filter='fully_trusted'`) instead. That will preserve the existing behavior.

---

Let me know if you have any questions!

Comment 1 Matěj Týč 2023-07-17 15:01:28 UTC
*** Bug 2217905 has been marked as a duplicate of this bug. ***

Comment 2 Jan Černý 2023-07-18 11:26:21 UTC
a fix has been merged to upstream by https://github.com/OpenSCAP/oscap-anaconda-addon/pull/250

Comment 4 Jan Stodola 2023-08-01 14:03:31 UTC
The changes from https://github.com/OpenSCAP/oscap-anaconda-addon/pull/250 are applied in oscap-anaconda-addon-2.0.0-17.el9.

Marking as Verified:Tested, SanityOnly

Comment 7 Jan Stodola 2023-08-04 10:56:29 UTC
Checked that oscap-anaconda-addon-2.0.0-17.el9 is in nightly compose RHEL-9.3.0-20230803.31
Automated tests completed without any regression.

Moving to VERIFIED


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