Feb 24, 2026·5 min read·130 visits
Critical RCE in n8n versions < 1.121.0. An unauthenticated attacker can read any file on the server (like config/db) by manipulating the 'filename' parameter in multipart requests. Leaked secrets allow admin session forgery and subsequent RCE.
n8n, the popular workflow automation tool, suffered a catastrophic 10.0 CVSS vulnerability dubbed 'Ni8mare'. By exploiting a Content-Type confusion flaw in the Form Trigger node, unauthenticated attackers could trick the server into treating existing system files as uploaded content. This Arbitrary File Read (AFR) allowed the theft of encryption keys and JWT secrets, leading to a trivial upgrade path to full Remote Code Execution (RCE).
n8n is the 'fair-code' darling of the automation world. It connects your Stripe to your Slack, your AWS to your Airtable. It is, by definition, a repository of your most sensitive API keys and secrets. It's the central nervous system of many modern tech stacks.
Now, imagine if that central nervous system had a reflex where, if you poked it just right, it would vomit out its own genetic code. That is essentially what CVE-2026-21858, or 'Ni8mare', represents.
The vulnerability lies in the Form Trigger node. This component is designed to let users upload files to a workflow. It's meant to be a simple door for data entry. Unfortunately, due to some questionable parsing logic, it became a revolving door for the entire filesystem. The irony here is palpable: a tool designed to ingest external data securely ended up ingesting its own internal secrets and handing them to strangers.
The root cause is a classic case of "Content-Type Confusion" paired with a lack of input sanitization. When n8n receives a multipart/form-data request, it has to decide what is a simple text field and what is a file upload. In vulnerable versions, the parser was a bit too trusting. It relied heavily on the Content-Disposition header to determine how to handle the data.
Specifically, it looked at the filename parameter. The developers likely assumed that filename would represent the name of the file being uploaded. They didn't anticipate that an attacker would provide a path like ../../../../home/node/.n8n/config.
Because the application didn't enforce that a file upload must actually contain a new binary data stream, it effectively said: "Oh, you want to use the file at ../../config? Sure, I'll just grab that existing file and pretend you just uploaded it." It's like ordering a pizza and telling the delivery driver to just grab the one already sitting in your neighbor's oven.
Let's look at the logic. In the vulnerable code, the handling of the uploaded file path was effectively a direct concatenation or unchecked usage of the user-supplied filename. The system blindly trusted the header.
Here is a conceptual simplification of the vulnerability:
// Vulnerable Logic
const file = new File({
path: providedFilename, // <--- The killer line. No sanitization.
name: providedFilename
});The fix, introduced in version 1.121.0 (Commit faae32934230ca3f0a7da1798e6737c3891ef250), forces the filename to be stripped of directory components and ensures the file is written to a random, isolated temporary directory.
// Patched Logic
const safeFilename = path.basename(providedFilename);
const tempPath = path.join(randomTempDir, safeFilename);
// The file content is then streamed to tempPathBy using path.basename(), any attempt to traverse directories (../) is neutralized. ../../etc/passwd simply becomes passwd, safely trapped in a temp folder where it belongs.
Reading a file is bad, but reading the right file is game over. The exploit chain for Ni8mare is a masterclass in escalation. It turns a "read-only" bug into total domination.
Step 1: The Heist
The attacker sends a POST request to a webhook endpoint. The payload is a multipart form with a filename pointing to sensitive n8n configuration files, typically located at /home/node/.n8n/config or the SQLite database file.
Step 2: The Keys to the Kingdom
The workflow reflects the file content back to the attacker (or the attacker blindly extracts it). Inside, they find the N8N_ENCRYPTION_KEY and the specific secret used to sign JSON Web Tokens (JWTs).
Step 3: The Forgery With the signing secret, the attacker crafts a new JWT. They don't need to crack a password; they just mint a new ID badge that says "I am the Admin."
Step 4: The Execution
Now authenticated as an admin, the attacker accesses the n8n dashboard. They create a new workflow with an "Execute Command" node. They type cat /etc/shadow or install a reverse shell, hit "Execute", and the server is theirs.
The remediation is straightforward but urgent. You must update to n8n version 1.121.0 immediately. The patch changes how file uploads are parsed and stored, effectively killing the traversal vector.
However, if you were exposed, patching is not enough. Since the attacker could have read your encryption keys and database credentials, you must treat your instance as fully compromised. It is not enough to lock the door after the burglar has copied your keys.
N8N_ENCRYPTION_KEY and any API keys stored in your credentials.This vulnerability scored a perfect 10.0 on CVSS for a reason. It requires no authentication, no user interaction, and results in total system compromise. Do not sleep on this.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
n8n n8n-io | >= 1.65.0, < 1.121.0 | 1.121.0 |
| Attribute | Detail |
|---|---|
| CVSS Score | 10.0 (Critical) |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| CWE ID | CWE-20 (Improper Input Validation) / CWE-22 (Path Traversal) |
| Exploit Status | Public PoC / Weaponized |
| EPSS Score | 0.07694 (7.69%) |
| EPSS Percentile | 91.74% |
Improper Input Validation leading to Path Traversal
CVE-2026-14669 is a critical heap-based buffer overflow vulnerability in PostgreSQL's date/time formatting function to_char(timestamptz). The flaw arises from unsafe copying of user-controlled timezone abbreviations into a fixed-size internal buffer. An authenticated database user can trigger this issue by setting a long POSIX timezone abbreviation containing custom formatting, allowing them to overwrite adjacent heap structures and hijack execution control to achieve remote code execution (RCE) with the privileges of the 'postgres' operating system user.
An unauthenticated remote denial of service vulnerability exists in the Unleash feature management platform. By submitting a crafted JSON payload containing deeply nested structures to an OpenAPI-validated endpoint, an attacker can trigger uncontrolled recursion within the error formatting module. This leads to a call-stack exhaustion (RangeError: Maximum call stack size exceeded) inside the Node.js runtime, causing the service to crash immediately without recovery.
CVE-2026-63004 is a server-side request forgery (SSRF) vulnerability in the Unleash feature management platform. Authenticated administrators with CREATE_ADDON or UPDATE_ADDON privileges can exploit this vulnerability to initiate requests to loopback addresses, private networks, and cloud metadata endpoints, potentially leading to information disclosure and credential extraction.
Prior to version 8.0.3, Unleash's Markdown event formatter directly mutated the global template-escaping function of the shared mustache Node.js module, resulting in a process-wide security degradation where HTML/Markdown escaping was permanently disabled for the application lifetime.
A critical SQL injection vulnerability exists in the GeoTools open-source Java library. This vulnerability is situated within the post-processing phase of OGC Filter conversion inside the PostGIS DataStore module. Specifically, the `jsonArrayContains` function does not validate or sanitize its arguments before constructing PostgreSQL SQL/JSON path evaluation queries. An unauthenticated remote attacker can exploit this weakness by submitting crafted filters via standard OGC services like WFS or WMS to execute arbitrary SQL commands on the underlying database system.
CVE-2026-61824 is a high-severity Cross-Site Scripting (XSS) vulnerability in kepano/defuddle before version 0.19.1. Custom site extractors for platforms such as X/Twitter, Substack, and YouTube constructed HTML representations via template string interpolation without output escaping. This allowed malicious pages to bypass standard parser sanitization routines and execute arbitrary JavaScript.