{"id":"GHSA-crfj-5wv6-8v86","kind":"vulnerability","aliases":["GHSA-crfj-5wv6-8v86"],"related":[],"title":"SeaTable Trigger Node Stores the API Token in Failed Poll Execution Data","description":"## Impact\n\nThe SeaTable Trigger node requests a base access token with the credential's API token in an Authorization header. When that request failed during polling, the raw HTTP error, including the request headers, was saved in the error execution. A user who can view the workflow's executions, but cannot read the credential, can recover the API token and use it against the connected SeaTable base.\n\n## Patches\n\nThe issue has been fixed in n8n versions 1.123.85, 2.44.1, and 2.43.5. 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- Deactivate SeaTable poll-trigger workflows until the instance is patched.\n- Rotate any SeaTable API tokens used by poll-trigger workflows and audit recent execution records for unexpected token exposure.\n- Restrict execution read access to the minimum set of users who require it.\n\nThese workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.","summary":"The SeaTable Trigger node in n8n puts the credential's API token in an Authorization header, and a failed poll saves the raw HTTP error with those headers into execution data. A user who can view executions but cannot read the credential can recover the token and use it against the connected SeaTable base.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"n8n","fixed":[">= 1.123.85"],"affected":"< 1.123.85","ecosystem":"npm"},{"name":"n8n","fixed":[">= 2.44.1"],"affected":"< 2.44.1","ecosystem":"npm"},{"name":"n8n","fixed":[">= 2.43.5"],"affected":"< 2.43.5","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["ai-tooling","n8n","seatable","self-hosted"],"not_affected_if":["managed-hosting-patched","no-seatable-trigger"],"how_to_check":"- Check the installed n8n version with `n8n --version` or the `n8n` entry in `package.json`, and compare it to the fixed versions.\n- Look for workflows that use the SeaTable Trigger node and review their failed execution records for stored request headers.","fix":"- n8n `1.123.85`\n- n8n `2.43.5`\n- n8n `2.44.1`","status":"open","published_at":"2026-10-14T09:44:00+00:00","first_seen_at":"2026-11-09T22:53:26+00:00","triaged_at":"2026-11-09T22:56:49+00:00","updated_at":"2026-11-09T22:56:49+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-11-09T22:56:49Z","model":"claude-haiku-5-5","output":{"fix":"- n8n `1.123.85`\n- n8n `2.43.5`\n- n8n `2.44.1`","reach":"network","title":"n8n: SeaTable trigger leaks API token into failed poll execution logs","impact":"medium","summary":"The SeaTable Trigger node in n8n puts the credential's API token in an Authorization header, and a failed poll saves the raw HTTP error with those headers into execution data. A user who can view executions but cannot read the credential can recover the token and use it against the connected SeaTable base.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["n8n","seatable","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"SeaTable API token readable by execution viewers, enabling base access","analyst_note":"","how_to_check":"- Check the installed n8n version with `n8n --version` or the `n8n` entry in `package.json`, and compare it to the fixed versions.\n- Look for workflows that use the SeaTable Trigger node and review their failed execution records for stored request headers.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-seatable-trigger","managed-hosting-patched"],"who_is_affected":"Teams running self-hosted or managed n8n that have workflows using the SeaTable Trigger node with poll-based triggers. Exposure needs a user who can view executions but not read the credential; instances with only fully trusted users, or without SeaTable poll workflows, are less exposed.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000778,"input_tokens":4940,"output_tokens":568,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'1.123.85':164C '2.43.5':167C '2.44.1':165C '5wv6':16A,21A '8v86':17A,22A 'access':96C,199C,239C 'administr':189C 'ai':27B 'ai-tool':26B 'api':6A,44B,102C,145C,219C 'audit':228C 'author':48B,106C 'base':87B,95C,154C 'cannot':72B,138C 'connect':85B,152C 'consid':191C 'credenti':42B,75B,100C,141C 'crfj':15A,20A 'data':12A,64B 'deactiv':205C 'error':58B,117C,126C 'execut':11A,63B,70B,127C,136C,230C,237C 'exposur':235C 'fail':9A,52B,111C 'fix':160C 'follow':193C 'fulli':201C,253C 'ghsa':14A,19A 'ghsa-crfj-5wv6-8v86':13A,18A 'header':49B,61B,107C,121C 'host':33B 'http':57B,116C 'immedi':187C 'impact':88C 'includ':118C 'instanc':198C,213C 'issu':157C 'later':177C 'measur':267C 'minimum':242C 'mitig':195C,266C 'n8n':23A,24A,25A,29B,39B,162C,197C 'node':3A,37B,92C 'one':172C 'patch':155C,215C 'poll':10A,53B,113C,208C,224C 'poll-trigg':207C,223C 'possibl':188C 'put':40B 'raw':56B,115C 'read':73B,139C,238C 'recent':229C 'record':231C 'recov':77B,143C 'remedi':179C,254C 'request':93C,110C,120C 'requir':247C 'restrict':196C,236C 'risk':256C 'rotat':216C 'save':54B,123C 'seatabl':1A,30B,35B,86B,90C,153C,206C,218C 'self':32B 'self-host':31B 'set':243C 'short':264C 'short-term':263C 'store':4A 'temporari':194C 'term':265C 'token':7A,45B,79B,97C,103C,146C,220C,234C 'tool':28B 'trigger':2A,36B,91C,209C,225C 'trust':202C 'unexpect':233C 'upgrad':170C,184C 'use':81B,148C,221C,261C 'user':66B,129C,168C,203C,245C 'version':163C,175C 'view':69B,132C 'vulner':181C 'workaround':182C,250C 'workflow':134C,210C,226C","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted or managed n8n that have workflows using the SeaTable Trigger node with poll-based triggers. Exposure needs a user who can view executions but not read the credential; instances with only fully trusted users, or without SeaTable poll workflows, are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["n8n"],"ptokens":["n8n"],"labels":["aitooling","medium","n8n","npm","seatable","selfhosted"],"campaign_type":null,"search_a":"'5wv6':16A,21A '8v86':17A,22A 'api':6A 'crfj':15A,20A 'data':12A 'execut':11A 'fail':9A 'ghsa':14A,19A 'ghsa-crfj-5wv6-8v86':13A,18A 'n8n':23A,24A,25A 'node':3A 'poll':10A 'seatabl':1A 'store':4A 'token':7A 'trigger':2A","search_b":"'ai':27B 'ai-tool':26B 'api':44B 'author':48B 'base':87B 'cannot':72B 'connect':85B 'credenti':42B,75B 'data':64B 'error':58B 'execut':63B,70B 'fail':52B 'header':49B,61B 'host':33B 'http':57B 'n8n':29B,39B 'node':37B 'poll':53B 'put':40B 'raw':56B 'read':73B 'recov':77B 'save':54B 'seatabl':30B,35B,86B 'self':32B 'self-host':31B 'token':45B,79B 'tool':28B 'trigger':36B 'use':81B 'user':66B 'view':69B","search_c":"'1.123.85':164C '2.43.5':167C '2.44.1':165C 'access':96C,199C,239C 'administr':189C 'api':102C,145C,219C 'audit':228C 'author':106C 'base':95C,154C 'cannot':138C 'connect':152C 'consid':191C 'credenti':100C,141C 'deactiv':205C 'error':117C,126C 'execut':127C,136C,230C,237C 'exposur':235C 'fail':111C 'fix':160C 'follow':193C 'fulli':201C,253C 'header':107C,121C 'http':116C 'immedi':187C 'impact':88C 'includ':118C 'instanc':198C,213C 'issu':157C 'later':177C 'measur':267C 'minimum':242C 'mitig':195C,266C 'n8n':162C,197C 'node':92C 'one':172C 'patch':155C,215C 'poll':113C,208C,224C 'poll-trigg':207C,223C 'possibl':188C 'raw':115C 'read':139C,238C 'recent':229C 'record':231C 'recov':143C 'remedi':179C,254C 'request':93C,110C,120C 'requir':247C 'restrict':196C,236C 'risk':256C 'rotat':216C 'save':123C 'seatabl':90C,153C,206C,218C 'set':243C 'short':264C 'short-term':263C 'temporari':194C 'term':265C 'token':97C,103C,146C,220C,234C 'trigger':91C,209C,225C 'trust':202C 'unexpect':233C 'upgrad':170C,184C 'use':148C,221C,261C 'user':129C,168C,203C,245C 'version':163C,175C 'view':132C 'vulner':181C 'workaround':182C,250C 'workflow':134C,210C,226C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-14T09:44:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa-repo","external_id":"GHSA-crfj-5wv6-8v86","url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-crfj-5wv6-8v86","severity":"medium","published_at":"2026-10-14T09:44:00+00:00","modified_at":"2026-10-14T09:44:00+00:00","first_seen_at":"2026-11-09T22:53:26+00:00","fetched_at":"2026-11-09T22:53:26+00:00","note":null}],"documents":[{"id":48850,"url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-crfj-5wv6-8v86","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-14T09:44:00+00:00","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"}