Skip to content

Image: cdn.prod.website-files.com · rights & removal

Executive Summary

A critical vulnerability, CVE-2026-111497 (also termed "node2shell" or "Broccoli2Shell"), affects the Google Brotli compression library through an out-of-bounds write flaw in versions 1.0.3 through 1.2.0 across various platforms. This vulnerability allows a remote, unauthenticated attacker to potentially corrupt memory, leak sensitive data, crash processes, or execute arbitrary code by sending maliciously crafted Brotli streams. The disclosure initially surfaced with Node.js on October 21st, followed by Python disclosures the next day, and subsequent reports affected other HTTP-using services like .NET and Java.
Patching strategies involve updating runtime versions (e.g., Node.js to specified versions or native libraries to 1.2.1+), rebuilding applications, or leveraging vendor-provided patched container images when immediate patches are unavailable for the specific platform. Workarounds exist that involve rejecting Brotli content encoding at load balancers or disabling Brotli decoding outright in clients and middleware until official fixes can be applied universally.

Facts Only

CVE-2026-111497 affects Brotli decoder versions 1.0.3 through 1.2.0 on all platforms; it carries a CVSS v4.0 score of 9.2 (Critical).
The flaw is an out-of-bounds write in the Google Brotli decoder function DecodeBlockTypeAndLength().
Node.js disclosed the vulnerability on Wednesday, October 21st, resulting in "node2shell."
Python packages were found vulnerable to CVE-2026-111497 on Thursday, October 22nd.
The flaw was fixed in Brotli's source code on February 27th but was not released until October 21st.
Fixes became available for Node.js, Bun, Envoy, Istio, .NET, Python, Java brotli4j, libbrotli, and several Linux distributions by October 26th.
SUSE and standard Red Hat Enterprise Linux repositories lacked a fix as of the update on October 26th.
Workarounds include rejecting Content-Encoding: br requests at proxies or removing 'br' from Accept-Encoding headers in outbound requests.

Full Take

The narrative frames this vulnerability disclosure not merely as a patching urgency, but as a systemic failure of the software supply chain—a critical security fix existing months before its public awareness and integration into downstream products like Node.js or Python packages. This echoes historical patterns where foundational infrastructure components become latent time bombs due to unrecognized internal fixes. The assumption driving this advisory is that an attacker can leverage any application capable of decoding compressed HTTP traffic, turning commonplace web interactions into potential exploitation vectors regardless of whether the vulnerable library is explicitly called in application code.
The structural push here utilizes a dual approach: presenting granular technical data (the function failure, CVSS score) alongside broad urgency markers ("upgrade now," "treat it as urgent anyway"). This combination compels immediate action while simultaneously validating technical diligence. The proposed solutions—vendor patches versus deployment workarounds (e.g., disabling decoding)—effectively establish a limited dichotomy for the reader: choose vendor certainty or accept transitional risk management at the perimeter.
The deeper implication is one of dependency opacity; even if an application imports no Brotli, it can still be compromised if a third-party HTTP client relies on a vulnerable transitive dependency. This elevates vulnerability remediation from code audit to infrastructure mapping. Who benefits? Security vendors and those who provide immediate, hardened container images during patch lag. Who bears the cost? Operators forced into complex triage across disparate technology stacks (Node vs. Python vs. Java).
How might one critically interrogate this rapid disclosure cycle? If patches are being "rolled out" across dozens of ecosystems simultaneously, how granular is the definition of a "fix"? What downstream interactions with Brotli—beyond simple request/response body handling—might still present an unquantified attack surface?
Patterns detected: none

From the original · Aikido Security Research

TL;DR ⚠️ Brotli is a widely used compression library from Google. On Wednesday, October 21st NodeJS disclosed CVE-2026-111497, dubbed “node2shell,” wherein a Node.js process that decompresses attacker-controlled Brotli data can be made to leak memory or run arbitrary code.
Read the full story at aikido.dev
Node2Shell evolves to HTTP2Shell. Brotli flaw (CVE-2026-111497) blast radius affects many libraries & apps using HTTP. | Huntaegis