Article
Node2Shell: Node.js Brotli RCE (CVE-2026-111497), Fixed Versions and How to Check
Node2Shell (CVE-2026-111497) is a Node.js Brotli RCE flaw. Fixed in 22.23.4, 24.22.1 and 26.12.1. See who is exposed, how to check and what to…
Quick links
Press Enter to search, Esc to close
Vulnerability
CVE-2026-111497, called Node2Shell by researchers, is an out-of-bounds write in the Brotli decoder bundled with Node.js.
In short
CVE-2026-111497, called Node2Shell by researchers, is an out-of-bounds write in the Brotli decoder bundled with Node.js. The Node.js advisory rates it high and says it permits remote code execution. Google's CVE record scores it 9.2 on CVSS 4.0. It is fixed in Node.js 22.23.4, 24.22.1 and 26.12.1 and in Brotli 1.0.10, 1.1.1 and 1.2.1.
The CVE record says a remote attacker with no login can use a crafted Brotli stream to corrupt memory next to the decoder state. The record adds that this can leak sensitive memory, crash the process or possibly run code. Vercel says researchers showed memory disclosure and command execution in the Node.js process on unpatched 22.x, 24.x and 26.x, and that the code runs with the permissions of that process.
The app has to decode Brotli data the attacker controls. Vercel names request bodies and fetched responses. In body-parser 2.x, used by Express 5, express.json() decodes Brotli request bodies by default. Read our Node2Shell analysis for the fixed versions and checks.
The Node.js advisory lists Node.js 26.x, 24.x and 22.x as affected and says end-of-life versions are always affected. The fixed versions are 22.23.4, 24.22.1 and 26.12.1, released on 21 October 2026. Node.js 20 reached end of life on 30 April 2026, and Vercel says it will not receive the fix.
The CVE record places the root bug in Google Brotli 1.0.3 through 1.2.0, fixed in 1.0.10, 1.1.1 and 1.2.1. Other software that bundles Brotli in that range may be in scope. Debian's tracker lists its brotli packages as vulnerable with no fixed version on 22 October.
Node.js releases v22.23.4, v24.22.1 and v26.12.1 and publishes its advisory, which rates CVE-2026-111497 high.
The Brotli project publishes releases 1.0.10, 1.1.1 and 1.2.1, each listing the CVE as a security fix. Vercel publishes a bulletin and says its WAF rules are live.
Google's CVE record is published with a 9.2 score on CVSS 4.0, and the Python Brotli package gets version 1.2.1. CISA data attached to the record lists exploitation as none.
Researcher Ron Masas says his team reproduced the flaw as pre-authentication remote code execution on a vulnerable runtime. The CVE is not in the CISA exploited-vulnerabilities file as of 19:57 UTC.
Install 22.23.4, 24.22.1 or 26.12.1, or newer. Rebuild container images on a patched base and redeploy. Upgrade Node.js 20 and older to a supported line.
List servers, containers, CI runners and serverless functions, and read the version inside the runtime that serves traffic with node --version.
Run npm ls express body-parser. Express 5 uses body-parser 2.x, which decodes Brotli bodies. Search your code for express.json, createBrotliDecompress and fetch calls to servers you do not control.
Set express.json({ inflate: false }) so compressed bodies are rejected with a 415 error. Consider refusing Content-Encoding br at your proxy; this is our suggestion, not vendor advice. A WAF is an extra layer, not a fix.
Look for Node.js processes that start shells or download tools, and for unusual requests with Content-Encoding br. We found no published indicators of compromise in the sources we opened.
It is an out-of-bounds write in the Brotli decoder bundled with Node.js, called Node2Shell by researchers. The Node.js advisory rates it high and says it permits remote code execution.
Node.js 22.23.4, 24.22.1 and 26.12.1, and Brotli 1.0.10, 1.1.1 and 1.2.1. Node.js 20 and older get no fix.
We found no confirmed report of attacks as of 22 October 2026, 19:57 UTC, and the CISA exploited-vulnerabilities file does not list it. A researcher says his team reproduced pre-authentication remote code execution. See the Node2Shell analysis for the full status.
PHP2Shell is two flaws in the PHP engine. CVE-2026-111497 is one flaw in a decoder that Node.js bundles, and an app must decode attacker-controlled Brotli data to be exposed. Read the PHP2Shell analysis for the PHP side.
Take control of your digital security with an exclusive demo of our AI-driven threat intelligence platform.