n8n October 2026 Security Bulletin: Patch Guide for Self-Hosted Instances

Introduction

If you self-host n8n, October 14, 2026 added another entry to your maintenance calendar: n8n published a fresh batch of security advisories, including two rated High severity by its own security team. One lets a workflow author freeze the entire instance with a crafted file selector; the other lets a crafted workflow ID read and modify Data Table rows in projects the attacker should never see. This tutorial is the hands-on companion to that bulletin: which advisories matter, the exact patch version for each release line, how to check whether you are exposed, and how to upgrade a production instance without losing data.

Quick answer

Upgrade n8n to 1.123.85 or newer on the 1.x line, 2.43.5 or newer on stable 2.x, or 2.44.1 or newer on beta 2.x. Back up the database and encryption key first, then pull the new image and recreate the container.

Evidence

Before the steps, the numbers that justify a maintenance window instead of “next time we update”.

First, the batch itself. On October 14, 2026, n8n published a new set of security advisories on the project’s GitHub security advisories index, including two rated High: a Read/Write Files node glob pattern that causes an unbounded event-loop block (GHSA-m7gv-mpg5-7c9v), and a crafted workflow ID that gives access to Data Tables in other projects (GHSA-wvjj-qg37-pv73). Both advisories state the threat model plainly: any member who can create and run workflows can trigger them. The same batch also includes Moderate advisories covering credential secrets exposed in execution error data, per-user credential theft through error-workflow context inheritance, a Quick Base node filter injection, and a SeaTable trigger storing its API token in failed poll execution data.

Second, the exposure. Independent scans counted roughly 114,000 internet-exposed n8n instances, and three out of four of them were running versions with known critical vulnerabilities, according to a recent analysis of Censys and Shadowserver data. Separately, n8n’s GitHub repository sits at about 207,800 stars as of October 2026, which is a rough proxy for how large the self-hosted footprint is. Patching is the single highest-leverage action: the same analysis notes that unpatched instances are found by automation, not by humans picking targets.

Third, the upgrade path is documented. n8n’s own environment variable reference documents NODES_EXCLUDE, the exact variable the advisory names as the short-term mitigation for the glob-pattern flaw. Everything below builds on the advisories’ own patch and workaround sections, so you are following vendor guidance, not folklore.

Fourth, notice the cadence. n8n published advisory batches in September 2026 and again on October 14, 2026, which means the project’s security rhythm is now roughly monthly. Several of these advisories are GitHub Security Advisories without CVE IDs, the same pattern that made dependency scanners blind to the September batches. If your patch process depends on npm audit or Dependabot turning red, it will miss this batch too, so a calendar reminder to check the advisories index beats any scanner for this particular project.

Prerequisites

  • A self-hosted n8n instance (Docker Compose, plain Docker, or npm install); n8n Cloud users are already patched.
  • SSH or terminal access to the host running n8n.
  • A recent backup of the n8n database (SQLite file or Postgres dump) and your N8N_ENCRYPTION_KEY. Without the key, a failed upgrade can lock you out of stored credentials permanently.
  • Know which release line you run: 1.x, stable 2.x, or beta 2.x. Check in the n8n UI under Settings, or run n8n --version on the host.

Step-by-step guide

Step 1: Confirm your current version and whether you are exposed

Run the version check on the host:

docker exec <n8n-container-name> n8n --version

Compare against the patch floors: 1.123.85 (1.x), 2.43.5 (stable 2.x), 2.44.1 (beta 2.x). If your version is below the floor for your line, you are missing at least one October fix. If you patched for the September 2026 security advisories but stopped at 1.123.83, 2.41.4, or 2.42.1, you are still exposed to the October batch.

Step 2: Audit for the two High-severity issues before you touch anything

Glob-pattern DoS. The advisory says the Read/Write Files from Disk node evaluates the File(s) Selector glob on the main event loop with no time limit, and a selector with many wildcards compiles to a regex with exponential backtracking. Export your workflows and look for suspicious selectors:

n8n export:workflow --all --output=/tmp/n8n-workflows-backup/
grep -rl "readWriteFile" /tmp/n8n-workflows-backup/ | head

Open any matches and inspect the File(s) Selector values. Selectors stuffed with wildcards (long runs of * and **) are the red flag; remove or correct them. This export doubles as a pre-upgrade workflow backup.

Cross-project Data Tables. The advisory says n8n accepted a client-supplied workflow ID at creation time and cached the owner project by that ID, so a crafted ID made the project check match every project. Its workaround names the exact thing to look for: audit workflows whose stored ID is __proto__ and remove them. On the default SQLite database:

sqlite3 ~/.n8n/database.sqlite "SELECT id, name FROM workflow_entity WHERE id = '__proto__';"

If that returns a row, delete that workflow through the UI. If you do not use Data Tables at all, consider disabling the module as the advisory suggests.

Step 3: Back up the database and the encryption key

For the default SQLite setup, stop writes first, then copy the database file and confirm the encryption key is stored somewhere outside the container:

docker stop <n8n-container-name>
cp ~/.n8n/database.sqlite ~/.n8n/database.sqlite.pre-oct-patch.bak
echo "$N8N_ENCRYPTION_KEY" | wc -c   # should print a number well above 1; 1 means empty
docker start <n8n-container-name>

For Postgres, take a pg_dump instead. The full backup routine is covered in our self-hosted n8n update guide; do not skip it, because a failed migration without the key means locked credentials.

Step 4: Upgrade to the patched version for your line

Docker Compose (recommended): pin the image to at least the patched floor, then recreate:

docker compose pull n8n
docker compose up -d n8n
docker exec <n8n-container-name> n8n --version

The last command should now report 1.123.85+, 2.43.5+, or 2.44.1+, matching your line.

Plain Docker: pull the patched tag explicitly and recreate the container with the same volume mounts and environment variables, preserving N8N_ENCRYPTION_KEY.

npm installs: note that n8n is dropping npm and npx installs in the 3.0 line, so treat this upgrade as a good moment to plan the Docker migration, then upgrade with npm update -g n8n to a patched version.

Step 5: Verify the patch and re-check the audit findings

After the container is healthy, re-run the version check and confirm the floor for your line. Then confirm the fixes behaviorally: the Read/Write Files node should now reject or time-box pathological glob patterns instead of hanging the process, and a workflow saved with a __proto__ ID should no longer resolve Data Tables across projects. Spot-check one workflow execution end to end, including any webhook-triggered workflow, since the batch touched webhook-adjacent code paths.

Step 6: Apply the post-patch hardening the advisories imply

  • If you set NODES_EXCLUDE=n8n-nodes-base.readWriteFile as a stopgap, remove it now that the node is patched, or keep it if nobody uses that node.
  • Rotate any credentials that appeared in execution error logs. The batch includes two credential-exposure advisories, so treat old error data as potentially compromised and clear it.
  • Re-enable the Data Tables module if you had disabled it, and confirm project scoping works with a non-admin test user.
  • Schedule the next check: n8n has now published advisory batches in September and October 2026. A monthly version review is the cheapest habit in self-hosting.

Troubleshooting

The version is unchanged after docker compose pull. Your compose file pins an old image tag (for example n8nio/n8n:2.42.1). pull only fetches the pinned tag. Update the tag to a patched release or to the line’s latest tag, then run docker compose up -d n8n again and re-check with n8n --version.

n8n fails to start after the upgrade with a database error. Do not run migrations twice or edit the database by hand. Restore the pre-upgrade backup from Step 3, confirm N8N_ENCRYPTION_KEY is set in the container environment, then retry the upgrade. If the migration still fails, the failure log plus your exact from/to versions is what n8n support and the forum need.

The Read/Write Files node disappeared from the node panel. That is the NODES_EXCLUDE mitigation doing its job. Remove n8n-nodes-base.readWriteFile from NODES_EXCLUDE, restart the container, and the node returns now that the underlying flaw is patched.

Webhooks or executions behave differently after the upgrade. The October batch touched execution error data and workflow identity handling. Work through the symptoms with our workflows-broke-after-upgrade fix guide, which covers the rollback procedure if you need to revert to the backup from Step 3.

Conclusion

The October 14, 2026 bulletin is the second advisory batch in two months, and its two High-severity items both share the same uncomfortable property: any user who can build workflows can trigger them. Patch to 1.123.85+, 2.43.5+, or 2.44.1+, verify with the audits in Steps 1 and 2, and keep the monthly version-review habit. Next, read the September 2026 advisories checklist if you skipped that batch, so both floors are covered.

Frequently asked questions

Am I affected if I run n8n Cloud instead of self-hosted?

No. n8n patches Cloud instances automatically, so Cloud users received the October 14 fixes without doing anything. This guide is only for self-hosted instances, where you own the upgrade.

Which exact n8n version do I need to be safe from the October batch?

At minimum: 1.123.85 on the 1.x line, 2.43.5 on the stable 2.x line, or 2.44.1 on the beta 2.x line. The cross-project Data Tables advisory (GHSA-wvjj-qg37-pv73) was fixed only on the 2.x lines, so 1.x users should still move to 1.123.85 or newer to cover the rest of the batch.

Is this the same as the September 2026 advisories?

No, this is a separate batch published October 14, 2026. The September batches needed 1.123.83, 2.41.4, or 2.42.1; the October batch raises the floor to 1.123.85, 2.43.5, and 2.44.1. If you patched in September, you still need this upgrade.

I cannot restart production right now. What mitigations help in the meantime?

Restrict the instance to fully trusted users, disable the Read/Write Files node with NODES_EXCLUDE if you do not need it, audit workflows for a stored ID of __proto__, disable the Data Tables module if unused, and review execution error data for exposed secrets. These are stopgaps from the advisories themselves, not replacements for patching.

How do I tell whether an unpatched instance was already exploited?

Look for the signatures: unexplained full-instance freezes that required a process restart (glob DoS), Data Table rows changed by users who should not see those projects, and credentials appearing in execution error logs. If anything looks off, rotate credentials after patching, starting with ones that can send email or reach production.

Will upgrading break my workflows?

Minor-version upgrades are usually safe, but the 2.x line has had breaking changes before. Test in a staging copy first, and keep our guide for fixing workflows that break after an n8n upgrade bookmarked in case something misbehaves.

TP
ToolPilot Team

We install, break, and fix automation tools so you don't have to. Every tutorial on ToolPilot is tested hands-on before publishing.

Keep reading