Skip to content

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

Executive Summary

A vulnerability, CVE-2026-111497, affects the Google Brotli compression library and its implementation across various languages and service applications, including Node.js, Python, C++, bun, and Envoy. The flaw resides in the Brotli decoder's handling of block switches, which allows an attacker to send a crafted stream to cause an out-of-bounds write in memory, potentially leading to information leakage or arbitrary code execution. This vulnerability was first disclosed in connection with Node2Shell. The root cause was fixed in the Brotli source code but the fix was not widely deployed, meaning many environments remain exposed if they use older versions of the library. Patches are available for libraries like libbrotli and Python packages, requiring users to update specific versions to remediate the risk.

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 across all platforms.
* The vulnerability allows a remote, unauthenticated attacker to send a crafted Brotli-compressed stream to corrupt memory, leak data, crash processes, or execute arbitrary code.
* Node.js is affected through its bundled Brotli library.
* The flaw exists in the `DecodeBlockTypeAndLength()` function concerning block switches within the decoder.
* Versions 1.2.0 and earlier are vulnerable across platforms.
* Python packages, specifically Brotli and brotlicffi versions 1.2.0.x, are vulnerable when used by HTTP clients like requests and httpx.
* Affected Python dependencies include urllib3, requests, httpx with the brotli extra, and aiohttp when Brotli is installed.
* Patches require upgrading to Brotli 1.2.1 or later and brotlicffi 1.2.1.0 or later.
* Specific software requiring updates include Node.js (to versions like 22.23.4), libbrotli, Python packages, curl/libcurl dependencies, Bun, and Envoy.
* Apache’s standard modbrotli does not decode Brotli by default.

Full Take

The narrative hinges on the gap between a patch existing in source code and its deployment across the wide ecosystem of compiled software and dependency management systems. The pattern observed is the systemic risk introduced by deeply embedded, shared, yet unverified dependencies, particularly those handling untrusted network input. The fact that vulnerabilities in fundamental compression algorithms translate into memory corruption flaws demonstrates how theoretical mathematical weaknesses can manifest as concrete security exploits when implemented across disparate software stacks. The complexity lies not just in patching a single library but in tracking transitive dependencies and ensuring recompilation occurs everywhere the dependency is bundled, which highlights the fragility of supply chain integrity. The layered approach to remediation—providing workarounds for immediate exposure while waiting for patches—is a necessary reflection of reality where zero-day responses are often reactive rather than proactive system design. The implications suggest that security assurance must shift from trusting final application binaries to rigorously verifying every layer of dependency, especially when dealing with fundamental utility functions.

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 HTTPs. | Huntaegis