{"id":"CVE-2026-119289","kind":"vulnerability","aliases":["CVE-2026-119289"],"related":[],"title":"Zuke: workflow gate can adopt a forged GitHub run and release","description":"Zuke is a code-first, strongly typed build automation system for Deno. Prior to 1.10.0, the @zuke/gh githubWorkflow(...) gate correlates a dispatched workflow run using only a display-title marker that is visible in the workflow run list and can be copied by another dispatcher. In configurations where the external workflow repository grants workflow_dispatch permission to a party not equally trusted by the releasing repository, an attacker can dispatch a run with the marker and cause the gate to adopt its conclusion without verifying the event, ref, or creation window. A passing substituted run can authorize an unvalidated release, while a failed or cancelled run can block a valid release, and the persisted adopted run ID preserves the substitution across build resume. This issue is fixed in version 1.10.0.","summary":"Zuke is a Deno build automation library whose @zuke/gh githubWorkflow gate matches a dispatched workflow run only by a display-title marker that anyone with dispatch permission can copy. An attacker who holds workflow_dispatch rights on the external workflow repository can have the gate accept their run's result, so an unvalidated release can pass or a valid release can be blocked.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["deno","github-actions","package","zuke"],"not_affected_if":["dispatch-limited-to-trusted-users","no-githubworkflow-gate"],"how_to_check":"- Look for `@zuke/gh` in `deno.json`, `deno.lock` or import statements and note the version.\n- Check whether any `githubWorkflow(...)` gate points at a workflow repository where people outside the releasing team hold workflow_dispatch permission.","fix":"- `@zuke/gh` (Zuke): move to `1.10.0` or later","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:07+00:00","updated_at":"2026-10-30T16:32:07+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-30T16:32:07Z","model":"claude-haiku-5-5","output":{"fix":"- `@zuke/gh` (Zuke): move to `1.10.0` or later","reach":"network","title":"Zuke: workflow gate can adopt a forged GitHub run and release","impact":"high","summary":"Zuke is a Deno build automation library whose @zuke/gh githubWorkflow gate matches a dispatched workflow run only by a display-title marker that anyone with dispatch permission can copy. An attacker who holds workflow_dispatch rights on the external workflow repository can have the gate accept their run's result, so an unvalidated release can pass or a valid release can be blocked.","audience":"developers","category":"package","nicknames":[],"who_cares":["deno","github-actions","zuke"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"unvalidated release authorized by a forged passing workflow run","analyst_note":"","how_to_check":"- Look for `@zuke/gh` in `deno.json`, `deno.lock` or import statements and note the version.\n- Check whether any `githubWorkflow(...)` gate points at a workflow repository where people outside the releasing team hold workflow_dispatch permission.","plain_action":"","needs_analyst":false,"not_affected_if":["no-githubworkflow-gate","dispatch-limited-to-trusted-users"],"who_is_affected":"Teams that use Zuke's @zuke/gh githubWorkflow gate to wait for a separate GitHub Actions workflow before releasing. The risk exists only when the workflow repository grants dispatch rights to someone the releasing repository does not fully trust. Projects that do not use the githubWorkflow gate, or whose dispatch permissions are limited to the same trusted group, are not exposed.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000742,"input_tokens":4270,"output_tokens":630,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-119289':14A,17A '-2026':13A,16A '1.10.0':103C,219C 'accept':70B 'across':210C 'action':21B 'adopt':5A,170C,204C 'anoth':133C 'anyon':48B 'attack':55B,157C 'author':186C 'autom':29B,97C 'block':87B,197C 'build':28B,96C,211C 'cancel':194C 'caus':166C 'code':92C 'code-first':91C 'conclus':172C 'configur':136C 'copi':53B,131C 'correl':108C 'creation':179C 'cve':12A,15A 'deno':18B,27B,100C 'dispatch':37B,50B,59B,110C,134C,144C,159C 'display':44B,117C 'display-titl':43B,116C 'equal':150C 'event':176C 'extern':63B,139C 'fail':192C 'first':93C 'fix':216C 'forg':7A 'gate':3A,34B,69B,107C,168C 'github':8A,20B 'github-act':19B 'githubworkflow':33B,106C 'grant':142C 'hold':57B 'id':206C 'issu':214C 'librari':30B 'list':127C 'marker':46B,119C,164C 'match':35B 'packag':22B 'parti':148C 'pass':80B,182C 'permiss':51B,145C 'persist':203C 'preserv':207C 'prior':101C 'ref':177C 'releas':11A,78B,84B,154C,189C,200C 'repositori':65B,141C,155C 'result':74B 'resum':212C 'right':60B 'run':9A,39B,72B,112C,126C,161C,184C,195C,205C 'strong':94C 'substitut':183C,209C 'system':98C 'titl':45B,118C 'trust':151C 'type':95C 'unvalid':77B,188C 'use':113C 'valid':83B,199C 'verifi':174C 'version':218C 'visibl':122C 'whose':31B 'window':180C 'without':173C 'workflow':2A,38B,58B,64B,111C,125C,140C,143C 'zuke':1A,23B,24B,88C 'zuke/gh':32B,105C","nicknames":[],"mitigations":[],"who_affected":"Teams that use Zuke's @zuke/gh githubWorkflow gate to wait for a separate GitHub Actions workflow before releasing. The risk exists only when the workflow repository grants dispatch rights to someone the releasing repository does not fully trust. Projects that do not use the githubWorkflow gate, or whose dispatch permissions are limited to the same trusted group, are not exposed.","tier":"B","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:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119289","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119289","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"}