Published November 9, 2026
Summary
A critical flaw in Google’s Brotli decompression library lets an attacker corrupt a server’s memory and potentially run code on it. The attacker only has to get the server to decompress specially crafted Brotli data. The flaw is nicknamed “Node2Shell”, “HTTP2Shell” and “Broccoli2Shell”, and it is rated Critical (CVSS v4.0 9.2). On October 27, 2026, CISA added it to its catalog of vulnerabilities being actively exploited. Public exploit code is available.
Update now. Brotli versions 1.0.3 through 1.2.0 are affected. Fixes are available for:
- Node.js
- Bun
- .NET
- Envoy
- Istio
- the Python Brotli packages
Who is affected
Brotli is built into many runtimes and servers. You are affected if an internet-facing system meets both of these conditions:
- it runs an affected version below;
- it decompresses Brotli data that an outsider can influence.
- Node.js. Brotli is bundled in every release.
- Affected: 22.x below 22.23.4, 24.x below 24.22.1 and 26.x below 26.12.1.
- Node.js 18 and 20 are end of life and will not be fixed.
- This covers websites and APIs built on Next.js, Express, Nuxt and similar frameworks.
- Two common ways to be exposed: Node’s built-in
fetch()decompresses Brotli responses automatically, so a server that fetches content from other sites is exposed; and a server that accepts Brotli-compressed request bodies is exposed too.
- Bun: below 1.4.4.
- .NET (ASP.NET Core):
- Affected: 8.0.0 – 8.0.32, 9.0.0 – 9.0.21, 10.0.0 – 10.0.13, and .NET 11 previews before RC3.
- You are exposed only if one of these applies:
- Brotli request decompression is turned on;
- HttpClient automatic Brotli decompression is turned on;
- the application passes untrusted data to
BrotliStreamorBrotliDecoder.
- Both decompression features are off by default.
- .NET Framework is not affected. Unsupported versions such as .NET 6 get no fix.
- Envoy: below 1.36.12, 1.37.8, 1.38.6 and 1.39.3, and only when a Brotli decompressor is configured.
- Istio: 1.29.0 – 1.29.8, 1.30.0 – 1.30.5 and 1.31.0 – 1.31.1, and only when Brotli decompression is enabled (for example through an EnvoyFilter). Istio 1.29 is end of life.
- Python: brotli 1.0.3 – 1.2.0 and brotlicffi below 1.2.1.0. HTTP libraries such as requests and urllib3 decode Brotli responses automatically when either package is installed.
- Other software that bundles Brotli, such as Linux
libbrotlipackages or the Go brotli library before 1.2.7: check with your vendor.
How to check if you’re affected
Check the version that actually serves traffic. That means on the server or inside the container, not on a developer’s laptop.
- Node.js:
- Run
node -v. - For containers, check what the base image tag resolves to.
- On managed platforms (serverless functions, hosted web apps), check the configured Node.js runtime and confirm the provider has rolled out the patched release. Redeploy if needed.
- Run
- Bun: run
bun --version. - .NET:
- Run
dotnet --list-runtimesand checkMicrosoft.NETCore.AppandMicrosoft.AspNetCore.App. - Self-contained and NativeAOT applications carry their own runtime, so check the version they were published with.
- Run
- Envoy: run
envoy --version, and search your configuration for a decompressor filter using the Brotli library. - Istio: run
istioctl version, and look for EnvoyFilters that enable Brotli decompression. - Python: run
pip show brotli brotlicffi. - Linux packages: check
libbrotli1(Debian/Ubuntu) orbrotli(Red Hat) against your distribution’s security tracker.
If a provider hosts or manages the system for you, ask them in writing to confirm they have deployed the fix.
Immediate actions
- Inventory internet-facing systems running the software above. Start with servers that fetch content from third-party sites or accept compressed uploads.
- Update to a fixed release:
| Software | Update to |
|---|---|
| Node.js | 22.23.4, 24.22.1 or 26.12.1 (move off 18 and 20) |
| Bun | 1.4.4 |
| .NET | 8.0.33, 9.0.22 or 10.0.14 (.NET 11: RC3) |
| Envoy | 1.36.12, 1.37.8, 1.38.6, 1.39.3 or 1.40.0 |
| Istio | 1.30.6 or 1.31.2 (1.29.9 is the final 1.29 release) |
| Python | brotli 1.2.1, brotlicffi 1.2.1.0 |
| Google Brotli library | 1.0.10, 1.1.1 or 1.2.1 |
- Rebuild and redeploy:
- Rebuild container images on patched base images and redeploy them.
- Republish self-contained and NativeAOT .NET applications. Updating the shared runtime alone does not fix them.
- Restart services so the new runtime is loaded.
- Re-check the running version after the restart.
If you can’t patch right away
Until updates are in place, stop affected systems from decompressing Brotli data from untrusted sources:
- At your WAF, load balancer or reverse proxy: reject requests with
Content-Encoding: brunless you need them. - Servers that fetch remote content: limit which outside sites they can reach.
- .NET: do these only if you already use the features:
- remove the
brprovider from ASP.NET Core request decompression; - remove Brotli from HttpClient’s
AutomaticDecompressionsetting.
- remove the
- Envoy and Istio: remove the Brotli decompressor filter or EnvoyFilter.
- Systems you can’t patch: put them behind a VPN or IP allowlist, or take them offline.
None of these replace patching.
Verify and detect
- Confirm the running version after every update, using the checks above.
- Watch for signs of attempted exploitation:
- Node.js, Bun, .NET or Envoy processes crashing with memory errors (segmentation faults), especially around requests or responses with
Content-Encoding: br; - shells or download tools started by web server processes;
- unexpected outbound connections;
- new or changed files in application directories.
- Node.js, Bun, .NET or Envoy processes crashing with memory errors (segmentation faults), especially around requests or responses with
- If you see any of these, isolate the system, preserve its logs, and contact your incident response provider or cyber insurer.
References
- CISA: two vulnerabilities added to the Known Exploited Vulnerabilities catalog (October 27, 2026)
- Node.js October 2026 security releases
- GitHub advisory GHSA-9v8h-qqgm-4m35 (Brotli)
- Microsoft .NET security advisory CVE-2026-111497
- Envoy advisory GHSA-3wvj-j6qm-62mr
- Istio ISTIO-SECURITY-2026-007
- Canadian Centre for Cyber Security AL26-027
This advisory reflects information available as of November 6, 2026, and will be updated as details change. It is general guidance and not a substitute for advice from your IT provider or security vendor.



