
Broccoli2shell: Everything You Need To Know About The Critical Brotli Decoder Vulnerability
CVE-2026-111497 (Broccoli2Shell, also Node2Shell and HTTP2Shell) is an out-of-bounds write in the upstream Brotli C decoder. It affects Node.js, Bun, Envoy Proxy, Istio and Python packages, and can lead to memory corruption, information disclosure, crashes or RCE when untrusted Brotli data is decompressed. Wiz reports 91% of cloud environments have vulnerable resources. The post lists patching, inventory, rebuild and temporary mitigation steps.
What it is
CVE-2026-111497 (Broccoli2Shell, also called Node2Shell and HTTP2Shell) is an out-of-bounds write in the upstream Brotli C decoder. Khai Tran and Sylvie Mayer (OpenAI Codex Security) found and reported it. Matteo Collina and Antoine du Hamel fixed it for Node.js. Ron Masas (Imperva Red Team) demonstrated exploitation, and Aikido analyzed the impact on Python.
How it works
The decoder mishandles specially crafted compressed data during block processing and can write past allocated memory. An unauthenticated attacker who supplies malicious Brotli input can cause memory disclosure, crashes, or code execution with the privileges of the affected process. Researchers demonstrated exploitation against unpatched Node.js.
Preconditions / Affected
The application or one of its dependencies must decompress attacker-controlled Brotli data. That data can arrive in incoming HTTP requests, in responses fetched from external servers, in uploaded files, or in other untrusted content.
Some HTTP clients and frameworks decompress automatically when Brotli support is on, so an application can be exposed without mentioning Brotli in its own code. The page says to include indirect and transitive dependencies in the assessment.
Statically linked libraries and embedded copies of the decoder may also be affected. For these, the page says to check vendor advisories. End-of-life runtime branches should move to supported versions.
Wiz reports that 91% of cloud environments have vulnerable resources and 82% have publicly exposed Node.js instances.
What to do
- Upgrade Brotli libraries, Node.js, Python packages, Bun, Envoy Proxy and Istio to patched or later supported releases.
- Inventory VMs, Kubernetes clusters, containers, serverless functions and API gateways. Prioritize internet-facing services and workloads that handle untrusted compressed data.
- Update base images, lockfiles and bundled libraries, then rebuild and redeploy containers. Restart running processes and verify the patched components are actually loaded.
- If patching must wait, disable Brotli decompression or reject Brotli-encoded requests before they reach vulnerable components. Restrict untrusted compressed responses where feasible.
- Review WAF, application and network logs for suspicious Brotli traffic, unexpected crashes and anomalous process behavior.
Caveats
The page names no fixed version numbers, so check each vendor's advisory. It says the temporary mitigations may reduce exposure but do not replace patching. The post gives no detection signatures or indicators of compromise. Wiz customers can use a prebuilt query in the Wiz Threat Center.
Organisations named here
- Antoine du Hamel
- Broccoli2Shell
- HTTP2Shell
- Khai Tran
- Matteo Collina
- out-of-bounds write
- Ron Masas
- Sylvie Mayer
- Wiz Research
CVEs named here
- CVE-2026-111497
Technologies named here
- Wiz Threat Center
- Brotli C decoder
- Node.js
- Wiz Research data
- WAF, application and network logs
- Bun
- Envoy Proxy
- Istio
- Python packages that bundle Brotli
- Cloud workloads using Brotli-enabled components
- Brotli
- Python
Techniques named here
- Delivery paths
- Possible outcomes
Threat actors named here
- Node2Shell
Related in AppSec
Flowise MCP Security Bypass Enables RCE
Inside an Oracle Database SQL Injection Attack | Huntress
OASIS
