CatalogNode2Shell
Node2Shell (CVE-2026-111497)
Shared component node2shell
Out-of-bounds write in the Brotli decoder bundled with Node.js that can permit remote code execution when attacker-controlled Brotli data is decompressed. Google rates CVSS 4.0 9.2. Node.js rates it High. Imperva Red Team demonstrated code execution on the official Node.js 24.22.0 image. Not in CISA KEV as of 23 Oct 2026.
- Aliases
- Published
- Updated
What the bug is
Node2Shell is Imperva Red Team's name for CVE-2026-111497, an out-of-bounds write in Google's Brotli decoder as bundled with Node.js. Node.js disclosed it on 21 Oct 2026 in the Wednesday security releases and rates it High. NVD lists Google's CVSS 4.0 score of 9.2.
A Node.js service can hit the decoder when it consumes a Brotli response (including via fetch()) or when middleware such as Express 5 / body-parser 2.x inflates an incoming Content-Encoding: br body. Crafted Brotli streams can corrupt decoder state, disclose memory, crash the process, or potentially execute code.
Fixed Node.js releases are 22.23.4, 24.22.1, and 26.12.1. Bun is fixed in 1.4.4. End-of-life Node.js lines (20.x, 23.x, 25.x and older) receive no fix. Google Brotli 1.0.3 through 1.2.0 is the stated affected range; branch-specific fixed releases include 1.0.10, 1.1.1, and 1.2.1.
Attack path
- Untrusted BrotliAttacker-controlled Brotli data reaches Node.js via a compressed response, an inflated request body, or a direct zlib call.
- Decoder flawThe bundled Brotli decoder continues past an invalid stream condition and writes out of bounds.
- Memory corruptionAdjacent decoder state is corrupted. Memory disclosure or process crash can follow.
- Code execNode.js says the out-of-bounds write can permit remote code execution. Imperva showed code running on Node.js 24.22.0. Conceptual impact class only.
High-level only. Not a reproduction guide.
Exploitation status
CISA KEV
Not in CISA KEV as of .
Last verified 23 Oct 2026 against CISA KEV catalog 2026.10.21. CVE-2026-111497 is not listed.
First seen
No first-seen source recorded.
No authoritative source reports in-the-wild exploitation as of 23 Oct 2026. Imperva validated RCE in a lab on the official Node.js 24.22.0 image.
What defenders should do today
Do today
- 1
Upgrade Node.js
Move to 22.23.4, 24.22.1, or 26.12.1 (or a later fixed release in the same line). Rebuild and redeploy container images that pin older tags. End-of-life lines (20.x, 23.x, 25.x and older) get no fix; upgrade to a supported line.
- 2
Upgrade Bun if used
Bun users should upgrade to 1.4.4 or newer.
This week
- 1
Limit untrusted Brotli paths while patching
Where practical, reject inbound Content-Encoding: br before request-body decompression, or disable Brotli request inflation. Restrict fetch() of untrusted Brotli responses. Filtering does not replace patching.
- 2
Check distribution Brotli packages
Linux distro packages of Node.js may use the system Brotli library. Apply the distribution Brotli update as well as the Node.js version bump.
Detection rules
Sigma
Linux Shell Spawned By Node.js Process
title: Linux Shell Spawned By Node.js Process id: 5a1805d1-834c-574d-97be-837f7dcff9f8 status: experimental description: Hunts for a Unix shell started directly by a Node.js process. Imperva showed CVE-2026-111497 (Node2Shell) running attacker-supplied code inside the Node.js process, so new shells under node on servers that never shell out are worth a look. references: - https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/ - https://nodejs.org/en/blog/vulnerability/october-2026-security-releases author: vuln2shell date: 2026-10-23 tags: - attack.execution - attack.t1059.004 - cve.2026-111497 logsource: category: process_creation product: linux detection: selection: ParentImage|endswith: '/node' Image|endswith: - '/sh' - '/bash' - '/dash' condition: selection falsepositives: - Node.js applications, build tools and package scripts that legitimately run shell commands level: mediumBy vuln2shell, . Source. License: CC0 1.0
Written by vuln2shell. Untested, tune before use.
Generic post-exploitation hunt grounded in Imperva's code-execution finding. Baseline first; many Node.js apps shell out.
SPL (Splunk)
Node.js process crashes on Linux hosts
(sourcetype=syslog OR sourcetype=journald OR sourcetype=linux_messages_syslog) "segfault" TERM(node) | stats count min(_time) as firstTime max(_time) as lastTime by host | sort - countBy vuln2shell, . Source. License: CC0 1.0
Written by vuln2shell. Untested, tune before use.
Imperva notes unexpected process exits during decompression may help prioritise investigation but are not a stand-alone sign of exploitation. Correlate with Node.js version and Brotli traffic.
KQL (Microsoft Sentinel / Defender)
Devices with CVE-2026-111497 in Defender Vulnerability Management
Exposure checkDeviceTvmSoftwareVulnerabilities | where CveId == "CVE-2026-111497" | project DeviceName, OSPlatform, SoftwareVendor, SoftwareName, SoftwareVersion, VulnerabilitySeverityLevelBy vuln2shell, . Source. License: CC0 1.0
Written by vuln2shell. Untested, tune before use.
Exposure query in the same form Microsoft publishes for other CVEs. Returns nothing until MDVM maps this CVE; Imperva warns package inventories can miss Node.js binaries bundled in containers.
LogScale (CrowdStrike)
Shell spawned by a Node.js process (Falcon)
#event_simpleName=ProcessRollup2 event_platform=Lin | ParentBaseFileName=node | FileName=/^(sh|bash|dash)$/i | groupBy([aid, ComputerName, FileName, CommandLine], limit=max)By vuln2shell, . Source. License: CC0 1.0
Written by vuln2shell. Untested, tune before use.
Same logic as the Sigma rule above. Baseline first.
Suricata / Snort
Inbound HTTP request with a Brotli Content-Encoding (exposure mapping)
Exposure checkalert http $EXTERNAL_NET any -> $HOME_NET any (msg:"VULN2SHELL HUNTING Inbound HTTP request with Content-Encoding br (CVE-2026-111497 exposure mapping)"; flow:established,to_server; http.header; content:"Content-Encoding|3a 20|br|0d 0a|"; nocase; reference:cve,2026-111497; reference:url,www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/; classtype:misc-activity; sid:1000001; rev:1;)By vuln2shell, . Source. License: CC0 1.0
Written by vuln2shell. Untested, tune before use.
Imperva says untrusted Brotli request bodies reach the vulnerable decoder via Express 5 / body-parser 2. This finds where such traffic arrives; it is not an exploit signature. Local sid; renumber to fit your local range.
More detection content
- Node2Shell: From Brotli Data to Remote Code Execution
By Imperva Red Team (Ron Masas), . Defender guidance used for the vuln2shell rules. Imperva WAF rules are product-only.
- Aikido: Node2Shell guidance
By Aikido,
- Node.js October 2026 security releases
By Node.js Project,
Vendor signatures
| Signal | Log source | What to look for |
|---|---|---|
| Imperva WAF rules for CVE-2026-111497 | WAF / IPS event logs | Imperva states it added WAF rules for CVE-2026-111497. |
Affected products
Products that share
Distro packages of Node.js may link the system Brotli library. Check both the Node.js version and the Brotli package.
| Product | Status | Fixed version / ETA | Advisory | Notes |
|---|---|---|---|---|
| Containers, cloud, CDN & hosting platforms6 | ||||
| Google Brotli libraryGoogle | Affected | 1.0.10 / 1.1.1 / 1.2.1 | Users need to update any Brotli libraries or binaries between 1.0.3 through 1.2.0 to the latest available version: 1.0.10 or 1.1.1 or 1.2.1. | |
| Node.js 20.x / 23.x / 25.x (EOL)Node.js Project | Affected | No fix (upgrade to a supported line) | It's important to note that End-of-Life versions are always affected when a security release occurs. Upgrade to 22.23.4, 24.22.1, or 26.12.1. | |
| Node.js 22.xNode.js Project | Affected | 22.23.4 | Affects Node.js 26.x, 24.x, and 22.x. Fixed in Node.js v22.23.4. | |
| Node.js 24.xNode.js Project | Affected | 24.22.1 | Affects Node.js 26.x, 24.x, and 22.x. Fixed in Node.js v24.22.1. | |
| Node.js 26.xNode.js Project | Affected | 26.12.1 | Node.js Brotli decoder out-of-bounds write permits remote code execution (CVE-2026-111497) - (high). Downloads: Node.js v26.12.1. | |
| BunOven | Affected | 1.4.4 | For Bun, upgrade to 1.4.4 or newer. | |
Timeline4
Key events
Newest first.
NVD publishes CVE-2026-111497 with Google CNA CVSS 4.0 score 9.2.
SourceImperva Red Team publishes Node2Shell analysis and confirms RCE on Node.js 24.22.0.
SourceAikido publishes defender-oriented Node2Shell guidance covering Express, fetch(), and Bun.
SourceNode.js publishes security releases 22.23.4, 24.22.1, and 26.12.1, disclosing CVE-2026-111497.
Source
Full timeline (4)
Thu 22 Oct 20263
Wed 21 Oct 20261
Node.js publishes security releases 22.23.4, 24.22.1, and 26.12.1, disclosing CVE-2026-111497.
Source
News & write-ups
PoC index (for defenders)
Public proof-of-concept links for defensive validation, with a source and a validation status.