Critical Memory-Corruption Vulnerability in Google Brotli Decoder Threatens Runtimes, Proxies, and Python Ecosystems

A critical memory-corruption vulnerability residing within Google’s widely adopted Brotli data-decompression library has exposed a vast array of modern software infrastructure, including prominent JavaScript runtimes, high-performance web proxies, and essential Python packaging ecosystems. Tracked officially under the identifier CVE-2026-111497, the flaw centers on how the C-based Brotli implementation handles meticulously crafted, malicious compressed data streams. When exploited, the vulnerability allows an attacker to write data past the designated boundaries of a buffer, corrupting adjacent program memory. This opens the door to severe downstream consequences, ranging from denial-of-service application crashes and memory leaks to arbitrary remote code execution (RCE) controlled entirely by the threat actor.
The discovery has triggered an urgent wave of coordinated patching across the global software supply chain. Because Google’s Brotli code is tightly coupled as a static or dynamic dependency embedded independently within numerous distinct software products, there is no single master patch. Instead, every affected project must independently update its internal implementation of the Brotli decoder library, secure new releases, and push those updates out to developers and system administrators worldwide.
Understanding the Mechanics of CVE-2026-111497
Brotli is an open-source lossless data compression algorithm developed by Google, originally introduced in 2015 as an optimized alternative to older formats like Gzip and Deflate. Designed primarily to improve web page load times and minimize bandwidth consumption across the internet, Brotli is deployed extensively by web servers, content delivery networks (CDNs), and modern HTTP clients to shrink text, JavaScript, CSS, and other assets.
The core vulnerability, CVE-2026-111497, resides directly inside the foundational C source code responsible for unpacking and parsing Brotli-compressed streams. Because this low-level C codebase is reused across numerous language runtimes, network proxies, and third-party libraries, the security flaw travels inheritantly into any ecosystem that compiles or links against the vulnerable versions of the Brotli repository (specifically versions 1.0.3 through 1.2.0).
When an unpatched program attempts to decompress a maliciously crafted Brotli stream, the decoder fails to properly validate buffer boundaries during the write operation. This out-of-bounds write condition corrupts system memory. Depending on the memory layout and the target application’s architecture, an attacker can leverage this corruption to overwrite critical function pointers or execution paths, ultimately executing arbitrary code on the underlying host machine.
A Comprehensive Landscape of Affected Software

The blast radius of CVE-2026-111497 is exceptionally wide due to the ubiquitous nature of Brotli compression in modern web traffic handling. Vulnerabilities of this magnitude typically require deep integration analysis across multiple technology stacks. Security advisories and project maintainers have identified a diverse array of impacted platforms, each requiring specific remediation paths:
- Google Brotli (C Library): The root upstream library versions 1.0.3 to 1.2.0 are vulnerable. Patches have been issued in versions 1.0.10, 1.1.1, and 1.2.1.
- Node.js: Major active release lines including v22.x, v24.x, and v26.x prior to the security updates were exposed. Older versions such as v20.x, which have reached end-of-life status, also contain the vulnerability. Fixes are deployed in versions 22.23.4, 24.22.1, and 26.12.1.
- Bun: The fast alternative JavaScript runtime was vulnerable in versions 1.4.3 and earlier, with a definitive fix integrated into version 1.4.4.
- Envoy Proxy: Multiple release lines of the cloud-native proxy (specifically versions 1.36 through 1.39) were affected if the optional Brotli decompressor filter was enabled. Patches are available across versions 1.36.12, 1.37.8, 1.38.6, 1.39.3, and 1.40.0.
- Istio Service Mesh: Versions 1.29, 1.30, and 1.31 are affected when Brotli decompression is actively enabled in routing configurations. Corrective updates have been released in versions 1.29.9, 1.30.6, and 1.31.2.
- Python Ecosystem (
brotliandbrotlicffi): The Python packaging index (PyPI) packagesbrotli(versions 1.2.0 and earlier) andbrotlicffi(versions 1.2.0.x and earlier) contain the vulnerable C-extensions. They have been addressed in versions 1.2.1 and 1.2.1.0, respectively. - cdxgen: Standalone binaries and container images for the software bill of materials (SBOM) generation tool in versions 13.4.0 and 12.8.8 and earlier are vulnerable when parsing untrusted input. Fixes are available in versions 13.5.0 and 12.8.9.
Attack Vectors: Clients, Servers, and Proxies
Exposure to CVE-2026-111497 depends heavily on whether an application actively processes untrusted, external Brotli data streams. The threat vector manifests differently depending on whether the software functions as a client, a server, or an intermediary proxy.
For JavaScript environments like Node.js and Bun, vulnerability exposure typically occurs in two primary scenarios: when the built-in fetch() API reads an external HTTP response containing the header Content-Encoding: br, or when request-body parsing middleware (such as Express 5 or body-parser 2) automatically unpacks incoming Brotli-compressed client uploads. Standard, unconfigured Node.js HTTP servers that do not actively parse incoming compressed request bodies remain safe from inbound client attacks unless specific middleware is deployed.
In contrast, the Python ecosystem faces a subtler and more pervasive risk. Simply having the brotli or brotlicffi package installed on a system environment can inadvertently introduce vulnerability exposure. Standard Python HTTP libraries—including requests, urllib3, httpx, and aiohttp—automatically detect and decode Brotli-encoded responses by default. Consequently, a Python application can be entirely vulnerable without its source code ever explicitly importing or interacting with the Brotli library directly.
For cloud-native infrastructure components like Envoy and Istio, the attack surface is strictly gated by configuration. These proxies are vulnerable only if administrators explicitly enable Brotli decompression filters to optimize egress or ingress traffic handling. If the decompressor filter is disabled, the flawed code path cannot be reached by external traffic.
Chronology and Disclosure Timeline
The lifecycle of CVE-2026-111497 features a unique historical anomaly that has drawn significant attention from vulnerability researchers. According to technical assessments, the root cause of the memory-corruption bug was inadvertently fixed in the upstream Brotli source code repository as early as February 27. However, because maintainers did not recognize the security implications of the bug at the time of the code commit, no formal point release of the Brotli library was issued to bundle the fix. The underlying flaw remained dormant in production distributions for months.

The situation changed dramatically on October 21, when security researchers from OpenAI’s Codex Security team—specifically identified as Khai Tran and Sylvie Mayer—formally disclosed the vulnerability after recognizing that the unreleased fix actually mitigated a severe remote code execution vector. Concurrently, Node.js maintainers Matteo Collina and Antoine du Hamel, alongside Google and other software vendors, scrambled to roll out emergency security releases.
Subsequent research by Imperva’s Red Team demonstrated the severity of the threat by successfully executing unauthorized code on an unpatched build of Node.js 24.22.0 running on a Linux ARM64 architecture. Dubbed "Node2Shell" by researchers, the demonstration involved delivering the malicious payload both as a fetched HTTP response and as an Express request body. OpenAI emphasized the bidirectional nature of the threat: an unpatched server accepting compressed payloads could be subverted by a malicious client, while an unpatched client retrieving compressed data from a malicious server could similarly fall victim to a total system compromise.
Industry Response, Severity Scoring, and Mitigation Strategies
Following the public disclosure on October 21, organizations across the cybersecurity landscape evaluated the risk level of CVE-2026-111497, resulting in varied severity scoring. Google, which assigned the CVE identifier, rated the vulnerability as critical with a CVSS score of 9.2 out of 10. Other organizations adopted more conservative or contextual metrics; Red Hat categorized the flaw as "important" with a score of 8.1, while Node.js classified it under its internal high-severity rating.
Despite the high theoretical severity, coordinated tracking by agencies such as the Cybersecurity and Infrastructure Security Agency (CISA) indicated that active exploitation in the wild remained at "none" during the initial disclosure window. Security firms and major cloud providers moved quickly to implement defensive measures. Web application firewall (WAF) providers, such as Vercel, deployed emergency rules on the day of disclosure to intercept malicious payloads at the edge. However, industry leaders cautioned that WAF protections have limitations; Vercel explicitly noted that edge firewall rules cannot inspect or protect against responses that backend serverless functions fetch independently from third-party servers, leaving runtime updates as the sole comprehensive defense.
Remediation requires a rigorous, multi-step protocol for system administrators and development teams:
- Update Dependencies: Upgrade all affected language runtimes, proxy installations, and C library dependencies to their respective patched versions (as detailed in the vendor advisory table).
- Restart Services: Because running processes maintain vulnerable library instances loaded dynamically in memory, simple package installation is insufficient. Administrators must completely restart services and rebuild container images to flush old runtime environments.
- Review Python Environments: Due to indirect dependency resolution in Python, developers must audit virtual environments manually. Software composition analysis (SCA) tools and automated dependency scanners (such as GitHub Dependabot) may experience delays in flagging PyPI packages because the original CVE record initially pointed exclusively to Google’s core Brotli repository rather than individual language wrappers.
- Implement Fallbacks: In enterprise environments where immediate patching is impossible due to complex deployment pipelines, security engineering teams recommend temporarily disabling Brotli decompression capabilities or stripping
brcompression acceptance profiles where feasible, keeping in mind that simply strippingbrfrom clientAccept-Encodingrequest headers may not prevent malicious servers from forcing compressed payloads onto clients.
As open-source ecosystems continue to grow increasingly interdependent, the Brotli memory-corruption vulnerability underscores the critical importance of robust supply-chain visibility, rapid cross-vendor coordination, and the rigorous auditing of foundational low-level libraries upon which modern web infrastructure depends.





