{"id":"CVE-2026-124584","kind":"vulnerability","aliases":["CVE-2026-124584"],"related":[],"title":"patool: gzip extraction follows symlinks, enabling local file writes","description":"A vulnerability has been found in wummel patool 4.1.0. This vulnerability affects the function extract_gzip of the file patoolib/fileutil.py of the component Gzip Extraction Handler. The manipulation leads to symlink following. Local access is required to approach this attack. The researcher claims to have submitted a GHSA on the repository of the project.","summary":"patool 4.1.0, a Python archive extraction tool, follows symlinks in the extract_gzip function of patoolib/fileutil.py. A local attacker can use a crafted gzip archive to make extraction touch files outside the intended directory.","severity":"medium","cvss":4.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","patool","python"],"not_affected_if":["different-version","no-untrusted-archives"],"how_to_check":"- Check the installed version with `pip show patool` and see whether it is `4.1.0`.\n- Look for calls to patool extraction of untrusted .gz archives in your scripts or CI jobs.","fix":null,"status":"open","published_at":"2026-11-09T09:16:59+00:00","first_seen_at":"2026-11-09T09:25:32+00:00","triaged_at":"2026-11-09T09:26:18+00:00","updated_at":"2026-11-09T09:26:18+00:00","category":"package","confidence":0.5,"triage":{"at":"2026-11-09T09:26:18Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"patool: gzip extraction follows symlinks, enabling local file writes","impact":"medium","summary":"patool 4.1.0, a Python archive extraction tool, follows symlinks in the extract_gzip function of patoolib/fileutil.py. A local attacker can use a crafted gzip archive to make extraction touch files outside the intended directory.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","patool"],"confidence":0.5,"fix_status":"unknown","needs_auth":"unknown","worst_case":"extraction writes files outside the target directory via symlinks","analyst_note":"Confirm the fixed version and whether a GHSA advisory from the project exists; the vendor advisory link is not in the provided sources.","how_to_check":"- Check the installed version with `pip show patool` and see whether it is `4.1.0`.\n- Look for calls to patool extraction of untrusted .gz archives in your scripts or CI jobs.","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["no-untrusted-archives","different-version"],"who_is_affected":"Teams that run patool 4.1.0 to extract gzip archives, especially from untrusted sources. The attack needs local access to supply or place the archive, so a server that only extracts trusted, internally built archives is lower risk. unknown whether other versions are affected.","user_interaction":"unknown","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000724,"input_tokens":4568,"output_tokens":535,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-124584':12A,15A '-2026':11A,14A '4.1.0':20B,61C 'access':86C 'affect':64C 'approach':90C 'archiv':23B,43B 'attack':37B,92C 'claim':95C 'compon':75C 'craft':41B 'cve':10A,13A 'directori':52B 'enabl':6A 'extract':3A,24B,30B,46B,67C,77C 'file':8A,48B,71C 'follow':4A,26B,84C 'found':57C 'function':32B,66C 'ghsa':100C 'gzip':2A,31B,42B,68C,76C 'handler':78C 'intend':51B 'lead':81C 'local':7A,36B,85C 'make':45B 'manipul':80C 'outsid':49B 'packag':16B 'patool':1A,17B,19B,60C 'patoolib/fileutil.py':34B,72C 'project':106C 'python':18B,22B 'repositori':103C 'requir':88C 'research':94C 'submit':98C 'symlink':5A,27B,83C 'tool':25B 'touch':47B 'use':39B 'vulner':54C,63C 'write':9A 'wummel':59C","nicknames":[],"mitigations":[],"who_affected":"Teams that run patool 4.1.0 to extract gzip archives, especially from untrusted sources. The attack needs local access to supply or place the archive, so a server that only extracts trusted, internally built archives is lower risk. unknown whether other versions are affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","package","patool","python"],"campaign_type":null,"search_a":"'-124584':12A,15A '-2026':11A,14A 'cve':10A,13A 'enabl':6A 'extract':3A 'file':8A 'follow':4A 'gzip':2A 'local':7A 'patool':1A 'symlink':5A 'write':9A","search_b":"'4.1.0':20B 'archiv':23B,43B 'attack':37B 'craft':41B 'directori':52B 'extract':24B,30B,46B 'file':48B 'follow':26B 'function':32B 'gzip':31B,42B 'intend':51B 'local':36B 'make':45B 'outsid':49B 'packag':16B 'patool':17B,19B 'patoolib/fileutil.py':34B 'python':18B,22B 'symlink':27B 'tool':25B 'touch':47B 'use':39B","search_c":"'4.1.0':61C 'access':86C 'affect':64C 'approach':90C 'attack':92C 'claim':95C 'compon':75C 'extract':67C,77C 'file':71C 'follow':84C 'found':57C 'function':66C 'ghsa':100C 'gzip':68C,76C 'handler':78C 'lead':81C 'local':85C 'manipul':80C 'patool':60C 'patoolib/fileutil.py':72C 'project':106C 'repositori':103C 'requir':88C 'research':94C 'submit':98C 'symlink':83C 'vulner':54C,63C 'wummel':59C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T09:16:59+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/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","cvss_by":"cna@vuldb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-124584","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124584","severity":null,"published_at":"2026-11-09T09:16:59+00:00","modified_at":"2026-11-09T09:16:59+00:00","first_seen_at":"2026-11-09T09:25:32+00:00","fetched_at":"2026-11-09T09:25:32+00:00","note":null}],"documents":[{"id":106702,"url":"https://github.com/wummel/patool/security/advisories/GHSA-p24m-wf3f-3mf5","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}