{"id":"GHSA-mgpr-56r4-5c67","kind":"vulnerability","aliases":["GHSA-mgpr-56r4-5c67"],"related":[],"title":"OData $filter Injection in Microsoft Outlook and SharePoint v1 Nodes","description":"## Impact\r\n\r\nThe Microsoft Outlook contact lookup and the Microsoft SharePoint v1 item update build an OData $filter string literal from an expression-bindable parameter without escaping it. A single quote in the value closes the literal and rewrites the query. Where a workflow binds untrusted input into those fields, the Outlook lookup returns the bound mailbox's entire contact list instead of one contact, and the SharePoint pre-write lookup can be redirected so the node writes the submitted field values onto a list item the workflow never intended, both within the scope of the stored credential.\r\n\r\n## Patches\r\n\r\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.\r\n\r\n## Workarounds\r\n\r\nIf upgrading is not immediately possible, administrators should consider the following temporary mitigations:\r\n- Restrict n8n instance access to fully trusted users only.\r\n- Audit active workflows that use the Microsoft Outlook contact `getAll` operation or the Microsoft SharePoint v1 item update/upsert operation and remove any bindings that pass untrusted external data into the affected parameters.\r\n- Apply network-level controls to restrict access to webhook endpoints that feed into these workflows.\r\n- Deactivate affected workflows until the instance is patched.\r\n\r\nThese workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.","summary":"Unescaped input in the Microsoft Outlook contact lookup and SharePoint v1 item update nodes lets a crafted value rewrite the OData query. An attacker who can feed data into those workflow fields can list a mailbox's full contact list or make the node write field values onto an unintended SharePoint list item, within the stored credential's scope.","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","microsoft-outlook","n8n","self-hosted","sharepoint"],"not_affected_if":["no-outlook-or-sharepoint-v1-nodes","trusted-input-only"],"how_to_check":"- Check the n8n version with `n8n --version` or in the instance settings, and compare it to the fixed versions.\n- Search active workflows for the Microsoft Outlook contact `getAll` operation and the Microsoft SharePoint v1 item update or upsert operation.\n- Check whether untrusted external data, such as webhook input, is bound into those node parameters.","fix":"- n8n `1.123.85`\n- n8n `2.43.5`\n- n8n `2.44.1`","status":"open","published_at":"2026-10-14T09:44:47+00:00","first_seen_at":"2026-11-09T22:53:26+00:00","triaged_at":"2026-11-09T22:56:56+00:00","updated_at":"2026-11-09T22:56:56+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-11-09T22:56:56Z","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: OData filter injection in Outlook and SharePoint nodes exposes contacts and writes","impact":"medium","summary":"Unescaped input in the Microsoft Outlook contact lookup and SharePoint v1 item update nodes lets a crafted value rewrite the OData query. An attacker who can feed data into those workflow fields can list a mailbox's full contact list or make the node write field values onto an unintended SharePoint list item, within the stored credential's scope.","audience":"developers","category":"ai-tooling","nicknames":[],"who_cares":["n8n","self-hosted","microsoft-outlook","sharepoint"],"confidence":0.8,"fix_status":"available","needs_auth":"unknown","worst_case":"Mailbox contacts exposed and SharePoint list items overwritten within credential scope","analyst_note":"","how_to_check":"- Check the n8n version with `n8n --version` or in the instance settings, and compare it to the fixed versions.\n- Search active workflows for the Microsoft Outlook contact `getAll` operation and the Microsoft SharePoint v1 item update or upsert operation.\n- Check whether untrusted external data, such as webhook input, is bound into those node parameters.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-outlook-or-sharepoint-v1-nodes","trusted-input-only"],"who_is_affected":"Teams running self-hosted or cloud n8n that use the Microsoft Outlook contact lookup or the SharePoint v1 item update/upsert node with workflow input from untrusted sources bound into those fields. Workflows that do not use these nodes, or that only bind trusted values, are not exposed to the injection path.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000849,"input_tokens":5049,"output_tokens":688,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'1.123.85':202C '2.43.5':205C '2.44.1':203C '56r4':14A,19A '5c67':15A,20A 'access':237C,282C 'activ':244C 'administr':227C 'affect':273C,292C 'ai':25B 'ai-tool':24B 'appli':275C 'attack':58B 'audit':243C 'bind':138C,265C 'bindabl':117C 'bound':149C 'build':107C 'close':128C 'consid':229C 'contact':41B,73B,98C,153C,158C,251C 'control':279C 'craft':51B 'credenti':91B,192C 'data':62B,270C 'deactiv':291C 'endpoint':285C 'entir':152C 'escap':120C 'express':116C 'expression-bind':115C 'extern':269C 'feed':61B,287C 'field':66B,80B,143C,175C 'filter':2A,110C 'fix':198C 'follow':231C 'full':72B 'fulli':239C,303C 'getal':252C 'ghsa':12A,17A 'ghsa-mgpr-56r4-5c67':11A,16A 'host':33B 'immedi':225C 'impact':94C 'inject':3A 'input':36B,140C 'instanc':236C,296C 'instead':155C 'intend':184C 'issu':195C 'item':46B,87B,105C,180C,259C 'later':215C 'let':49B 'level':278C 'list':68B,74B,86B,154C,179C 'liter':112C,130C 'lookup':42B,99C,146C,165C 'mailbox':70B,150C 'make':76B 'measur':317C 'mgpr':13A,18A 'microsoft':5A,28B,39B,96C,102C,249C,256C 'microsoft-outlook':27B 'mitig':233C,316C 'n8n':21A,22A,23A,30B,200C,235C 'network':277C 'network-level':276C 'never':183C 'node':10A,48B,78B,171C 'odata':1A,55B,109C 'one':157C,210C 'onto':82B,177C 'oper':253C,261C 'outlook':6A,29B,40B,97C,145C,250C 'paramet':118C,274C 'pass':267C 'patch':193C,298C 'possibl':226C 'pre':163C 'pre-writ':162C 'queri':56B,134C 'quot':124C 'redirect':168C 'remedi':217C,304C 'remov':263C 'restrict':234C,281C 'return':147C 'rewrit':53B,132C 'risk':306C 'scope':93B,188C 'self':32B 'self-host':31B 'sharepoint':8A,34B,44B,85B,103C,161C,257C 'short':314C 'short-term':313C 'singl':123C 'store':90B,191C 'string':111C 'submit':174C 'temporari':232C 'term':315C 'tool':26B 'trust':240C 'unescap':35B 'unintend':84B 'untrust':139C,268C 'updat':47B,106C 'update/upsert':260C 'upgrad':208C,222C 'use':247C,311C 'user':206C,241C 'v1':9A,45B,104C,258C 'valu':52B,81B,127C,176C 'version':201C,213C 'vulner':219C 'webhook':284C 'within':88B,186C 'without':119C 'workaround':220C,300C 'workflow':65B,137C,182C,245C,290C,293C 'write':79B,164C,172C","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted or cloud n8n that use the Microsoft Outlook contact lookup or the SharePoint v1 item update/upsert node with workflow input from untrusted sources bound into those fields. Workflows that do not use these nodes, or that only bind trusted values, are not exposed to the injection path.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["n8n"],"ptokens":["n8n"],"labels":["aitooling","medium","microsoftoutlook","n8n","npm","selfhosted","sharepoint"],"campaign_type":null,"search_a":"'56r4':14A,19A '5c67':15A,20A 'filter':2A 'ghsa':12A,17A 'ghsa-mgpr-56r4-5c67':11A,16A 'inject':3A 'mgpr':13A,18A 'microsoft':5A 'n8n':21A,22A,23A 'node':10A 'odata':1A 'outlook':6A 'sharepoint':8A 'v1':9A","search_b":"'ai':25B 'ai-tool':24B 'attack':58B 'contact':41B,73B 'craft':51B 'credenti':91B 'data':62B 'feed':61B 'field':66B,80B 'full':72B 'host':33B 'input':36B 'item':46B,87B 'let':49B 'list':68B,74B,86B 'lookup':42B 'mailbox':70B 'make':76B 'microsoft':28B,39B 'microsoft-outlook':27B 'n8n':30B 'node':48B,78B 'odata':55B 'onto':82B 'outlook':29B,40B 'queri':56B 'rewrit':53B 'scope':93B 'self':32B 'self-host':31B 'sharepoint':34B,44B,85B 'store':90B 'tool':26B 'unescap':35B 'unintend':84B 'updat':47B 'v1':45B 'valu':52B,81B 'within':88B 'workflow':65B 'write':79B","search_c":"'1.123.85':202C '2.43.5':205C '2.44.1':203C 'access':237C,282C 'activ':244C 'administr':227C 'affect':273C,292C 'appli':275C 'audit':243C 'bind':138C,265C 'bindabl':117C 'bound':149C 'build':107C 'close':128C 'consid':229C 'contact':98C,153C,158C,251C 'control':279C 'credenti':192C 'data':270C 'deactiv':291C 'endpoint':285C 'entir':152C 'escap':120C 'express':116C 'expression-bind':115C 'extern':269C 'feed':287C 'field':143C,175C 'filter':110C 'fix':198C 'follow':231C 'fulli':239C,303C 'getal':252C 'immedi':225C 'impact':94C 'input':140C 'instanc':236C,296C 'instead':155C 'intend':184C 'issu':195C 'item':105C,180C,259C 'later':215C 'level':278C 'list':154C,179C 'liter':112C,130C 'lookup':99C,146C,165C 'mailbox':150C 'measur':317C 'microsoft':96C,102C,249C,256C 'mitig':233C,316C 'n8n':200C,235C 'network':277C 'network-level':276C 'never':183C 'node':171C 'odata':109C 'one':157C,210C 'onto':177C 'oper':253C,261C 'outlook':97C,145C,250C 'paramet':118C,274C 'pass':267C 'patch':193C,298C 'possibl':226C 'pre':163C 'pre-writ':162C 'queri':134C 'quot':124C 'redirect':168C 'remedi':217C,304C 'remov':263C 'restrict':234C,281C 'return':147C 'rewrit':132C 'risk':306C 'scope':188C 'sharepoint':103C,161C,257C 'short':314C 'short-term':313C 'singl':123C 'store':191C 'string':111C 'submit':174C 'temporari':232C 'term':315C 'trust':240C 'untrust':139C,268C 'updat':106C 'update/upsert':260C 'upgrad':208C,222C 'use':247C,311C 'user':206C,241C 'v1':104C,258C 'valu':127C,176C 'version':201C,213C 'vulner':219C 'webhook':284C 'within':186C 'without':119C 'workaround':220C,300C 'workflow':137C,182C,245C,290C,293C 'write':164C,172C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-14T09:44:47+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"ghsa-repo","external_id":"GHSA-mgpr-56r4-5c67","url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-mgpr-56r4-5c67","severity":"medium","published_at":"2026-10-14T09:44:47+00:00","modified_at":"2026-10-14T09:44:47+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":48838,"url":"https://github.com/n8n-io/n8n/security/advisories/GHSA-mgpr-56r4-5c67","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-14T09:44:47+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"}