Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Archive delivered over network (AV:N), no complexity barrier (AC:L), no attacker privileges needed (PR:N), user must extract archive (UI:R), arbitrary file write gives high integrity impact (I:H), no confidentiality or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Patool before 4.0.5 contains a path traversal vulnerability in the safe_extract() function in patoolib/programs/py_tarfile.py when running on Python before 3.12, where the is_within_directory() helper uses os.path.commonprefix() for character-level string comparison instead of path-level comparison, allowing a crafted archive member path to bypass the containment check. Attackers can supply a malicious archive with specially crafted member paths to write arbitrary files.
AnalysisAI
Path traversal in Patool's safe_extract() function allows an attacker-controlled archive to write files to arbitrary locations on the filesystem when extracted by a victim running Patool before 4.0.5 on Python before 3.12. The flaw exists because the is_within_directory() helper in patoolib/programs/py_tarfile.py uses os.path.commonprefix() for character-level string prefix matching rather than path-component-level comparison, making it trivially bypassable with crafted member paths. No public exploit or CISA KEV listing has been identified at time of analysis, but the low-complexity exploitation conditions and complete integrity bypass make this a meaningful risk for affected deployments.
Technical ContextAI
Patool (CPE: cpe:2.3:a:wummel:patool) is a Python-based universal archive command-line tool. The vulnerability (CWE-22: Path Traversal) is rooted in a subtle but well-known pitfall of os.path.commonprefix(): it operates character-by-character rather than path-segment-by-segment. For example, the paths '/extract/output' and '/extract/output2/../../../etc/cron.d/' share a character-level common prefix of '/extract/output', causing the containment check to incorrectly conclude the second path is within the first. Python 3.12 addressed zip/tarfile path traversal systematically at the stdlib level, which is why the vulnerability is conditional on Python < 3.12. The affected code path is specifically in patoolib/programs/py_tarfile.py, making it triggered only when Patool processes tar-format archives via the Python tarfile backend.
RemediationAI
The primary fix is to upgrade Patool to version 4.0.5, the vendor-released patch available at https://github.com/wummel/patool/releases/tag/4.0.5 and documented in https://github.com/wummel/patool/blob/main/doc/changelog.txt. If an immediate upgrade is not possible, upgrading the Python runtime to 3.12 or later mitigates the vulnerability at the stdlib level since Python 3.12 enforces path safety in tarfile extraction, though this may have compatibility implications for other dependencies and should be tested in staging first. As a compensating control, restrict Patool usage to trusted archive sources only and avoid processing archives from untrusted or user-supplied inputs until patched. Do not use Patool to extract archives in privileged directories or as a privileged user, as the blast radius of arbitrary file write scales directly with the privileges of the extracting process.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39879
GHSA-p95f-9f9h-wwvh