← Back to Feed CACHED · 2026-08-16 15:28:31 · CACHE_KEY CVE-2026-33696
CVE-2026-33696 · CWE-1321 · Disclosed 2026-03-25

n8n is an open source workflow automation platform.

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone with a guest pass to your automation nerve center can rewrite the building's wiring

CVE-2026-33696 is a prototype pollution flaw in n8n's GSuiteAdmin and XML node parameter handling. An authenticated user with member-role permissions — the *default* for any registered n8n user — can supply crafted keys (__proto__, constructor, prototype) in node configuration parameters. This pollutes Object.prototype in the server-side Node.js process. Combined with gadget chains available in n8n's dependency tree, this escalates to full remote code execution on the n8n host. Affected versions span n8n < 1.123.27 on the 1.x branch, >= 2.0.0-rc.0 and < 2.13.3 on the 2.x stable branch, and 2.14.0 on the 2.x beta. Fixes landed in 1.123.27, 2.13.3, and 2.14.1.

The vendor assigned CVSS 4.0 of 9.4 (Critical) and CVSS 3.1 of 8.8 (High). The 8.8 is *directionally correct* but slightly generous given two friction factors: no public proof-of-concept exists yet and exploitation requires authenticated access. However, the 'authenticated' bar is thinner than it sounds — n8n's default member role is sufficient, and many self-hosted instances allow open registration. With 100,000+ n8n instances exposed on the internet per Censys scans, the reachable population is large. noisgate downgrades slightly to 7.8 HIGH: auth and no-PoC provide real but modest friction, while n8n's role as a credential-laden automation hub keeps the floor firmly at HIGH.

"Authenticated prototype pollution in n8n GSuiteAdmin/XML nodes gives RCE on the automation hub holding all your integration secrets."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Obtain authenticated session on n8n

The attacker registers or authenticates to a self-hosted n8n instance. Many deployments allow open self-registration by default. The attacker needs only a member-role account — no admin privileges required. Over 100,000 n8n instances are internet-exposed per Censys/Shodan scans from early 2026.
Conditions required:
  • Network access to n8n instance (port 5678 or reverse proxy)
  • Valid user account with member role or above
Where this breaks in practice:
  • Instances behind VPN or IP-allowlisted reverse proxy are unreachable
  • Deployments that disabled self-registration require social engineering or credential theft
Detection/coverage: Monitor n8n audit logs for new user registrations from unexpected IPs.
STEP 02

Craft prototype-polluting workflow node

The attacker creates or modifies a workflow containing a GSuiteAdmin or XML node. They inject a parameter with a key of __proto__, constructor, or prototype and an attacker-controlled value. This is done through normal workflow editing UI or API. No special tooling beyond n8n's own interface is required.
Conditions required:
  • Permission to create or edit workflows (member-role default)
  • Knowledge of prototype pollution technique
Where this breaks in practice:
  • No public PoC or exploit code exists as of August 2026
  • Attacker must identify viable gadget chain in n8n's Node.js dependency tree to convert pollution into code execution
Detection/coverage: WAF or application-layer inspection could flag __proto__ in JSON payloads. n8n does not natively log parameter content at workflow save time.
STEP 03

Trigger workflow execution to pollute Object.prototype

The attacker saves and executes the crafted workflow. When the XML or GSuiteAdmin node processes the malicious parameters, Object.prototype is polluted server-side. The pollution persists for the lifetime of the Node.js process, affecting all subsequent operations.
Conditions required:
  • Ability to execute workflows (member-role default)
Where this breaks in practice:
  • Execution sandbox (if any) may limit pollution scope, but n8n runs nodes in the main process by default
Detection/coverage: Runtime application self-protection (RASP) or Node.js instrumentation (e.g., --frozen-intrinsics) could detect prototype mutation.
STEP 04

Chain to RCE via gadget in dependency tree

With Object.prototype polluted, the attacker leverages a gadget chain in n8n's dependencies to achieve arbitrary code execution. Prior n8n advisories (CVE-2026-33660) demonstrated AlaSQL-based gadgets. The attacker executes OS commands as the n8n service account, gaining access to stored credentials, environment variables, and connected systems.
Conditions required:
  • Viable gadget chain exists in loaded dependencies
  • n8n process runs with sufficient OS permissions
Where this breaks in practice:
  • Container-based deployments may limit blast radius if properly isolated
  • Read-only filesystem mounts prevent persistent backdoors
Detection/coverage: EDR on the host should flag unexpected child processes spawned by the Node.js n8n process. GreyNoise has sensors for n8n exploitation activity.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed exploitation of CVE-2026-33696 specifically. However, n8n has been under sustained attack since the Ni8mare campaign (CVE-2026-21858, CVSS 10.0) in January 2026. Threat actors are actively scanning for vulnerable n8n instances.
Proof-of-ConceptNo public PoC as of August 2026. Reporter @simonkoeck disclosed responsibly via GitHub Security Advisory GHSA-mxrg-77hm-89hv. Sister CVE-2026-33660 has a writeup on anonhaven.com detailing AlaSQL gadget chains that may be adaptable.
EPSS Score0.00765 (≈76th percentile) — moderate probability of exploitation within 30 days. Reflects authenticated requirement dampening automated scanning.
KEV StatusNot listed in CISA Known Exploited Vulnerabilities catalog as of August 2026.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (8.8 HIGH). GitHub advisory additionally lists CVSS 4.0 score of 9.4 Critical with S:C (changed scope).
Affected Versionsn8n < 1.123.27 (1.x LTS), n8n >= 2.0.0-rc.0 and < 2.13.3 (2.x stable), n8n 2.14.0 (2.x beta)
Fixed Versions1.123.27, 2.13.3, 2.14.1
Exposure DataCensys and Shodan report 100,000+ internet-exposed n8n instances. As of March 2026, 58% of scanned instances were running a version affected by at least one known CVE. Censys advisory
Disclosure Date2026-03-25 via GitHub Security Advisory
Reporter@simonkoeck via coordinated disclosure to n8n-io
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.8/10)

The single most decisive factor keeping this at HIGH rather than CRITICAL is the authentication requirement — exploitation demands a valid n8n member-role session, which narrows the attacker population to credentialed insiders, compromised accounts, or instances with open self-registration. The decisive factor *preventing* a further downgrade to MEDIUM is the role multiplier: n8n is canonically an automation/integration hub storing OAuth tokens, API keys, and database credentials for dozens of connected services — RCE on the n8n host is a supply-chain pivot point, not a single-app compromise.

HIGH Vulnerability existence and affected version range
MEDIUM Exploitability without public PoC (gadget chain availability assumed from sister CVE)
HIGH Blast radius assessment (credential store, integration hub)

Why this verdict

  • Authentication friction is real but thin. CVSS PR:L is accurate, but n8n's member role — the minimum needed — is the *default* for any registered user. Self-hosted instances with open registration reduce this to near-zero friction. This provides a modest downward adjustment (~0.5 points) from the vendor's 8.8.
  • No public PoC dampens immediate risk. Without published exploit code, mass exploitation requires independent gadget-chain research. The sister CVE-2026-33660 AlaSQL writeup lowers this bar for motivated attackers but has not yet been adapted publicly. Another ~0.5-point downward adjustment.
  • Role multiplier: n8n is a credential store and automation hub. By definition, n8n instances hold OAuth tokens, API keys, database credentials, and webhook secrets for every connected service. RCE on the n8n host means the attacker inherits all stored credentials and can pivot to downstream systems (databases, SaaS platforms, cloud accounts). This is functionally equivalent to compromising a CI/CD server. The blast radius is not 'one application' — it is 'every system n8n integrates with.' This floors the verdict at HIGH regardless of auth friction.
  • Role multiplier (high-value role check): n8n occupies the CI/CD + automation category. ≥80% of n8n installs *are* the automation hub — the component is its role. Chain success in this role yields credential theft across all integrations → supply-chain-scale blast radius. Floor = HIGH.
  • 100K+ internet-exposed instances. The reachable attack surface is massive. Even requiring auth, the sheer volume of exposed instances — 58% running vulnerable versions — means the exposure population is substantial.

Why not higher?

Upgrading to CRITICAL would require either active exploitation (not observed), a public weaponized PoC (none exists), or unauthenticated access (auth is required). The authentication barrier, while thin, is nonzero and prevents mass automated exploitation. The CVSS 4.0 score of 9.4 with changed scope is aggressive; real-world conditions do not yet support CRITICAL urgency.

Why not lower?

Dropping to MEDIUM would ignore n8n's canonical role as an automation and credential hub. RCE on an n8n instance is not an isolated application compromise — it is a supply-chain pivot point granting access to every connected service's credentials. The 100K+ exposed instance population and the existence of sister CVE gadget-chain research (lowering the PoC development barrier) prevent any further downgrade.

05 · Compensating Control

What to do — in priority order.

  1. Disable the XML node via NODES_EXCLUDE — Set NODES_EXCLUDE=n8n-nodes-base.xml in your n8n environment configuration to remove the XML node from the available node palette. This eliminates one of the two attack vectors. Deploy within 30 days per noisgate mitigation SLA for HIGH.
  2. Restrict workflow permissions to trusted users only — Remove member-role workflow creation/editing permissions. Limit workflow authoring to a named set of trusted operators. This directly blocks the authenticated attack path. Deploy within 30 days.
  3. Disable open self-registration — Set N8N_USER_MANAGEMENT_DISABLED=true or configure SSO/SAML to control who can register. Open registration is the primary reason the auth barrier is thin. Deploy within 30 days.
  4. Place n8n behind VPN or IP-allowlisted reverse proxy — Remove direct internet exposure. This eliminates remote attacker access entirely. If n8n must be accessible externally, enforce MFA via an identity-aware proxy (e.g., Cloudflare Access, Tailscale). Deploy within 30 days.
  5. Run n8n in a container with minimal privileges — Use a read-only root filesystem, drop all capabilities, and run as a non-root user. This limits post-exploitation blast radius even if RCE is achieved. Secrets should be injected via mounted volumes or secret managers, not environment variables.
What doesn't work
  • Network-level WAF rules — prototype pollution payloads are embedded in legitimate JSON workflow configuration bodies. Generic WAF signatures for __proto__ may catch trivial attempts but are easily bypassed with constructor.prototype variants.
  • Node.js version upgrades alone — the vulnerability is in n8n's application-layer parameter handling, not in Node.js itself. Upgrading Node.js does not remediate.
  • Disabling only the GSuiteAdmin node — while NODES_EXCLUDE can disable GSuiteAdmin, the XML node is the more commonly deployed vector. You must exclude both, and even then, future prototype pollution vectors in other nodes are not addressed.
06 · Verification

Crowdsourced verification payload.

Run this script on each n8n host (or against the n8n API endpoint from an auditor workstation). It checks the running n8n version against the patched thresholds. No special privileges required — just curl and network access to the n8n instance. Example: bash check_cve_2026_33696.sh https://n8n.internal.corp:5678

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_33696.sh — Detect CVE-2026-33696 in n8n
# Usage: bash check_cve_2026_33696.sh <n8n_base_url>
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

if [ $# -lt 1 ]; then
  echo "Usage: $0 <n8n_base_url>"
  echo "Example: $0 https://n8n.example.com:5678"
  exit 2
fi

BASE_URL="${1%/}"

# Attempt to retrieve version from n8n REST API
VERSION=$(curl -sk --max-time 10 "${BASE_URL}/rest/settings" 2>/dev/null | grep -oP '"versionCli"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+' || true)

if [ -z "$VERSION" ]; then
  # Fallback: try the healthcheck or version endpoint
  VERSION=$(curl -sk --max-time 10 "${BASE_URL}/healthz" -D- 2>/dev/null | grep -oiP 'n8n/\K[0-9]+\.[0-9]+\.[0-9]+' || true)
fi

if [ -z "$VERSION" ]; then
  echo "UNKNOWN — could not determine n8n version at ${BASE_URL}"
  exit 2
fi

echo "Detected n8n version: ${VERSION}"

# Parse major.minor.patch
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"

vulnerable=false

if [ "$MAJOR" -eq 1 ]; then
  # 1.x branch: vulnerable if < 1.123.27
  if [ "$MINOR" -lt 123 ]; then
    vulnerable=true
  elif [ "$MINOR" -eq 123 ] && [ "$PATCH" -lt 27 ]; then
    vulnerable=true
  fi
elif [ "$MAJOR" -eq 2 ]; then
  # 2.x branch: vulnerable if < 2.13.3 OR == 2.14.0
  if [ "$MINOR" -lt 13 ]; then
    vulnerable=true
  elif [ "$MINOR" -eq 13 ] && [ "$PATCH" -lt 3 ]; then
    vulnerable=true
  elif [ "$MINOR" -eq 14 ] && [ "$PATCH" -eq 0 ]; then
    vulnerable=true
  fi
fi

if [ "$vulnerable" = true ]; then
  echo "VULNERABLE — n8n ${VERSION} is affected by CVE-2026-33696"
  echo "Upgrade to 1.123.27 (1.x) or 2.13.3 / 2.14.1 (2.x)"
  exit 1
else
  echo "PATCHED — n8n ${VERSION} is not affected by CVE-2026-33696"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: inventory all n8n instances in your environment — especially self-hosted deployments that shadow IT may have spun up. Immediately disable open self-registration and restrict workflow editing permissions to named operators. Set NODES_EXCLUDE=n8n-nodes-base.xml as a temporary mitigation. Per the noisgate mitigation SLA for HIGH, deploy these compensating controls within 30 days. Per the noisgate remediation SLA for HIGH, upgrade all n8n instances to 1.123.27 (1.x LTS) or 2.13.3+ / 2.14.1+ (2.x) within 180 days. Prioritize internet-facing instances for immediate patching — with 100K+ exposed instances and n8n under sustained attacker interest since the Ni8mare campaign, the window before a public PoC drops is narrowing. If your n8n instance is internet-exposed with open registration, treat this as an emergency: patch this week and put the instance behind a VPN.

Sources

  1. GitHub Security Advisory GHSA-mxrg-77hm-89hv
  2. Geordie Technical Advisory — n8n March 2026 CVEs
  3. Censys Advisory — n8n Exposure Data
  4. SentinelOne Vulnerability Database — CVE-2026-33696
  5. GBHackers — 103K+ n8n Instances Exposed
  6. AnonHaven — n8n RCE via AlaSQL and Prototype Pollution (CVE-2026-33660)
  7. CCB Belgium — Critical n8n Vulnerabilities Advisory
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.