Advertisement

Node2Shell: Brotli Flaw Triggers Patching Across Microsoft, Node.js, Python Packages

Summary: An out-of-bounds write in Google’s Brotli decoder affects Node.js, .NET, PowerShell, and Python packages, and can lead to code execution.

Critical Node2Shell Vulnerability in Brotli Triggers Security Updates Across Microsoft, Node.js, Python and Cloud Infrastructure

A critical memory corruption vulnerability in Google's widely used Brotli compression library has triggered coordinated security updates across several major software ecosystems, including Microsoft .NET, Visual Studio, PowerShell, Node.js, Python, Bun, Envoy and Istio. The flaw, tracked as CVE-2026-111497 and commonly known as Node2Shell, can potentially allow unauthenticated attackers to execute arbitrary code when vulnerable applications process specially crafted compressed data.

The vulnerability has received a CVSS v4 severity score of 9.2 from Google, placing it in the critical category. Its widespread impact reflects the extensive use of Brotli as a compression technology embedded in web applications, development frameworks, programming language runtimes and network infrastructure. Because the vulnerable decoder is frequently incorporated into other software, organizations may be exposed without directly installing or managing Brotli as a standalone dependency.

The issue was identified by members of OpenAI's Codex Security team during adversarial security research. The discovery prompted coordinated disclosures and patches across multiple projects, illustrating how vulnerabilities in foundational open-source components can propagate through complex software supply chains. Although no confirmed exploitation in the wild had been reported at the time of the disclosures, security researchers have demonstrated remote code execution under specific conditions, increasing the urgency of remediation.

Advertisement

The vulnerability also presents a difficult inventory challenge for enterprise security teams. Updating a directly installed library may not be sufficient when affected versions are bundled inside language runtimes, container images, application frameworks or other dependencies. Organizations must determine where vulnerable Brotli code is actually executed and whether untrusted compressed data can reach it.

A Memory Corruption Flaw in a Widely Deployed Compression Library

Brotli is an open-source compression algorithm developed by Google and widely adopted for reducing the size of data transmitted across the internet. It is commonly used to compress web content, including HTML, JavaScript and other resources delivered through HTTP, helping applications reduce bandwidth consumption and improve loading performance. Its decoder is also integrated into programming environments and libraries that process compressed data outside traditional web browsing scenarios.

CVE-2026-111497 involves an out-of-bounds write in the Brotli decoder. Under certain conditions, specially crafted compressed input can cause the decoder to write beyond the boundaries of an allocated memory buffer. This can corrupt process memory and potentially lead to application crashes, information disclosure or arbitrary code execution.

The vulnerability affects Brotli versions 1.0.3 through 1.2.0, although the precise exposure depends on how an application incorporates and invokes the decoder. Fixed versions include Brotli 1.0.10, 1.1.1 and 1.2.1, reflecting security fixes across different maintained release branches.

The vulnerability's reach is particularly significant because Brotli decoding frequently occurs automatically within application libraries. A developer may never explicitly call a decompression function, yet the application's HTTP client, server middleware or supporting framework may process Brotli-encoded data as part of ordinary network communication.

That behavior creates potential exposure wherever an attacker can supply compressed content that reaches an affected decoder. Examples include HTTP request bodies, responses retrieved from untrusted servers and compressed files processed by applications or supporting tools. However, the presence of a vulnerable library alone does not establish that an application is remotely exploitable; the malicious input must reach the affected code path.

OpenAI's Codex Security Team Uncovers the Vulnerability

The discovery originated from security research conducted by OpenAI's Codex Security team, which identified the underlying weakness while examining software vulnerabilities. OpenAI subsequently notified Brotli's maintainers and downstream projects that depended on the affected code, enabling coordinated remediation across several major ecosystems.

An unusual aspect of the case is that the underlying programming error had already been corrected in Brotli's source code in February 2026. At the time, however, the change had not been recognized as a security fix, and no newer Brotli release containing the correction had been made available.

This distinction highlights a recurring challenge in vulnerability management. A bug can be fixed in a project's development branch without downstream consumers receiving the correction, particularly when maintainers do not initially recognize its security implications. Until a patched version is released and adopted, applications may continue running vulnerable code despite the existence of a source-level correction.

The involvement of AI-assisted security research also illustrates the increasing role of autonomous and semi-autonomous tools in vulnerability discovery. Advanced coding agents can analyze source code, identify suspicious memory operations and assist researchers in evaluating whether implementation defects create exploitable conditions.

The security implications extend beyond the initial discovery. Once a vulnerability receives a public identifier and technical details become available, both defenders and attackers can investigate affected implementations. Coordinated disclosure and timely downstream updates therefore remain essential, regardless of whether the original weakness was identified by human researchers, automated analysis or a combination of both.

Researchers Demonstrate Remote Code Execution Against Node.js

The potential impact of Node2Shell has been a subject of technical debate, particularly regarding whether the memory corruption can reliably be transformed into arbitrary code execution. Researchers at Imperva have provided important evidence by demonstrating code execution against a specific vulnerable Node.js environment.

Their testing targeted the official Node.js 24.22.0 container image running on Linux ARM64. The researchers successfully triggered code execution through malicious Brotli data delivered in two application scenarios: a server response fetched by the target application and an HTTP request body processed through Express 5 or body-parser 2.

These demonstrations are significant because they establish that the vulnerability's impact is not necessarily limited to denial of service. A successful memory corruption exploit may allow an attacker to execute instructions within the context of the vulnerable process, potentially exposing application data, credentials or connected services.

However, Imperva emphasized that exploitation did not succeed on every attempt and that its findings applied to the tested build and application configurations. The researchers did not publish their exploit, limiting the immediate availability of a reliable public attack implementation.

Other publicly discussed proof-of-concept exploits have produced more limited results. One GitHub demonstration reportedly achieved code execution only against an intentionally weakened build, while some researchers argued that practical exploitation may be constrained to application crashes in many environments.

These differing findings are not necessarily contradictory. Memory corruption vulnerabilities can behave differently across processor architectures, compiler settings, memory allocators and application configurations. A successful exploit against one build does not guarantee reliable execution against another, but a demonstrated code execution path is sufficient to justify serious concern.

For defenders, the important conclusion is that organizations should not assume the vulnerability is harmless simply because exploitation is technically complex. Applications that automatically decompress attacker-controlled Brotli content should be evaluated as potentially exposed until patched or otherwise protected.

Microsoft Releases Emergency Fixes for .NET, Visual Studio and PowerShell

Microsoft issued security updates on October 25, 2026, addressing CVE-2026-111497 across several products that incorporate the affected Brotli implementation. The updates covered .NET, Visual Studio and PowerShell, expanding the remediation effort beyond the original compression library.

For .NET, Microsoft released fixed runtime versions 8.0.33, 9.0.22 and 10.0.14, alongside .NET 11 Release Candidate 3. Visual Studio 2019, 2022 and 2026 also received updates, as did PowerShell versions 7.4, 7.5 and 7.6.

Microsoft classified the issue as an elevation-of-privilege vulnerability and assigned it a CVSS v3.1 base score of 8.1. The company rated the vulnerability critical for .NET and Visual Studio and important for PowerShell, with an exploitability assessment of "Exploitation More Likely."

The difference between Microsoft's classification and Google's broader severity assessment reflects the importance of product-specific security analysis. The underlying defect remains the same, but the available attack surfaces, privileges and potential consequences vary according to how each product integrates the affected decoder.

Enterprise administrators should therefore assess both the underlying CVE and the relevant vendor advisories. A general-purpose vulnerability score provides an indication of severity, but deployment-specific exposure depends on the product version, enabled features and whether an attacker can influence compressed data processed by the application.

Microsoft's involvement also underscores the complexity of managing vulnerabilities in components that are distributed through multiple software ecosystems. An organization may need to update development tools, production runtimes and administrative utilities separately to eliminate all vulnerable copies.

Node.js and Python Packages Receive Security Updates

The Node.js project released updates addressing the Brotli vulnerability after determining that specially crafted compressed input could trigger an out-of-bounds write in the decoder. The resulting memory corruption could cause process termination, expose memory contents or potentially enable unauthenticated remote code execution under exploitable conditions.

The risk is particularly relevant for server-side JavaScript applications that process compressed HTTP traffic. Applications using middleware to decompress incoming requests or HTTP clients that automatically decode responses may encounter malicious input without explicitly interacting with Brotli APIs.

Python's ecosystem has also been affected through the PyPI packagesBrotliandbrotlicffi, both of which incorporate vulnerable decoder code. Their maintainers released patched versions 1.2.1 and 1.2.1.0, respectively.

For Python developers, remediation requires more than checking the system-wide installation of Brotli. Virtual environments, application-specific dependencies, packaged distributions and container images may each contain separate copies of the vulnerable implementation.

Organizations should review dependency lockfiles, software bills of materials and deployed artifacts to identify affected versions. Where possible, they should verify that the updated package is actually included in the running application rather than assuming that a successful package manager operation has replaced every vulnerable component.

The issue also affects additional technologies, including Bun, Envoy and Istio, demonstrating that the vulnerability spans application runtimes and network infrastructure. This creates opportunities for exposure at different points in the software stack, from application-level decompression to traffic-handling components deployed in cloud-native environments.

Unpatched Embedded Copies Complicate Enterprise Remediation

One of the most challenging aspects of Node2Shell is the number of software projects that embed their own copies of the Brotli decoder. These bundled implementations may not be updated automatically when an organization patches the operating system or installs a newer standalone Brotli package.

A public tracking initiative operating under the Broccoli2Shell name has identified additional projects that may still contain vulnerable code, including DuckDB, Apache Arrow, 7-Zip-zstd, p7zip and EDK II. The tracker is incomplete, and inclusion does not necessarily mean that every installation exposes an exploitable attack surface.

This distinction is important because embedded dependencies create two separate questions for defenders. First, does the software contain a vulnerable version of the component? Second, can an attacker supply data that reaches the affected decoder under conditions that permit exploitation?

The answers may differ substantially between a web service accepting compressed request bodies and a desktop utility that processes local archives only when explicitly invoked. Both may require updates, but their immediate exposure and remediation priorities are not identical.

The situation highlights limitations in traditional vulnerability scanning. Tools that inspect package manager inventories may identify directly installed Brotli versions while missing statically linked or vendored copies. Container image scanning and binary analysis can help reveal additional instances, but accurate identification may still require vendor guidance or manual investigation.

Software bills of materials can improve visibility when they accurately represent embedded dependencies. However, their usefulness depends on how consistently vendors identify third-party components and update those records when security fixes are incorporated.

For organizations operating large development and production environments, the most reliable approach combines dependency inventory, vendor advisories, runtime exposure analysis and verification of patched deployments.

Why Updating a Package May Not Be Enough

Security teams must also account for the operational behavior of running applications. Installing a patched library does not necessarily replace code already loaded into a running process, particularly when the vulnerable decoder is incorporated into a language runtime or container image.

Affected services may need to be restarted after updates are applied. Containerized applications should be rebuilt using patched dependencies and base images, then redeployed to replace instances that continue running vulnerable code.

This requirement is especially relevant in cloud-native environments where applications are frequently deployed from immutable container images. Updating the host operating system may have no effect on a vulnerable library bundled inside an existing image.

Organizations should also verify whether applications use a system-provided Brotli implementation or an embedded copy maintained independently by the application vendor. A patched system library cannot protect a process that continues loading its own vulnerable implementation.

Where immediate updates are not possible, reducing exposure to untrusted compressed input may provide temporary risk reduction. Depending on the application, administrators may be able to disable unnecessary Brotli decompression paths, reject compressed request bodies or restrict the sources from which compressed content is accepted.

Such measures should be treated as temporary mitigations rather than replacements for security updates. Their effectiveness depends on application behavior, and they may not cover every route through which malicious compressed data can reach the decoder.

No Confirmed Exploitation in the Wild, but Risk Remains Significant

At the time of the initial disclosures, researchers had not reported confirmed exploitation of CVE-2026-111497 in real-world attacks. The absence of observed exploitation is an important distinction, particularly given the vulnerability's critical severity and the attention generated by public demonstrations.

Nevertheless, the combination of broad software adoption, remotely reachable decompression paths and demonstrated code execution in a specific environment makes the issue a significant concern for defenders. Attackers do not necessarily need to compromise the underlying application framework if they can exploit a vulnerable library that processes attacker-controlled content.

The emergence of multiple names for the same vulnerability, including Node2Shell, HTTP2Shell and Broccoli2Shell, also creates potential confusion in vulnerability tracking. Security teams should use the CVE identifier, CVE-2026-111497, as the primary reference when correlating advisories, patches and internal findings.

The incident illustrates how vulnerabilities in foundational libraries can generate disproportionate operational consequences. A single memory safety defect can require coordinated updates across programming languages, enterprise software, development tools and cloud infrastructure, each with its own release cycle and deployment considerations.

For security teams, the immediate priority is identifying vulnerable implementations that process untrusted Brotli data and applying vendor-supported fixes. Equally important is verifying that patched code has reached production environments, including rebuilt containers and restarted services.

A Broader Warning About Shared Open-Source Dependencies

Node2Shell demonstrates the security consequences of relying on widely embedded open-source components without complete visibility into where their code is deployed. Brotli's extensive adoption makes it valuable infrastructure for modern applications, but that same ubiquity amplifies the impact of a defect in its decoder.

The discovery also illustrates the growing contribution of AI-assisted security research to vulnerability identification. OpenAI's Codex Security team helped uncover a serious flaw whose underlying cause had already been corrected in source code but had not been recognized or distributed as a security update.

For software maintainers, the case reinforces the importance of evaluating seemingly routine memory safety fixes for security implications and communicating those implications to downstream consumers. For organizations, it emphasizes the need to track embedded dependencies rather than relying exclusively on direct package inventories.

The demonstrated exploitation against Node.js shows why defenders must distinguish between theoretical impact and proven attack conditions without dismissing either. Although reliable exploitation may depend on specific architectures and application configurations, the possibility of unauthenticated code execution warrants prompt attention.

The central lesson of Node2Shell is that a vulnerability in a small, foundational component can become an enterprise-wide security problem when that component is silently embedded across the software supply chain. Effective remediation requires not only applying patches, but also understanding where vulnerable code is running, how untrusted data reaches it and whether updated software has actually replaced every exposed instance.

As organizations continue adopting complex application frameworks and cloud-native infrastructure, maintaining that visibility will remain essential to reducing the impact of vulnerabilities that originate far below the application layer.

Advertisement

Key facts

  • An out-of-bounds write vulnerability exists in Google's Brotli decoder
  • The flaw, named Node2Shell, affects Node.js, .NET, PowerShell, and Python packages
  • The vulnerability can lead to code execution
  • Patching has been triggered across affected Microsoft, Node.js, and Python packages

Why it matters

This vulnerability underscores the interconnectedness of modern software development, where a flaw in a widely used compression library can cascade through diverse ecosystems like Microsoft, Node.js, and Python. The broad impact necessitates swift patching across numerous applications and platforms, highlighting the operational risk and the need for robust supply chain security practices to prevent widespread exploitation.