GHSA-2x35-3fw4-9jr4: n8n: Send Email Node Arbitrary File Read and SSRF via Nodemailer Content-Object Type Confusion
The n8n Send Email node did not check that its message fields were strings. A crafted non-string value from a workflow expression could make the underlying Nodemailer library read a local file or fetch a URL, which discloses files from the n8n host. It needs an unauthenticated webhook workflow. Fixed in n8n 1.123.67, 2.31.5 and 2.32.1.
Published Jul 22, 2026 · Analysis Oct 25, 2026
What an attacker can do
Nodemailer accepts a content object in place of a plain string. The object can point to a file path or a URL. The Send Email node passed whatever a workflow expression produced into the text or HTML body without forcing it to be a string. If an attacker controls that value, Nodemailer treats it as a content object and reads the file or fetches the URL (type confusion, with file read and SSRF outcomes). The file contents end up in the outgoing email.
Exploitation needs several things together. The workflow must be active and have an unauthenticated webhook. The Send Email node must have working SMTP credentials. Untrusted input must be mapped directly into the text or HTML body field. The advisory says this is not a default n8n configuration.
When those conditions hold, a remote caller with no account can have local files from the n8n host sent to a mailbox, and can make the server request internal URLs. Config files, environment files and credentials on the host are the usual targets. The CVSS 4.0 vector rates confidentiality impact high and the other impacts none.
Who is affected
Affected: n8n below 1.123.67 on the 1.x line, 2.0.0-rc.0 up to but not including 2.31.5, and 2.32.0. Only instances with an active unauthenticated-webhook workflow that feeds untrusted data into the Send Email node's text or HTML body are practically exposed.
Check the version:
npm ls n8nThen review active workflows for Send Email nodes whose body fields use webhook data expressions.
n8n
- Ecosystem
- npm
- Affected
- < 1.123.67
- Fixed in
- 1.123.67
- Check
npm ls n8n
n8n
- Ecosystem
- npm
- Affected
- >= 2.32.0, < 2.32.1
- Fixed in
- 2.32.1
- Check
npm ls n8n
n8n
- Ecosystem
- npm
- Affected
- >= 2.0.0-rc.0, < 2.31.5
- Fixed in
- 2.31.5
- Check
npm ls n8n
How to fix it
Upgrade to n8n 1.123.67, 2.31.5 or 2.32.1, or later. The fix touches the EmailSend node code (v1, v2 send and sendAndWait operations and their utils).
Temporary mitigations from the advisory, none of which fully remove the risk:
- Audit active workflows for Send Email nodes that map webhook or external data straight into the text or HTML body, then remove or restrict them.
- Restrict public webhook access at the network or reverse-proxy level.
- Limit workflow creation and editing to fully trusted users.
How to tell if you were hit
The sources give no log signature. Find webhook-triggered workflows with a Send Email node whose text or HTML field uses an expression from the webhook payload. In the execution history, look for requests where that payload field is a JSON object, with keys like path or href, rather than a string. Check the outbox of the SMTP account for messages that contain file contents such as env or config data. Check egress logs for odd requests from the n8n host to internal addresses.
Original advisory
From the GitHub Advisory Database (CC BY 4.0).
Impact
The n8n Send Email node did not enforce that its message fields were strings, so a crafted untrusted non-string value from a workflow expression could be treated by the underlying mail library as a file path or URL. This could allow disclosure of local files on the n8n host.
Exploitation requires a pre-existing active workflow with an unauthenticated webhook, valid SMTP credentials configured on the Send Email node, and untrusted input mapped directly into the text or HTML body field. This is not a default n8n configuration.
Patches
The issue has been fixed in n8n versions 1.123.67, 2.31.5, and 2.32.1. Users should upgrade to one of these versions or later to remediate the vulnerability.
Workarounds
If upgrading is not immediately possible, administrators should consider the following temporary mitigations:
- Audit active workflows for Send Email nodes that map untrusted webhook or external data directly into the text or HTML body fields, and remove or restrict those workflows.
- Restrict public webhook access at the network or reverse-proxy level to prevent unauthenticated callers from reaching sensitive workflows.
- Restrict workflow creation and editing permissions to fully trusted users only.
These workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.
Credited to simonkoeck.
Questions
- Is every n8n instance exposed by GHSA-2x35-3fw4-9jr4?
No. The advisory says it needs an active workflow with an unauthenticated webhook, valid SMTP credentials on the Send Email node, and untrusted input mapped straight into the text or HTML body. That is not a default setup.
- What can an attacker get?
Local files on the n8n host, delivered through the email the node sends, and the ability to make the server request URLs (SSRF). The advisory rates confidentiality impact as high.
- Which versions are fixed?
n8n 1.123.67, 2.31.5 and 2.32.1 or later.
- Does it have a CVE id?
The entry lists no CVE id, only the GHSA id. The sources do not report exploitation in the wild, and it is not in CISA's KEV catalog.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
More n8n vulnerabilities
All n8n entriesCVE-2026-86073
n8n: Per-Resource OAuth Consent Bypass via Unbound Refresh Token Resource Substitution
medium5.9Sep 10, 2026CVE-2026-86074
n8n: Instance AI Credential Setup Accepts Unvalidated Probe URL from Fetched Content
medium5.9Sep 10, 2026CVE-2026-86075
n8n: Unauthenticated Persistent Storage Exhaustion via OAuth Dynamic Client Registration Endpoint
high8.7Sep 10, 2026CVE-2026-86076
n8n: Expression Sandbox Escape via Class-Field Sanitizer Rebinding Can Lead to Code Execution
high8.7Sep 10, 2026CVE-2026-86077
n8n: Anonymous Approval-Gate Bypass via Reused resumeToken over the Chat WebSocket
medium6.3Sep 10, 2026CVE-2026-86078
n8n: Prototype Pollution via Workflow Structure Summary Can Lead to Denial of Service
medium6.0Sep 10, 2026
