A high-severity memory-corruption vulnerability residing deep within Google’s widely used Brotli compression and decompression library has exposed a vast array of modern software development ecosystems to potential security compromises. Tracked under the identifier CVE-2026-111497, the flaw impacts numerous popular programming environments, runtimes, proxies, and package managers that incorporate unpackers for Brotli-compressed data. Among the heavily utilized products and packages affected by the vulnerability are Bun, the Python Brotli and brotlicffi packages, Envoy proxies, Istio service meshes, and multiple modern versions of Node.js.
The security issue stems from how the C-based Brotli implementation handles specialized, maliciously crafted compressed data. When processed by an unpatched decoder, the vulnerability allows incoming data to overwrite boundaries past the end of an allocated buffer, directly corrupting the program’s underlying memory. Depending on the architecture and environment of the host system, this type of memory corruption can manifest as application crashes, unexpected memory leaks, or, in more severe scenarios, the execution of arbitrary, attacker-controlled code.
The origin of the vulnerability traces back to the foundational C code used to unpack Brotli streams. Because Brotli is a standard compression format originally developed by Google and deployed globally across the internet to reduce bandwidth and shrink web page sizes, its core decoding logic has been widely adopted and bundled directly into various language runtimes, web servers, and third-party libraries. Because each affected program ships its own localized copy or integration of Google’s decompression code, a centralized patch to the operating system is insufficient; every individual software project must independently update its internal implementation of the Brotli library to neutralize the threat.
Initial discoveries and subsequent technical validations by security researchers have underscored the gravity of the issue. Experts from Imperva’s Red Team successfully demonstrated that remote code execution is entirely feasible against an unpatched Node.js build under specific conditions, an exploit vector they informally referred to as "Node2Shell." During their testing, the researchers managed to execute attacker-supplied code on an unmodified Linux build of Node.js version 24.22.0 running on an ARM64 architecture. This successful breach was achieved by delivering the payload both through a standard HTTP fetched response and as an embedded Express request body. However, researchers noted that the exploit required multiple attempts and has not been publicly released, while similar remote code execution demonstrations have not yet been replicated across other software packages.

The vulnerability was initially uncovered and reported by the Codex Security team at OpenAI, which categorized the bug as a mechanism enabling unauthenticated remote code execution via Brotli streams. According to OpenAI’s technical analysis, the security risk operates symmetrically across both client and server architectures. An unpatched server accepting compressed input could potentially be compromised by a malicious client sending a crafted payload, just as an unpatched client accepting compressed data—such as command-line tools like curl utilizing compression flags—could fall victim to a hostile server.
The scope of affected software spans multiple language ecosystems and infrastructure layers. In JavaScript and TypeScript environments, Node.js versions 22.x, 24.x, and 26.x prior to the security patches, as well as version 20.x and older iterations that have reached their end-of-life status, are vulnerable. For Node.js and Bun, exposure typically occurs when the built-in fetch utility reads an incoming HTTP response carrying the "Content-Encoding: br" header, or when request-body parsing utilities such as Express 5 and body-parser handle uploaded Brotli payloads. Standard, plain Node.js HTTP servers that do not explicitly process request bodies independently are generally insulated from this specific vector.
In cloud-native infrastructure, Envoy proxies and Istio service meshes are also impacted, though their exposure is conditional. These platforms are vulnerable only when Brotli decompression functionality has been explicitly enabled within their configurations, such as through specialized Envoy filters. If Brotli decompression remains turned off in these proxy environments, the underlying flaw cannot be reached or triggered by external traffic.
The Python ecosystem faces a distinct distribution risk due to how third-party packages handle HTTP requests. Vulnerabilities affect the native Python Brotli package up to version 1.2.0 and the brotlicffi package up to version 1.2.0.x. Once either of these packages is installed on a system, popular HTTP client libraries including requests, urllib3, httpx, and aiohttp automatically utilize them to decode Brotli-compressed server responses. Consequently, a Python application can be rendered vulnerable simply by having the package present in its environment, even if the application code never explicitly imports or calls the Brotli library directly.
The timeline surrounding the vulnerability features an unusual twist. Technical analysis revealed that the core source code patch required to resolve the bug was actually committed to Google’s Brotli source repository months earlier, on February 27. However, because the security implications of the bug were not fully understood at that time, no official Brotli release was issued containing the fix until October 21, when Node.js and Google simultaneously published security advisories and updated packages.

Coordinated responses from product maintainers and security vendors followed the October 21 disclosure. Node.js credited Khai Tran and Sylvie Mayer of OpenAI’s Codex Security for identifying and reporting the issue, while project maintainers Matteo Collina and Antoine du Hamel developed and integrated the official remedies. Fixed versions have since been rolled out across the board, including Google Brotli versions 1.0.10, 1.1.1, and 1.2.1; Node.js versions 22.23.4, 24.22.1, and 26.12.1; Bun version 1.4.4; and updated releases for Envoy, Istio, and various Python package implementations.
Severity ratings assigned to CVE-2026-111497 vary among industry organizations. Google classified the vulnerability with a critical CVSS score of 9.2 out of 10. Other organizations view the risk profile through different operational lenses, with Node.js classifying the issue as high severity and Red Hat rating it as an 8.1 important advisory. Despite these elevated risk scores, global cybersecurity monitoring agencies, including the Cybersecurity and Infrastructure Security Agency, reported zero instances of active, in-the-wild exploitation shortly after disclosure, noting that automated exploitation vectors were absent and reliable public proof-of-concept exploit code remained scarce.
Mitigating the risk requires prompt administrative action across all affected environments. System administrators and developers are urged to upgrade vulnerable software packages and runtime environments to their respective patched versions. Because active application processes retain the vulnerable decoder code in memory during execution, simply updating files on disk is insufficient; services must be fully restarted, and container images must be completely rebuilt to clear the outdated libraries from memory.
For environments where immediate patching is temporarily unfeasible, security advisories recommend disabling the processing of untrusted Brotli data wherever possible. Web application firewalls offer limited protection, as demonstrated by services like Vercel, which deployed emergency firewall rules upon disclosure but noted that such perimeter defenses cannot inspect responses that internal application functions fetch from third-party servers. For these blind spots, updating the underlying runtime or library remains the only comprehensive defense. Additionally, dependency scanning tools and automated vulnerability databases may lag behind initial disclosures, making manual verification of installed library versions an essential step for maintaining comprehensive organizational security.
