Skip to content

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

Executive Summary

A critical vulnerability, CVE-2026-111497, has been identified in the Google Brotli compression library, leading to potential memory leaks or arbitrary code execution when processing attacker-controlled compressed data. The flaw is an out-of-bounds write present in versions 1.0.3 through 1.2.0 across all platforms and affects implementations like Node.js (where it was dubbed "node2shell") and Python packages. Since the library is widely used for HTTP compression, the exposure is broad, affecting any application that decodes Brotli streams without patching. Although the root cause was fixed in the upstream source code back in February, its security significance was only recognized recently, requiring dependent projects to implement updates themselves. Users must immediately review dependencies utilizing Brotli and apply relevant patches or utilize available workarounds until upgrades are complete.

Facts Only

CVE-2026-111497 is an out-of-bounds write in the Google Brotli decoder affecting versions 1.0.3 through 1.2.0 on all platforms. Node.js disclosed "node2shell" related to this CVE on Wednesday, October 21st. Python packages were also found vulnerable on Thursday, October 22nd. The flaw exists because the decoder accepts more bytes than it should in certain block switch scenarios. Patches are available for libbrotli, Python, C++, NodeJS, bun, and Envoy as of October 23rd. For Python, upgrading to Brotli 1.2.1 or brotlicffi 1.2.1.0 is required, though tooling like pip-audit may not flag the issue yet. Apache's standard modbrotli does not decode Brotli by default.

Full Take

The immediate pattern here involves the propagation risk inherent in fundamental infrastructure layers. A vulnerability fixed deep within a core, widely used compression library—Brotli—highlights the danger of layered dependency chains. The delay between the original fix (February) and public recognition (October) demonstrates how deeply embedded systems can remain susceptible, treating memory-safety issues as maintenance oversights rather than immediate security crises until a high-profile disclosure forces awareness. This vulnerability is not merely about one piece of software; it maps to critical interfaces: HTTP handling across multiple major languages and services like Envoy and Istio. The narrative shifts from a technical exploit (out-of-bounds write) to an existential operational risk for any service accepting external, compressed payload data.
This scenario forces organizations into defensive layering—whether by uninstalling packages, blocking `Content-Encoding: br` at the perimeter, or upgrading runtimes—showing that security resilience often relies on application-level triage when upstream patching lags. The primary unstated assumption is reliance on the completeness of vendor advisories; many applications require manual dependency mapping to uncover transitive exposure.
How can organizations move from reactive CVE response to proactive architectural hardening against fundamental library weaknesses? What implicit trust is placed in the 'fast path' of a decoder, and what checks could preemptively validate stream integrity independent of vendor patches? If core network protocols become vectors for arbitrary code execution via ubiquitous compression, does this necessitate decoupling critical data ingress from universal decompression libraries?
Patterns detected: none

From the original · Aikido Security Research

TL;DR ⚠️ Brotli is a used widely compression library from Google. On Wednesday, October 21nd 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 HTTPs. | Huntaegis