{"id":"GHSA-h59h-rf6m-7jp5","kind":"vulnerability","aliases":["GHSA-h59h-rf6m-7jp5"],"related":[],"title":"Workflow Activation Allows Trigger Nodes to Use Credentials the Publisher Cannot Access","description":"## Impact\n\nWhen a workflow was activated, n8n registered its trigger nodes with the connected services using the credentials set on those nodes. Activation did not check that the user publishing the workflow had access to those credentials. A member who knew the ID of another user's credential could activate a workflow whose trigger used it. n8n then created or deleted webhooks on the connected service with that credential's privileges, and delivered events from resources the member chose to the member's workflow.\n\n## Patches\n\nThe issue has been fixed in n8n versions 1.123.96, 2.47.6, 2.48.3 and 3.2.2. Users should upgrade to one of these versions or later to remediate the vulnerability.\n\n## Workarounds\n\nIf upgrading is not immediately possible, administrators should consider the following temporary mitigations:\n- Restrict n8n instance access to fully trusted users only.\n- Audit active workflows for trigger nodes that use credentials owned by another user, and deactivate any that are not expected.\n- Review the webhooks registered on connected services such as GitLab and GitHub, and remove any that are not expected.\n\nThese workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.","summary":"When a workflow is activated, n8n registers its trigger nodes using the credentials set on them without checking the publisher may use those credentials. A member who knows another user's credential ID can activate a workflow that uses it, so n8n creates or deletes webhooks on the connected service with that credential's privileges and receives events from resources the member chooses.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"n8n","fixed":["1.123.96"],"affected":"< 1.123.96","ecosystem":"npm"},{"name":"n8n","fixed":["3.2.2"],"affected":"< 3.2.2","ecosystem":"npm"},{"name":"n8n","fixed":["2.48.3"],"affected":"< 2.48.3","ecosystem":"npm"},{"name":"n8n","fixed":["2.47.6"],"affected":"< 2.47.6","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["ai-tooling","github","gitlab","n8n","self-hosted","webhooks"],"not_affected_if":["single-user","trusted-users-only"],"how_to_check":"- Audit active workflows for trigger nodes that use credentials owned by another user.\n- Review webhooks registered on connected services such as GitLab and GitHub for unexpected entries.\n- Check the installed n8n version against the fixed versions.","fix":"- `n8n` 1.123.96\n- `n8n` 2.47.6\n- `n8n` 2.48.3\n- `n8n` 3.2.2","status":"open","published_at":"2026-11-13T10:56:14+00:00","first_seen_at":"2026-11-13T11:06:24+00:00","triaged_at":"2026-11-13T11:06:57+00:00","updated_at":"2026-11-13T11:06:57+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-11-13T11:06:57Z","model":"claude-haiku-5-5","output":{"fix":"- `n8n` 1.123.96\n- `n8n` 2.47.6\n- `n8n` 2.48.3\n- `n8n` 3.2.2","reach":"network","title":"n8n: workflow activation lets members use other users' trigger credentials","impact":"medium","summary":"When a workflow is activated, n8n registers its trigger nodes using the credentials set on them without checking the publisher may use those credentials. A member who knows another user's credential ID can activate a workflow that uses it, so n8n creates or deletes webhooks on the connected service with that credential's privileges and receives events from resources the member chooses.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["n8n","self-hosted","gitlab","github","webhooks"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"attacker creates or deletes webhooks using another user's credential privileges","analyst_note":"","how_to_check":"- Audit active workflows for trigger nodes that use credentials owned by another user.\n- Review webhooks registered on connected services such as GitLab and GitHub for unexpected entries.\n- Check the installed n8n version against the fixed versions.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["single-user","trusted-users-only"],"who_is_affected":"Self-hosted or cloud n8n instances where more than one user can create or activate workflows and where trigger nodes use credentials owned by other users. A member with access to the instance can exploit it by knowing another user's credential ID. Single-user instances, or instances where only fully trusted users can access n8n, face much lower risk.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"unknown"},"cost_usd":0.000802,"input_tokens":4989,"output_tokens":606,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'1.123.96':193C '2.47.6':194C '2.48.3':195C '3.2.2':197C '7jp5':17A,22A 'access':12A,133C,229C 'activ':2A,41B,71B,105C,122C,149C,236C 'administr':219C 'ai':28B 'ai-tool':27B 'allow':3A 'anoth':65B,144C,246C 'audit':235C 'cannot':11A 'check':54B,125C 'choos':99B 'chose':178C 'connect':85B,113C,164C,260C 'consid':221C 'could':148C 'creat':79B,158C 'credenti':8A,49B,60B,68B,89B,117C,136C,147C,168C,243C 'deactiv':249C 'delet':81B,160C 'deliv':172C 'event':94B,173C 'expect':254C,273C 'fix':189C 'follow':223C 'fulli':231C,278C 'ghsa':14A,19A 'ghsa-h59h-rf6m-7jp5':13A,18A 'github':30B,266C 'gitlab':31B,264C 'h59h':15A,20A 'host':35B 'id':69B,142C 'immedi':217C 'impact':100C 'instanc':228C 'issu':186C 'knew':140C 'know':64B 'later':207C 'may':57B 'measur':292C 'member':62B,98B,138C,177C,181C 'mitig':225C,291C 'n8n':23A,24A,25A,26A,32B,42B,78B,106C,156C,191C,227C 'node':5A,46B,110C,121C,240C 'one':202C 'own':244C 'patch':184C 'possibl':218C 'privileg':91B,170C 'publish':10A,56B,129C 'receiv':93B 'regist':43B,107C,258C 'remedi':209C,279C 'remov':268C 'resourc':96B,175C 'restrict':226C 'review':255C 'rf6m':16A,21A 'risk':281C 'self':34B 'self-host':33B 'servic':86B,114C,165C,261C 'set':50B,118C 'short':289C 'short-term':288C 'temporari':224C 'term':290C 'tool':29B 'trigger':4A,45B,109C,153C,239C 'trust':232C 'upgrad':200C,214C 'use':7A,47B,58B,75B,115C,154C,242C,286C 'user':66B,128C,145C,198C,233C,247C 'version':192C,205C 'vulner':211C 'webhook':36B,82B,161C,257C 'whose':152C 'without':53B 'workaround':212C,275C 'workflow':1A,39B,73B,103C,131C,151C,183C,237C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted or cloud n8n instances where more than one user can create or activate workflows and where trigger nodes use credentials owned by other users. A member with access to the instance can exploit it by knowing another user's credential ID. Single-user instances, or instances where only fully trusted users can access n8n, face much lower risk.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["n8n"],"ptokens":["n8n"],"labels":["aitooling","github","gitlab","medium","n8n","npm","selfhosted","webhooks"],"campaign_type":null,"search_a":"'7jp5':17A,22A 'access':12A 'activ':2A 'allow':3A 'cannot':11A 'credenti':8A 'ghsa':14A,19A 'ghsa-h59h-rf6m-7jp5':13A,18A 'h59h':15A,20A 'n8n':23A,24A,25A,26A 'node':5A 'publish':10A 'rf6m':16A,21A 'trigger':4A 'use':7A 'workflow':1A","search_b":"'activ':41B,71B 'ai':28B 'ai-tool':27B 'anoth':65B 'check':54B 'choos':99B 'connect':85B 'creat':79B 'credenti':49B,60B,68B,89B 'delet':81B 'event':94B 'github':30B 'gitlab':31B 'host':35B 'id':69B 'know':64B 'may':57B 'member':62B,98B 'n8n':32B,42B,78B 'node':46B 'privileg':91B 'publish':56B 'receiv':93B 'regist':43B 'resourc':96B 'self':34B 'self-host':33B 'servic':86B 'set':50B 'tool':29B 'trigger':45B 'use':47B,58B,75B 'user':66B 'webhook':36B,82B 'without':53B 'workflow':39B,73B","search_c":"'1.123.96':193C '2.47.6':194C '2.48.3':195C '3.2.2':197C 'access':133C,229C 'activ':105C,122C,149C,236C 'administr':219C 'anoth':144C,246C 'audit':235C 'check':125C 'chose':178C 'connect':113C,164C,260C 'consid':221C 'could':148C 'creat':158C 'credenti':117C,136C,147C,168C,243C 'deactiv':249C 'delet':160C 'deliv':172C 'event':173C 'expect':254C,273C 'fix':189C 'follow':223C 'fulli':231C,278C 'github':266C 'gitlab':264C 'id':142C 'immedi':217C 'impact':100C 'instanc':228C 'issu':186C 'knew':140C 'later':207C 'measur':292C 'member':138C,177C,181C 'mitig':225C,291C 'n8n':106C,156C,191C,227C 'node':110C,121C,240C 'one':202C 'own':244C 'patch':184C 'possibl':218C 'privileg':170C 'publish':129C 'regist':107C,258C 'remedi':209C,279C 'remov':268C 'resourc':175C 'restrict':226C 'review':255C 'risk':281C 'servic':114C,165C,261C 'set':118C 'short':289C 'short-term':288C 'temporari':224C 'term':290C 'trigger':109C,153C,239C 'trust':232C 'upgrad':200C,214C 'use':115C,154C,242C,286C 'user':128C,145C,198C,233C,247C 'version':192C,205C 'vulner':211C 'webhook':161C,257C 'whose':152C 'workaround':212C,275C 'workflow':103C,131C,151C,183C,237C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-13T10:56:14+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa-repo","external_id":"GHSA-h59h-rf6m-7jp5","url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-h59h-rf6m-7jp5","severity":"medium","published_at":"2026-11-13T10:56:14+00:00","modified_at":"2026-11-13T10:56:14+00:00","first_seen_at":"2026-11-13T11:06:24+00:00","fetched_at":"2026-11-13T11:51:50+00:00","note":null}],"documents":[{"id":145545,"url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-h59h-rf6m-7jp5","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa-repo","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's 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"}