A flaw in the decoder of the Brotli compression library lets crafted compressed data write past the end of an internal buffer. Out-of-band fixes are available for Node.js, for .NET and for the PHP builds for Windows. Nobody has confirmed exploitation in the wild so far, but proof-of-concept code is public.

Vulnerability card. CVE-2026-111497 in the Brotli decoder. Brotli in Node.js, .NET and PHP for Windows, affected versions Brotli 1.0.3 to 1.0.9, 1.1.0 and 1.2.0, CVE-2026-111497, severity high, no evidence of exploitation, CISA KEV not listed, Fixed version: Brotli 1.2.1, Node.js 26.12.1, .NET 10.0.14 and older lines. What to do now: Update Node.js, .NET and the PHP builds for Windows. Restart processes and rebuild container images. If you cannot update now, block inbound Brotli requests. Source: Node.js, Microsoft and PHP, October 2026.

Status as of 27 October 2026 according to the Node.js, Microsoft and PHP advisories.

What happened

Brotli is a compression library from Google. It is used mainly to transfer data over HTTP (the Content-Encoding br header), so in a corporate environment you will find it in servers, in HTTP clients and in libraries whose names give no hint of it.

CVE-2026-111497, also known as Node2Shell, HTTP2Shell and Broccoli2Shell, is an out-of-bounds write. According to the Node.js advisory, the decoder treats an invalid block switch as a temporary need for more input instead of a permanent format error, and keeps appending input bytes to an eight-byte internal buffer. That corrupts nearby process memory. The result can be a crash, disclosure of process memory, or remote code execution.

The attacker needs no authentication. It is enough that an application decompresses data the attacker controls. There are two routes: the application accepts a compressed request as a server, or it fetches a compressed response as a client from an address the attacker influences.

Severity ratings differ between sources. Node.js rates the flaw as high, and Microsoft shipped an out-of-band fix outside its regular monthly cycle. A single CVSS figure was not consistent across sources when this article was written, so we do not quote one. The flaw is not listed in the CISA KEV catalogue of exploited vulnerabilities.

Does this affect you?

Affected Brotli versions are 1.0.3 to 1.0.9, 1.1.0 and 1.2.0, together with software that bundles the library. In practice that means:

One detail is easy to miss during the clean-up. Updating the system Brotli library is not enough on its own: applications that bundle their own copy, typically Node.js or .NET, have to be updated separately. Each place in the diagram below is therefore updated on its own.

Dependency map. One library, several separate updates. Brotli 1.0.3 to 1.2.0 and linked elements: Node.js 22, 24, 26, .NET 8 to 11 RC2, PHP for Windows (cURL), Python brotli, brotlicffi, HTTP clients (urllib3, httpx), System library. Highlighted: Node.js 22, 24, 26, .NET 8 to 11 RC2, PHP for Windows (cURL). Source: Node.js, Microsoft and PHP, October 2026.

Updating the system library is not enough, bundled copies are updated separately.

What to do now

If you cannot update straight away, reduce the places where your applications decompress third-party data. In Python, remove Brotli support, and block inbound Brotli-compressed requests at the proxy or firewall. That does not cover the second route, the response your own application fetches.

Struggling to keep track?

Several out-of-band fixes have shipped in the past week alone, and most organisations have nobody going through vendor advisories every day and deciding what applies to them. We help customers set up vulnerability management so that it is clear who watches the sources, how priority is decided and within what deadline each fix is deployed. If you want to start, use our contact page or look at our security assessment.

Sources: Node.js, security releases of 21 October 2026 · Microsoft, .NET out-of-band security updates of 25 October 2026 · PHP, updated Windows builds of 26 October 2026 · BleepingComputer, affected Brotli versions and interim mitigations