n8n September 2026 Security Advisories: Patch Checklist for Self-Hosted Instances
Introduction
If you self-host n8n, September 2026 was a rough month for your maintenance calendar: n8n published three separate batches of security advisories. The first batch got CVE IDs and landed in the public vulnerability databases. The other two did not, which means your dependency scanners may be telling you everything is fine while it is not. This tutorial gives self-hosted operators a single checklist: what the three batches cover, the exact patch versions for each release line, how to verify you are exposed, and how to patch safely without breaking production workflows.
Quick answer
Patch self-hosted n8n to 2.41.4+ (stable), 2.42.1+ (beta) or 1.123.83+ (1.x) to cover all three September 2026 security batches. npm audit and Dependabot cannot see most of these advisories, so check your version by hand.
Evidence
Before the steps, the numbers that justify treating this as a maintenance-window emergency rather than a routine update.
First, the three batches and their scope. n8n published security advisories in three waves during September 2026. The 10 September batch received CVE IDs and appears in public databases. The 16 September batch contains at least 12 advisories and was fixed in 2.39.6, 2.40.1 and 1.123.80, with no CVE IDs. The 30 September batch contains 14 advisories, 10 of them rated high by n8n’s own security team, fixed in 2.41.4, 2.42.1 and 1.123.83, also without CVE IDs. These figures come from n8n’s security team’s own summary, published as the Security update of 01 October 2026 on the n8n community forum, and every advisory is listed in the project’s GitHub security advisories index.
Second, the severity is real, not theoretical. GHSA-3qcw-p65v-c7vq lets OAuth clients be persisted through the authorize endpoint without authentication, with a CVSS score of 8.2. GHSA-rx55-8qhx-4hwx from the 16 September batch leaks a session token through the Dynamic Credentials authorize endpoint, with a CVSS score of 8.5. GHSA-5jr4-xmvf-frmj lets the instance-level MCP server’s workflow-validation step be abused for an owner account takeover. As of 12 October 2026, these and several others had no CVE record at all.
Third, the scanner blind spot is measured, not guessed. On 12 October 2026, a community write-up documented lookups of four of the September advisories (GHSA-4c7j-qff5-r9cx, GHSA-x5cw-hm7v-q7mj, GHSA-3qcw-p65v-c7vq and GHSA-rx55-8qhx-4hwx) on OSV.dev and in the GitHub Advisory Database. Every lookup returned “not found”. Because npm audit, Dependabot and OSV-Scanner read exactly those databases, an n8n 2.40.0 instance can scan clean while missing both September batches. A green scanner report is therefore not evidence of safety for n8n right now; reading the project’s own advisory page is.
The n8n security team’s own recommendation is blunt, and worth quoting directly: “If you are running a self-hosted n8n instance on a version below the fixed versions listed above, we recommend upgrading at your earliest convenience.” (The n8n Security Team, Security update, 01 October 2026.)
Prerequisites
- A self-hosted n8n instance (Docker, npm, or binary install). n8n Cloud is patched automatically and needs nothing.
- Shell access to the host running n8n.
- A recent backup of your n8n database and workflows before you touch anything.
- Enough permissions to restart the n8n service or containers.
Step-by-step guide
Step 1: Find out which batch you are missing
Check your running version first. In the n8n editor, open Help > About n8n. From the command line:
n8n --version
# or, inside a Docker container:
docker exec <container-name> n8n --version
Now map your version to the three batches:
| Advisory batch | Published | Fixed releases |
|---|---|---|
| 10 September | 2026-09-10 | Carries CVE IDs; check each advisory’s fixed version on the GitHub advisories index |
| 16 September | 2026-09-16 | 1.123.80 (1.x), 2.39.6 (stable 2.39 line), 2.40.1 (beta 2.40 line) |
| 30 September | 2026-09-30 | 1.123.83 (1.x), 2.41.4 (stable 2.41 line), 2.42.1 (beta 2.42 line) |
If your version is below every fixed release in a row, that batch applies to you. The safe floor across all three batches is 2.41.4 on the 2.41 line, 2.42.1 on the 2.42 line, or 1.123.83 on the 1.x line. As of 12 October 2026, the latest tag on npm was 2.42.6, which also covers everything.
Step 2: Assess exposure while you plan the window
Know who can reach the instance before you patch, because several of the advisories (GHSA-3qcw-p65v-c7vq, GHSA-4c7j-qff5-r9cx) need no login at all:
ss -tlnp | grep 5678
If you see 0.0.0.0:5678, other machines can connect to n8n’s port. With Docker, publish the port on localhost only (-p 127.0.0.1:5678:5678) and put a reverse proxy with TLS in front; only the webhook paths that outside services actually call need to be public. Note that ports published by Docker bypass ufw and firewalld rules on the host, so the host firewall alone does not protect a Docker install.
Prioritize the unauthenticated issues in your triage. From the 30 September batch, the ones worth knowing by name: GHSA-3qcw-p65v-c7vq (CVSS 8.2, unauthenticated OAuth client persistence via the authorize endpoint), GHSA-4c7j-qff5-r9cx (unauthenticated cross-project workflow execution through webhooks with dynamic paths, matched by path alone), GHSA-x5cw-hm7v-q7mj (stored XSS through a Chat Trigger’s custom CSS on hosted chat pages that do not require login), GHSA-5jr4-xmvf-frmj (owner account takeover through the instance MCP server’s workflow-validation step), and GHSA-x8wx-g24x-3549 (code execution in the Git node’s log operation). From the 16 September batch: GHSA-rx55-8qhx-4hwx (CVSS 8.5, session token leak through the Dynamic Credentials authorize endpoint).
Step 3: Back up before upgrading
Do this every time; the advisories themselves make restore capability part of the fix. For an npm/binary install, copy the n8n data directory (default ~/.n8n, containing database.sqlite and config). For Docker, snapshot the volume or back it up:
# Workflow and credential export (works on any install):
n8n export:workflow --all --output=./backups/workflows/2026-10-15/
n8n export:credentials --all --output=./backups/credentials/2026-10-15/
# Docker volume backup:
docker run --rm -v n8n_data:/data -v "$(pwd)/backups":/backup \
busybox tar czf /backup/n8n-data-2026-10-15.tar.gz -C /data .
Keep the backup off the same host if you can. You will need the database snapshot if the migration on startup fails.
Step 4: Upgrade to a patched release
n8n’s own updating guide covers the per-install variants; the short forms below are the common ones. Pick the exact fixed version for your release line from the table in Step 1.
For Docker Compose:
cd /path/to/n8n
# pin the fixed version explicitly, e.g.:
# image: n8nio/n8n:2.41.4
docker compose pull
docker compose up -d --force-recreate
docker exec <container-name> n8n --version
For npm installs:
npm update -g n8n@2.41.4
n8n --version
Watch the first startup logs for database migration messages. If the process crashes on migration, stop, restore the database snapshot from Step 3, and work through the version-by-version path described in the guide to updating self-hosted n8n without breaking workflows.
Step 5: Apply the advisories’ interim mitigations where patching is delayed
If a production freeze stops you from upgrading today, several advisories carry mitigations that reduce exposure until the window opens:
- Turn off the instance-level MCP server if you do not use it (GHSA-5jr4-xmvf-frmj).
- Add authentication at the node level to webhooks that use dynamic paths (GHSA-4c7j-qff5-r9cx).
- Review the custom CSS of your Chat Triggers and require authentication on hosted chat pages (GHSA-x5cw-hm7v-q7mj).
- Restrict network access to the instance and watch for unexpected database growth, which the GHSA-3qcw-p65v-c7vq advisory names as a mitigation.
Step 6: Verify the patch and check for compromise
Confirm the running version meets or exceeds the fixed release, then run the incident checks. If the instance was reachable from the internet while vulnerable: review instance users, registered OAuth clients, and API keys; look for executions you do not recognise; and rotate the credentials stored in n8n, starting with the ones that can send email, move money, or reach production systems. If you want a repeatable version-check routine, the same procedure is described in our CVE patch walkthrough for n8n.
Troubleshooting
npm audit and Dependabot say n8n is clean, but the version is months old.
This is the scanner blind spot documented above. Most September advisories are GHSA entries with no CVE ID, and the databases the scanners read do not carry them. Do not treat a green scanner report as a verdict. Check n8n --version manually against the GitHub advisories index or the version table in Step 1.
After docker compose pull, n8n still reports the old version.
Your compose file pins an old image tag (for example image: n8nio/n8n:2.39.6), or a stale local image is being reused. Edit the compose file to the exact fixed tag such as n8nio/n8n:2.41.4, then run docker compose pull followed by docker compose up -d --force-recreate, and re-check with docker exec <container-name> n8n --version.
Workflows fail validation or error right after the upgrade. Newer n8n releases tighten workflow validation (several teams hit this after the 2.42/2.43 upgrades). Work through the fix guide for workflows broken after an n8n update before rolling back: the upgrade itself is what keeps the advisories fixed, so repair is usually better than downgrade.
The instance will not start after upgrading, or SQLite reports the database is not ready.
Migration failures on startup are usually a corrupt or partially-migrated database file. Stop the service, restore the database.sqlite snapshot from Step 3, and see the SQLite database-not-ready fix guide for the verified repair sequence.
The instance runs a version older than 1.121.0. You have a fourth problem: the “Ni8mare” flaw (CVE-2026-21858, CVSS 10, no login required) affects everything before 1.121.0. Do not jump straight to the latest tag; read n8n’s release notes and upgrade through the documented intermediate versions so migrations run in order.
Conclusion
The September 2026 n8n advisories matter less for any single CVE and more for what they reveal: a project that publishes GitHub advisories without CVE IDs leaves every scanner-based workflow blind. Check your version against the advisory table, upgrade to 2.41.4+, 2.42.1+ or 1.123.83+ depending on your release line, and keep checking n8n’s own advisory index instead of your scanner dashboard. Next, harden the instance you just patched with our Ubuntu VPS install and hardening walkthrough.
Frequently asked questions
Am I affected if I run n8n Cloud instead of self-hosted?
No. n8n patches Cloud instances automatically, so no action is required there. This checklist is only for self-hosted instances, where you own the upgrade.
Why don't npm audit, Dependabot, or OSV-Scanner flag these n8n advisories?
Most of the September 2026 advisories were published as GitHub Security Advisories (GHSA) without CVE IDs. The vulnerability databases those scanners read, OSV.dev and the GitHub Advisory Database, had no records for the checked advisories as of 12 October 2026, so the scanners report a clean bill of health on versions that are actually vulnerable.
Which exact n8n version do I need to be safe?
At minimum: 2.41.4 on the stable 2.41 line, 2.42.1 on the beta 2.42 line, or 1.123.83 on the 1.x line. Anything older is missing fixes from at least one of the three September batches.
I cannot restart production right now. What mitigations help in the meantime?
Restrict network access to the instance, turn off the instance-level MCP server if you do not use it, add node-level authentication to webhooks with dynamic paths, review the custom CSS of Chat Triggers, and require authentication on hosted chat pages.
How do I check whether an affected instance was already compromised?
Review instance users, registered OAuth clients, and API keys; look for executions you do not recognise; then rotate the credentials stored in n8n, starting with the ones that can send email, move money, or reach production systems.
Can I jump straight from a very old version to the patched release?
If you are below 1.121.0 you are also exposed to the 'Ni8mare' flaw (CVE-2026-21858, CVSS 10, no login required), so read n8n's release notes and upgrade through the documented intermediate versions rather than jumping blindly.