{"id":"CVE-2025-71459","kind":"vulnerability","aliases":["CVE-2025-71459"],"related":[],"title":"Zipline: authenticated uploaders can write files outside the upload directory","description":"Zipline through 4.3.2 contains a path traversal vulnerability that allows authenticated uploaders to write files outside the upload directory by supplying traversal sequences in the x-zipline-filename header. Attackers using the local datasource can create or overwrite files writable by the Zipline process, corrupting application data or disrupting service.","summary":"Zipline through 4.3.2 lets an authenticated uploader use traversal sequences in the x-zipline-filename header to write files outside the upload directory. An attacker with an upload account can create or overwrite files the Zipline process can write, corrupting data or disrupting the service.","severity":"high","cvss":8.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"zipline","fixed":["4.4.0"],"affected":"<= 4.3.2","ecosystem":"npm"}],"ecosystems":[],"tags":["npm","other","self-hosted","zipline"],"not_affected_if":["no-untrusted-uploaders","non-local-datasource","upload-disabled","v4.4.0-or-later"],"how_to_check":"- Check the Zipline version; versions <= 4.3.2 are affected, v4.4.0 or later contains the fix.\n- Check that your datasource is set to local; the advisory requires the local datasource.\n- Check who has upload access (any authenticated uploader can exploit it) and which files the Zipline process can write.","fix":"Upgrade Zipline to v4.4.0 or later (sanitizes upload filenames and adds containment checks in local storage operations).","status":"open","published_at":"2026-11-13T10:17:23+00:00","first_seen_at":"2026-11-13T10:47:09+00:00","triaged_at":"2026-11-13T10:52:27+00:00","updated_at":"2026-11-13T10:54:18+00:00","category":"other","confidence":0.8,"triage":{"at":"2026-11-13T10:52:27Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"Zipline: authenticated uploaders can write files outside the upload directory","impact":"medium","summary":"Zipline through 4.3.2 lets an authenticated uploader use traversal sequences in the x-zipline-filename header to write files outside the upload directory. An attacker with an upload account can create or overwrite files the Zipline process can write, corrupting data or disrupting the service.","audience":"businesses","category":"other","nicknames":[],"who_cares":["zipline","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Attacker overwrites server files, corrupting app data or disrupting service","analyst_note":"Read the GitHub vendor advisory and VulnCheck advisory to find the fixed version and whether non-local datasources are affected.","how_to_check":"- Check the Zipline version in use; affected versions are those through `4.3.2`.\n- Check whether the datasource is set to local, since the description ties the write path to the local datasource.","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["upload-disabled","no-untrusted-uploaders"],"who_is_affected":"Teams that self-host Zipline with user upload accounts and a local datasource are the exposed case, per the description. Instances where only trusted operators can upload, or that use a non-local datasource, are likely less exposed, but the sources do not state this. The vendor advisory and third-party advisory linked from the signal may give the fixed version.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000738,"input_tokens":4601,"output_tokens":556,"severity_before":"high"},"analyst_status":"done","analyst_note":"Read the GitHub vendor advisory and VulnCheck advisory to find the fixed version and whether non-local datasources are affected.","search":"'-2025':12A,15A '-71459':13A,16A '4.3.2':26B,72C 'account':53B 'allow':79C 'applic':116C 'attack':49B,100C 'authent':2A,29B,80C 'contain':73C 'corrupt':64B,115C 'creat':55B,106C 'cve':11A,14A 'data':65B,117C 'datasourc':104C 'directori':10A,47B,88C 'disrupt':67B,119C 'file':6A,43B,58B,84C,109C 'filenam':39B,98C 'header':40B,99C 'host':22B 'let':27B 'local':103C 'npm':18B 'outsid':7A,44B,85C 'overwrit':57B,108C 'path':75C 'process':61B,114C 'self':21B 'self-host':20B 'sequenc':33B,92C 'servic':69B,120C 'suppli':90C 'travers':32B,76C,91C 'upload':3A,9A,30B,46B,52B,81C,87C 'use':31B,101C 'vulner':77C 'writabl':110C 'write':5A,42B,63B,83C 'x':37B,96C 'x-zipline-filenam':36B,95C 'ziplin':1A,23B,24B,38B,60B,70C,97C,113C 'zipline':17A","nicknames":[],"mitigations":[],"who_affected":"Self-hosted Zipline instances up to 4.3.2 that use the local datasource and give accounts upload access are exposed: an authenticated uploader can set a traversal path in the x-zipline-filename header and create or overwrite files outside the upload directory that the Zipline process can write. It does not give root, and code execution is only a possible follow-on if a file that later gets loaded is overwritten. Instances with no untrusted uploaders, or without the local datasource, can skip it.","tier":"B","verified":{"fix":{"at":"2026-11-13T10:54:18Z","by":"analyst","doc":"https://github.com/diced/zipline/security/advisories/GHSA-4jm6-mgwv-fq63","run_id":3869},"products":{"at":"2026-11-13T10:54:18Z","by":"analyst","doc":"https://github.com/diced/zipline/security/advisories/GHSA-4jm6-mgwv-fq63","run_id":3869},"how_to_check":{"at":"2026-11-13T10:54:18Z","by":"analyst","doc":"https://github.com/diced/zipline/security/advisories/GHSA-4jm6-mgwv-fq63","run_id":3869},"who_affected":{"at":"2026-11-13T10:54:18Z","by":"analyst","doc":"https://github.com/diced/zipline/security/advisories/GHSA-4jm6-mgwv-fq63","run_id":3869}},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["zipline"],"ptokens":["zipline"],"labels":["high","npm","other","selfhosted","zipline"],"campaign_type":null,"search_a":"'-2025':12A,15A '-71459':13A,16A 'authent':2A 'cve':11A,14A 'directori':10A 'file':6A 'outsid':7A 'upload':3A,9A 'write':5A 'ziplin':1A 'zipline':17A","search_b":"'4.3.2':26B 'account':53B 'attack':49B 'authent':29B 'corrupt':64B 'creat':55B 'data':65B 'directori':47B 'disrupt':67B 'file':43B,58B 'filenam':39B 'header':40B 'host':22B 'let':27B 'npm':18B 'outsid':44B 'overwrit':57B 'process':61B 'self':21B 'self-host':20B 'sequenc':33B 'servic':69B 'travers':32B 'upload':30B,46B,52B 'use':31B 'write':42B,63B 'x':37B 'x-zipline-filenam':36B 'ziplin':23B,24B,38B,60B","search_c":"'4.3.2':72C 'allow':79C 'applic':116C 'attack':100C 'authent':80C 'contain':73C 'corrupt':115C 'creat':106C 'data':117C 'datasourc':104C 'directori':88C 'disrupt':119C 'file':84C,109C 'filenam':98C 'header':99C 'local':103C 'outsid':85C 'overwrit':108C 'path':75C 'process':114C 'sequenc':92C 'servic':120C 'suppli':90C 'travers':76C,91C 'upload':81C,87C 'use':101C 'vulner':77C 'writabl':110C 'write':83C 'x':96C 'x-zipline-filenam':95C 'ziplin':70C,97C,113C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2025-12-15T20:43:07+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/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-71459","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-71459","severity":null,"published_at":"2026-11-13T10:17:23+00:00","modified_at":"2026-11-13T10:17:23+00:00","first_seen_at":"2026-11-13T10:47:09+00:00","fetched_at":"2026-11-13T10:47:09+00:00","note":null},{"source":"analyst","external_id":"CVE-2025-71459:3869","url":null,"severity":null,"published_at":"2026-11-13T10:54:18+00:00","modified_at":"2026-11-13T10:54:18+00:00","first_seen_at":"2026-11-13T10:54:18+00:00","fetched_at":"2026-11-13T10:54:18+00:00","note":"Read GHSA-4jm6-mgwv-fq63: affected <=4.3.2 (first affected v4 not established); fix text says containment fix first present in v4.4.0, though the patched-versions field says None; needs upload access + local datasource. No PoC link or exploitation reported."}],"documents":[{"id":144846,"url":"https://github.com/diced/zipline/security/advisories/GHSA-4jm6-mgwv-fq63","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2025-12-15T20:43:07+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":144847,"url":"https://www.vulncheck.com/advisories/zipline-through-4.3.2-path-traversal-via-x-zipline-filename-header","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.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"}