{"id":"CVE-2025-71437","kind":"vulnerability","aliases":["CVE-2025-71437"],"related":[],"title":"uv: malicious sdist writes files outside install directory via symlinks","description":"Astral uv before 0.8.22 contains a path traversal vulnerability in source distribution (sdist) tar extraction that allows a specially crafted sequence of symlinks to redirect file writes outside the intended extraction prefix. Attackers can publish a malicious sdist that, when installed by a victim, writes arbitrary files to filesystem locations outside the installation prefix.","summary":"Astral uv before 0.8.22 extracts source distribution tar files without blocking crafted symlink chains, so a malicious sdist can redirect writes outside the extraction prefix. An attacker who publishes a bad package gets arbitrary file writes on the machine of anyone who installs it.","severity":"high","cvss":8.7,"epss":0.00285,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ci","developer-machines","package","python","uv"],"not_affected_if":["no-sdist-installs","uv-0.8.22-or-later"],"how_to_check":"Run uv --version and check whether the version is below 0.8.22.","fix":"Upgrade uv to 0.8.22 or later.","status":"open","published_at":"2026-10-21T01:17:19+00:00","first_seen_at":"2026-10-23T21:57:27+00:00","triaged_at":"2026-10-23T22:37:02+00:00","updated_at":"2026-10-24T13:15:55+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-23T22:37:02Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade uv to 0.8.22 or later.","reach":"internet","title":"uv: malicious sdist writes files outside install directory via symlinks","impact":"high","summary":"Astral uv before 0.8.22 extracts source distribution tar files without blocking crafted symlink chains, so a malicious sdist can redirect writes outside the extraction prefix. An attacker who publishes a bad package gets arbitrary file writes on the machine of anyone who installs it.","category":"package","who_cares":["python","uv","ci","developer-machines"],"confidence":0.8,"needs_auth":"no","worst_case":"Attacker writes arbitrary files on the installing machine, possibly overwriting code or config.","analyst_note":"","how_to_check":"Run uv --version and check whether the version is below 0.8.22.","needs_analyst":false,"not_affected_if":["uv-0.8.22-or-later","no-sdist-installs"],"user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000474,"input_tokens":2939,"output_tokens":360,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2025':12A,15A '-71437':13A,16A '0.8.22':27B,70C 'allow':83C 'anyon':64B 'arbitrari':57B,112C 'astral':24B,67C 'attack':50B,99C 'bad':54B 'block':34B 'chain':37B 'ci':17B 'contain':71C 'craft':35B,86C 'cve':11A,14A 'develop':19B 'developer-machin':18B 'directori':8A 'distribut':30B,78C 'extract':28B,47B,81C,97C 'file':5A,32B,58B,92C,113C 'filesystem':115C 'get':56B 'instal':7A,66B,107C,119C 'intend':96C 'locat':116C 'machin':20B,62B 'malici':2A,40B,103C 'outsid':6A,45B,94C,117C 'packag':21B,55B 'path':73C 'prefix':48B,98C,120C 'publish':52B,101C 'python':22B 'redirect':43B,91C 'sdist':3A,41B,79C,104C 'sequenc':87C 'sourc':29B,77C 'special':85C 'symlink':10A,36B,89C 'tar':31B,80C 'travers':74C 'uv':1A,23B,25B,68C 'via':9A 'victim':110C 'vulner':75C 'without':33B 'write':4A,44B,59B,93C,111C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T01:17:19+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2025-71437","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-71437","severity":null,"published_at":"2026-10-21T01:17:19+00:00","modified_at":"2026-10-22T17:39:56+00:00","first_seen_at":"2026-10-23T21:57:27+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2025-71437","url":"https://api.first.org/data/v1/epss?cve=CVE-2025-71437","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:55+00:00","fetched_at":"2026-10-24T13:15:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}