AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: How Teams Can Coordinate A Broccoli2Shell Patch Across Services on ThorstenMeyerAI.com

Before you orderOffer from Amazon

Get the latest gadgets delivered free with Prime

  • Fast, free delivery on millions of items
  • Prime Video, Amazon Music and more included
  • Member-only deals all year
Start your free Prime trial Free trial for eligible customers · Cancel anytime
As an affiliate, we earn on qualifying purchases.

TL;DR

CVE-2026-111497 affects Google’s Brotli decoder and has been carried into runtimes, packages and other software that use or bundle it. Fixes are available for several major platforms, but teams need to check each dependency and restart running processes; the source tracker still listed some bundled copies as unfixed on October 26, 2026.

Security fixes for CVE-2026-111497, a memory-corruption flaw in Google’s Brotli decoder, are now available across several runtimes and software packages, but teams must check every service and bundled copy that uses the library. The flaw can be triggered by crafted compressed data; a code-execution demonstration was reported on an unmodified Node.js build, while CISA’s data listed no known exploitation as of the source report’s October 26 update.

The vulnerability affects Google’s Brotli C decoder versions 1.0.3 through 1.2.0. According to the Node.js advisory, malformed input can be treated as incomplete rather than invalid, causing the decoder to write past an internal eight-byte buffer. The resulting memory corruption can crash a process or, in the worst case, permit code execution. The CVE record identifies an out-of-bounds write and an unchecked return value.

Published fixes include Brotli 1.0.10, 1.1.1 and 1.2.1; Node.js 22.23.4, 24.22.1 and 26.12.1; Python Brotli 1.2.1 and brotlicffi 1.2.1.0; Bun 1.4.4; and updated releases of Envoy, Istio and .NET. Debian also lists fixed package versions. These are version-specific release details reported October 26 and should be checked against each project’s current advisories before deployment.

Updating a package is not the full response: running processes retain the decoder loaded at startup, so affected services need a restart after patching. Node.js 20, 23 and 25 were listed as receiving no fix. Teams should not assume that updating a high-level framework resolves the problem: the flaw is in Brotli, not Express, and software can use either a system library or a copy bundled inside its own release.

At a glance
updateWhen: Patches began appearing October 21, 202…
The developmentA critical Brotli decoder vulnerability has prompted fixes across Node.js, Python and other software, requiring coordinated patching wherever the library is used or bundled.
Thorsten Meyer AI
CVE-2026-111497 · 26 Oct 2026

Infographic 01 · Where Brotli decoding meets untrusted input

One decoder, many doors.

The flaw sits in Google's Brotli C decoder. Every runtime, package and tool that copies it inherits the bug. Three paths bring attacker data to it.

9.2CVSS 4.0, Critical, in Google's CVE record
1.0.3–1.2.0affected Brotli versions
3supported Node.js lines fixed on 21 Oct
~83 MPyPI downloads of Brotli in the last month

Responses your code fetches

no WAF sees these

  • Node.js fetch() decodes Brotli automatically
  • Python requests, urllib3, aiohttp, httpx[brotli], Scrapy, once a Brotli package is installed
  • Webhooks, link previews, crawlers, “import from URL”

Request bodies you accept

WAF can block br bodies

  • Express 5.0.0–5.3.0 and body-parser 2.0.0–2.3.0 inflate Brotli bodies (json(), raw())
  • Upgrading Express alone does not help: the bug is in the runtime
  • A bare Node.js HTTP server does not decode bodies on its own

Files you open or process

not only HTTP

  • Archives and .br files (7-Zip-zstd, p7zip)
  • Parquet data files (DuckDB, Apache Arrow bundled build)
  • Fonts (woff2), firmware tools (EDK II), JPEG XL via libjxl

Fixed versions

patch, then restart a running process keeps the old decoder

ComponentFixed inNote
Google Brotli (C library)1.0.10 · 1.1.1 · 1.2.11.0.3–1.2.0
Node.js22.23.4 · 24.22.1 · 26.12.120, 23, 25: no fix (end of life)
Python Brotli / brotlicffi1.2.1 / 1.2.1.01.0.3 up to 1.2.0.x
Bun1.4.4includes Brotli 1.2.1
Envoy Proxy1.40.0 · 1.39.3 · 1.38.6 · 1.37.8if Brotli decompression is configured
Istio1.29.9 · 1.30.6 · 1.31.21.29 is end of life
.NET runtime8.0.33 · 9.0.22 · 10.0.14GitHub source builds still affected
Debian brotlibookworm 1.0.9-2+deb12u1 · trixie 1.1.0-2+deb13u1DLA 4855-1 · DSA-6582-1

Official Node.js builds bundle their own Brotli, so only the Node.js version matters there; some distributions (Debian, Ubuntu 22.04+) build Node.js against the system library instead.

Sources: CVE record (Google CNA, CISA ADP 23 Oct); Node.js (21 Oct 2026); GHSA-9v8h-qqgm-4m35; Brotli releases (21 Oct 2026); Patch the Planet (23 Oct 2026); Imperva (22 Oct 2026); broccoli2shell.com (26 Oct 2026); OpenSourceMalware (23 Oct 2026); Debian tracker; pypistats.org (26 Oct 2026).
Powered by Thorsten Meyer AI

Why Fixes Must Cross Service Boundaries

The practical challenge is the number of routes by which compressed data reaches a decoder. Node.js’s built-in fetch can decode Brotli responses automatically. Python clients may do the same when a Brotli package is installed. Webhooks, link previews, crawlers and URL-import features can therefore involve the vulnerable code even when application teams did not call the decoder directly.

Other exposure paths include accepting compressed request bodies and processing files. The source report says Express 5.0.0 to 5.3.0 and body-parser 2.0.0 to 2.3.0 can inflate Brotli request bodies in certain parsers, but upgrading Express alone does not replace the vulnerable decoder. Archives, fonts, Parquet data and firmware tools may also rely on Brotli. A single service inventory is unlikely to cover every copy across dependencies, containers and infrastructure.

This makes remediation a cross-team release task: application owners, platform teams and maintainers of shared images may each control a different layer. An independent tracker cited in the source listed more than 30 affected projects or packages and, as of October 26, seven bundled copies still unfixed. That status can change as maintainers publish releases.

Products Worth Considering

Apple iPad Air (4th Generation, 10.9-inch, Wi-Fi, 256GB) - Space Gray

Apple iPad Air (4th Generation, 10.9-inch, Wi-Fi, 256GB) – Space Gray

Bose QuietComfort True Wireless Earbuds with Active Noise Cancellation, Black

Bose QuietComfort True Wireless Earbuds with Active Noise Cancellation, Black

As an affiliate, we earn on qualifying purchases.

From Brotli Commit to Public Advisory

The source report says the underlying code change was committed to Brotli on February 27, 2026, under the title “Detect and report invalid stream earlier.” It says the commit did not identify the change as security-related. OpenAI said the vulnerability was not known at the time and that Brotli had no more recent release. The fixed releases appeared on October 21, a gap of 236 days between the source change and releases carrying the fix.

The CVE became public on October 22, and a public proof of concept appeared the same day, according to the cited tracker. The report says Imperva demonstrated code execution on an official Node.js image after several attempts. That is a reported demonstration, not evidence that attackers are exploiting the flaw in the wild. The CVE record assigns a 9.2 Critical score under CVSS 4.0; the source says CISA’s data showed “exploitation: none” and the vulnerability was not in its Known Exploited Vulnerabilities catalog.

Some Node.js builds include their own Brotli copy, while some Linux distributions link Node.js to a system library, so the relevant fix depends on how a service was built. The source also reports that Python package advisories were absent from some advisory databases on October 23 before GitHub added them later that day. This history illustrates why a scanner’s silence does not establish that a dependency is unaffected.

““A bigger deal than PHP2Shell””

— Juliano Rizzo, as quoted by broccoli2shell.com

Remaining Gaps in Component Coverage

The source report’s October 26 tracker still listed seven bundled copies as unfixed, including copies associated with DuckDB, Apache Arrow, 7-Zip-zstd, p7zip and EDK II firmware tools. It also said five other projects had fixes in their main branches. A main-branch change may not yet be available in a stable release, and tracker entries can become outdated; teams need to confirm the status with each maintainer.

The extent of real-world exposure is also not established by the reported demonstration. The cited CISA data showed no exploitation, but that does not prove that no attempts have occurred. The source does not provide a complete list of affected deployments, the number of vulnerable services, or evidence that every listed integration is reachable with attacker-controlled data.

It remains necessary to determine which systems use a bundled decoder, which link against an operating-system library, and whether a given service actually processes untrusted Brotli data. The reported fixes and version ranges are not a substitute for checking current vendor advisories and build configurations.

Patch, Rebuild and Restart Services

Teams should first inventory Brotli use across direct dependencies, transitive packages, runtime builds, operating-system packages, containers and file-processing tools. They should then match each component to its vendor’s fixed release, update the dependency or base image, and restart or redeploy affected processes so the patched decoder is loaded. Where a stable fix is not yet available, teams should follow the maintainer’s advisory and assess whether the component can be isolated or temporarily removed from exposed workflows.

After deployment, owners should verify the running versions rather than relying only on a successful build or a dependency scan. Teams should also recheck advisories for components that had no fix at the October 26 reporting cutoff. The next milestone is the release of remaining bundled-copy updates and confirmation that affected services have moved onto patched builds.

Key Questions

What is Broccoli2Shell?

Broccoli2Shell is the name used for the security issue involving CVE-2026-111497, a flaw in Google’s Brotli C decoder. The source report says malformed compressed input can cause an out-of-bounds write and memory corruption.

Does updating Express fix the vulnerability?

Not by itself. The reported flaw is in Brotli, not Express. If a service uses Brotli to decompress request bodies, its Brotli dependency or bundled decoder must be updated as well.

Which Node.js versions have fixes?

The source lists fixes in Node.js 22.23.4, 24.22.1 and 26.12.1. It says Node.js 20, 23 and 25 have no fix. Check the current Node.js security advisory for later release information.

Is the flaw being exploited in the wild?

The source report says CISA’s data listed “exploitation: none” and the CVE was not in CISA’s Known Exploited Vulnerabilities catalog as of October 26, 2026. Imperva’s reported code-execution demonstration is not evidence of in-the-wild exploitation.

Why must services restart after patching?

A running process can keep using the decoder it loaded at startup. Restarting or redeploying the service after installing the fixed version is needed for the process to use the updated code.

Source: ThorstenMeyerAI.com

You May Also Like

Dwarf Fortress’ Creator Says The Industry’s In Shambles Over AI

The creator of Dwarf Fortress states the gaming industry is in turmoil due to the rise of AI, raising concerns about future development and creative control.

Rep. Ritchie Torres Announces Congressional Legislation To Protect Video Game Ownership: ‘If You Pay For It, You Own It’

Rep. Ritchie Torres plans the Power To The Players Act, which would set FTC rules for digital game ownership and playable offline modes.

15 AI Meeting Note Takers Compared: Options For Clearer Records In 2027

A 15-product comparison highlights recorders such as Plaud Note Pro and NotePin S, while flagging gaps in pricing, privacy and performance data.

How To Get A Budget-friendly Phone With The Motorola Moto G Play (2026)

Woot is offering the Motorola Moto G Play (2026) for $160, $90 below its stated $250 retail price, with a 120Hz display and 5,200mAh battery.