+++ This bug was initially created as a clone of Bug #2203890 +++ 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/lib/python3.11/site-packages/ansible/galaxy/role.py, ansible-core calls `role_tar_file.extract()`. The call will emit a warning by default, and should be changed to something like: if hasattr(tarfile, 'data_filter'): # Python with CVE-2007-4559 mitigation (PEP 706) role_tar_file.extract(..., filter='data') else: # Fallback to a possibly dangerous extraction (before PEP 706) role_tar_file.extract(...) 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 your validation, use `filter='fully_trusted'` instead. That will preserve the existing behavior. (I don't know if you are concerned about *this* tarball being malicious. At first glance, your validation won't prevent malicious tarballs from extracting outside `self.path`. Happy to elaborate.) --- Let me know if you have any questions!
On RHEL8, the ansible-test subpackage calls `extractall` in /usr/lib/python3.11/site-packages/ansible_test/_internal/commands/sanity/validate_modules.py This call needs to be adjusted in the same way.