Skip to content
Quantum Secure Labs
Cybersecurity News

Node2Shell: Brotli flaw CVE-2026-111497 forces patches for Node.js, .NET and Python

A critical flaw in Google's Brotli decoder (CVE-2026-111497, "Node2Shell") lets crafted compressed data corrupt memory. It affects websites, APIs and scripts in Node.js, .NET or Python that decompress Brotli from third…

By Quantum Secure Labs4 min read
Pantalla con código de servidor y terminal abiertos durante la actualización de una aplicación web
In this article

A critical flaw in Google's Brotli decoder (CVE-2026-111497, "Node2Shell") lets crafted compressed data corrupt memory. It affects websites, APIs and scripts in Node.js, .NET or Python that decompress Brotli from third parties. Node.js shipped patches on 21 October and Microsoft on the 25th: update today or ask your provider to confirm it.

Key facts

  • CVE-2026-111497 is an out-of-bounds write in the Brotli decoder. Google rates it CVSS 4.0 9.2 (critical) and Microsoft CVSS 3.1 8.1: critical for .NET and Visual Studio, important for PowerShell.
  • It affects Brotli 1.0.3 to 1.2.0. Fixed versions 1.0.10, 1.1.1 and 1.2.1 were released on 21 October.
  • Node.js fixed it in 22.23.4, 24.22.1 and 26.12.1. Node.js 20 and earlier are out of support and will not be patched.
  • On 25 October Microsoft released .NET 8.0.33, 9.0.22 and 10.0.14, plus .NET 11 RC3, and updated Visual Studio and PowerShell. .NET Framework is not affected.
  • No real-world exploitation has been reported, but Microsoft marks it as "Exploitation More Likely" and publicly disclosed.

Am I affected if I don't know whether my app uses Brotli?

You need to check. The risk appears when a service decompresses Brotli coming from outside: a response from another site or a request body. According to SecurityWeek, Imperva achieved code execution on the official Node.js 24.22.0 image for Linux arm64, both with a response fetched via fetch() and with a request body in Express 5. The exploit has not been published.

In Python the problem is quieter. If Brotli or brotlicffi is installed, HTTP clients such as requests, urllib3, httpx and aiohttp decode Brotli responses on their own, without anyone coding it. According to The Hacker News, dependency scanners may not detect this yet. Fixed versions are Brotli 1.2.1 and brotlicffi 1.2.1.0.

.NET is in a somewhat better position: Microsoft says Brotli decompression is not enabled by default in .NET or ASP.NET Core. Even so, it rates the patch as critical.

What if I only use WordPress, Microsoft 365 or SaaS?

If you have no custom code, your direct risk is low. Your providers may still be exposed, though. The flaw also reaches Bun (fixed in 1.4.4), Envoy and Istio, which already have updates. JFrog reported on 25 October that it affects FFmpeg, ClickHouse and Apache Arrow, and that some of them had no fixed version yet. Ask your development agency and your hosting provider whether they have updated.

Is updating the server enough?

Not always. Self-contained or NativeAOT .NET apps carry the runtime inside, and so do container images. They must be rebuilt and redeployed. Node.js has no internal mitigation: updating is the only fix.

What to do today

  1. Take inventory: which custom websites, APIs, shops or back offices you run on Node.js, .NET or Python, and who maintains them.
  2. Ask for written confirmation of these versions: Node 22.23.4, 24.22.1 or 26.12.1; .NET 8.0.33, 9.0.22 or 10.0.14; Brotli or brotlicffi 1.2.1.
  3. Require self-contained or NativeAOT .NET apps and container images to be rebuilt and redeployed.
  4. If you can't update yet, reject requests with Content-Encoding: br at the proxy or web application firewall.
  5. In Python, uninstall Brotli and brotlicffi if you don't need them.
  6. If anything runs on Node 20 or earlier, set a date to migrate to a supported version.
  7. Update Visual Studio and PowerShell on your technical team's machines.

What it means for a small business

This is not an active-exploitation emergency, but it isn't something to leave until next month either. Three signals point that way: a code execution demo already exists, Microsoft considers exploitation likely, and the window between patch and attacks tends to be short.

The tricky part is that many small companies don't know what technology runs underneath their website, shop or integrations. That blind spot is the real risk. If your provider replies "everything's fine" without giving specific versions, they haven't answered you. Ask for numbers.

Node 20 deserves separate attention. If your app depends on an unsupported version, this flaw won't get a fix, and neither will the next one. That's technical debt that now carries a security cost. If you need to sort out that inventory and see what you have exposed, that's the kind of review we do in cybersecurity.

FAQ

Is it being exploited already?

No real-world exploitation has been reported. There is a code execution demo on Node.js, but the exploit has not been published.

Does it affect .NET Framework?

No. According to Microsoft, .NET Framework is not affected. The patches cover .NET 8, 9, 10 and .NET 11 RC3.

Can I mitigate it without updating Node.js?

Not within Node.js. As a stopgap, you can reject Content-Encoding: br at the proxy or web application firewall.

Sources

Worried about a threat like this one?

We review your exposure and show you how to protect yourself.

See our cybersecurity service

Cybersecurity News

Malicious LiteLLM 1.107.0 on PyPI and Docker: a leaked GitHub key opened the door to the attack

A malicious LiteLLM release, version 1.107.0, was published on 21 October to PyPI and Docker with a credential stealer and a backdoor. It affects anyone who installed LiteLLM without pinning a version or used tags like…

Cybersecurity News

Threat actor k0t targets exposed Fortinet and Palo Alto firewalls and VPNs: over 70,000 credentials

Group-IB and NyxLab have uncovered a campaign by the actor k0t that scans the internet for vulnerable Fortinet and Palo Alto firewalls and VPNs, regardless of sector or size. It is linked to Qilin ransomware. If you…

Cybersecurity News

GitLab fixes a CVSS 10.0 flaw that lets unauthenticated attackers run code on self-hosted servers

GitLab has released patches for CVE-2026-110264, a maximum-severity flaw (CVSS 10.0) that lets an attacker with no credentials run code on self-hosted GitLab servers. GitLab.com is not affected. If your company or your…

Want to apply these ideas to your business?

Tell us about your case and we'll show you how to apply these strategies to your project.