{"id":"CVE-2026-119291","kind":"vulnerability","aliases":["CVE-2026-119291"],"related":[],"title":"Zuke build tool: symlinks let setup overwrite files outside the project","description":"Zuke is a code-first, strongly typed build automation system for Deno. Prior to 1.4.0, @zuke/cli uses lstat to inspect scaffold names but then performs link-following reads, writes, and permission changes in zuke setup and zuke import. An attacker who supplies an untrusted cloned repository, template, or archive with a symbolic link at a scaffolded name can cause setup to overwrite a target outside the selected directory with the invoking user's permissions. The .gitignore path requires no flag, while --force permits a linked launcher target to be written and made executable; import can also read link-target content and incorporate it into the generated build file. This issue is fixed in version 1.4.0.","summary":"Zuke is a Deno build automation tool whose CLI checks scaffold names with lstat but then follows symbolic links when reading, writing and changing permissions during zuke setup and zuke import. A malicious cloned repository, template or archive containing a symlink can make the tool overwrite files outside the chosen directory and read link-target content into a generated build file, with the invoking user's permissions.","severity":"medium","cvss":5.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["build-tools","deno","package","zuke"],"not_affected_if":["does-not-use-zuke","only-trusted-input"],"how_to_check":"- Check whether the project depends on `@zuke/cli` and which version is installed, for example with `deno info` or the lockfile.\n- Look at whether `zuke setup` or `zuke import` has been run against untrusted repositories, templates or archives.","fix":"- `@zuke/cli`: move to `1.4.0`","status":"open","published_at":"2026-10-30T16:17:43+00:00","first_seen_at":"2026-10-30T16:31:25+00:00","triaged_at":"2026-10-30T16:32:24+00:00","updated_at":"2026-10-30T16:32:24+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T16:32:24Z","model":"claude-haiku-5-5","output":{"fix":"- `@zuke/cli`: move to `1.4.0`","reach":"local","title":"Zuke build tool: symlinks let setup overwrite files outside the project","impact":"medium","summary":"Zuke is a Deno build automation tool whose CLI checks scaffold names with lstat but then follows symbolic links when reading, writing and changing permissions during zuke setup and zuke import. A malicious cloned repository, template or archive containing a symlink can make the tool overwrite files outside the chosen directory and read link-target content into a generated build file, with the invoking user's permissions.","audience":"developers","category":"package","nicknames":[],"who_cares":["deno","zuke","build-tools"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"files outside the project get overwritten with user permissions","analyst_note":"","how_to_check":"- Check whether the project depends on `@zuke/cli` and which version is installed, for example with `deno info` or the lockfile.\n- Look at whether `zuke setup` or `zuke import` has been run against untrusted repositories, templates or archives.","plain_action":"","needs_analyst":false,"not_affected_if":["does-not-use-zuke","only-trusted-input"],"who_is_affected":"Teams that run the Zuke CLI (`@zuke/cli`) before version 1.4.0 on repositories, templates or archives they did not write. Exposure comes from running setup or import on untrusted input; projects that only use Zuke on code they control are less exposed. Teams that do not use Zuke can skip it.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000711,"input_tokens":4236,"output_tokens":575,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119291':14A,17A '-2026':13A,16A '1.4.0':107C,209C 'also':189C 'archiv':61B,142C 'attack':133C 'autom':29B,101C 'build':2A,19B,28B,84B,100C,201C 'build-tool':18B 'caus':152C 'chang':47B,125C 'check':33B 'chosen':73B 'cli':32B 'clone':57B,138C 'code':96C 'code-first':95C 'contain':62B 'content':80B,194C 'cve':12A,15A 'deno':21B,27B,104C 'directori':74B,161C 'execut':186C 'file':8A,70B,85B,202C 'first':97C 'fix':206C 'flag':173C 'follow':40B,120C 'forc':175C 'generat':83B,200C 'gitignor':169C 'import':54B,131C,187C 'incorpor':196C 'inspect':112C 'invok':88B,164C 'issu':204C 'launcher':179C 'let':5A 'link':42B,78B,119C,146C,178C,192C 'link-follow':118C 'link-target':77B,191C 'lstat':37B,110C 'made':185C 'make':66B 'malici':56B 'name':35B,114C,150C 'outsid':9A,71B,158C 'overwrit':7A,69B,155C 'packag':22B 'path':170C 'perform':117C 'permiss':48B,91B,124C,167C 'permit':176C 'prior':105C 'project':11A 'read':44B,76B,121C,190C 'repositori':58B,139C 'requir':171C 'scaffold':34B,113C,149C 'select':160C 'setup':6A,51B,128C,153C 'strong':98C 'suppli':135C 'symbol':41B,145C 'symlink':4A,64B 'system':102C 'target':79B,157C,180C,193C 'templat':59B,140C 'tool':3A,20B,30B,68B 'type':99C 'untrust':137C 'use':109C 'user':89B,165C 'version':208C 'whose':31B 'write':45B,122C 'written':183C 'zuke':1A,23B,24B,50B,53B,92C,127C,130C 'zuke/cli':108C","nicknames":[],"mitigations":[],"who_affected":"Teams that run the Zuke CLI (`@zuke/cli`) before version 1.4.0 on repositories, templates or archives they did not write. Exposure comes from running setup or import on untrusted input; projects that only use Zuke on code they control are less exposed. Teams that do not use Zuke can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-30T16:17:43+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119291","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119291","severity":null,"published_at":"2026-10-30T16:17:43+00:00","modified_at":"2026-10-30T16:17:43+00:00","first_seen_at":"2026-10-30T16:31:25+00:00","fetched_at":"2026-10-30T16:31:25+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"}