🔍 Read the full analysis: A Three-Step Broccoli2Shell Plan: Patch, Restart, And Check on ThorstenMeyerAI.com
Get the little things that make your day delivered free with Prime
- Fast, free delivery on millions of items
- Prime Video, Amazon Music and more included
- Member-only deals all year
TL;DR
CVE-2026-111497 is a memory-corruption flaw in Google’s Brotli decoder that can affect software using vulnerable bundled copies, including Node.js and Python packages. Fixes are available for several runtimes and projects, but a running process needs to restart to load an updated decoder. The source reports no confirmed exploitation in the wild as of October 26, 2026, and says some bundled copies remain unfixed.
Security updates are available for CVE-2026-111497, a flaw in Google’s Brotli compression decoder that can corrupt memory when it processes certain malformed compressed data. The issue reaches beyond one application: affected copies are used in Node.js, Python packages and other software, so operators need to identify their components, install the relevant fix and restart processes to load it.
The vulnerability affects Brotli C decoder versions 1.0.3 through 1.2.0, according to the source material. The decoder mishandled a kind of malformed input as data that was still arriving, rather than as invalid. In that state, it could write beyond an eight-byte internal buffer. The resulting memory corruption could crash a process or expose memory; code execution is a possible worst-case outcome, not an established result in every affected setup.
Fixes listed in the source 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; and Bun 1.4.4. The listed updates also cover Envoy, Istio, .NET and Debian releases. Administrators should use the version appropriate to their software and operating system rather than assume one package update fixes every copy.
A patch alone may not change what a service is currently running. According to the source, an active process can keep its old decoder in memory, so teams need to restart affected processes after updating. The source also reports seven bundled copies still unfixed as of October 26, including copies associated with DuckDB, Apache Arrow, 7-Zip-zstd, p7zip and EDK II firmware tools; five other projects had fixes in their main branches but not necessarily in a release.
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.
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
.brfiles (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
| Component | Fixed in | Note |
|---|---|---|
| Google Brotli (C library) | 1.0.10 · 1.1.1 · 1.2.1 | 1.0.3–1.2.0 |
| Node.js | 22.23.4 · 24.22.1 · 26.12.1 | 20, 23, 25: no fix (end of life) |
Python Brotli / brotlicffi | 1.2.1 / 1.2.1.0 | 1.0.3 up to 1.2.0.x |
| Bun | 1.4.4 | includes Brotli 1.2.1 |
| Envoy Proxy | 1.40.0 · 1.39.3 · 1.38.6 · 1.37.8 | if Brotli decompression is configured |
| Istio | 1.29.9 · 1.30.6 · 1.31.2 | 1.29 is end of life |
| .NET runtime | 8.0.33 · 9.0.22 · 10.0.14 | GitHub source builds still affected |
Debian brotli | bookworm 1.0.9-2+deb12u1 · trixie 1.1.0-2+deb13u1 | DLA 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 Brotli’s Reach Matters
The practical risk comes from the decoder’s broad use, not just from the name of any one affected application. Brotli is used to compress web traffic and data, and projects may include their own copy of its C decoder. That means an organization can have exposure through a runtime, a Python dependency, a proxy, a container image or a separate tool—even if its teams do not directly manage Brotli.
Potential entry points depend on how software uses the decoder. The source identifies automatically decompressed web responses, accepted compressed request bodies and files processed by applications as examples. It says Node.js’s built-in fetch can decode Brotli responses, while several Python HTTP clients can do so when a Brotli package is installed. Express and body-parser versions listed in the source can inflate Brotli request bodies, but the flaw is in Brotli itself: upgrading Express alone does not fix a vulnerable decoder.
Operational checks matter because the patch chain can run from an upstream library through a runtime or package, a distribution, a container image and finally a running process. A clean dependency scan may not find every bundled copy. The source says some scanners did not list the Python packages on October 23, before an advisory was added later that day. Teams may need to check their actual build and deployment contents, not rely on a single alert.
Linux server security monitoring software
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
How the Flaw Reached Multiple Stacks
The source describes a 236-day gap between a source-code change and releases carrying the fix. The underlying Brotli change was made on February 27, 2026, with a commit titled “Detect and report invalid stream earlier.” According to the source, that commit did not identify the change as a security fix. Releases containing it appeared on October 21, and the CVE became public on October 22.
The source says a public proof of concept appeared on GitHub on October 22. It also reports that Imperva demonstrated code execution on an unmodified official Node.js image after several attempts. That demonstration indicates a serious potential impact in that test environment, but it does not establish that all vulnerable deployments can be exploited in the same way. The CVE record is reported as 9.2, Critical, under CVSS 4.0.
The story is separate from DreamHost’s reported password resets for some email and FTP/SFTP accounts. The source says DreamHost named no cause and provides no link between that incident and Brotli. It also says Node.js credits OpenAI Codex Security, while OpenAI described finding the flaw during red-teaming with teams of AI agents.
Exposure and Exploitation Status
The source reports no known exploitation in the wild as of October 26, 2026. It says CISA data lists exploitation as “none” and that the CVE is not in CISA’s Known Exploited Vulnerabilities catalog. Those reports describe the status available at that time; they do not prove that exploitation is impossible or that every affected system is safe.
The complete set of affected deployments is also not settled. Projects can bundle Brotli independently, and the source’s tracker lists more than 30 projects and packages, with seven bundled copies still unfixed at the reported date. It is not clear from the source when all remaining projects will publish releases, whether every downstream package has incorporated an upstream fix, or how many systems are exposed in production.
Patch Releases and Restarts
Operators should identify which Brotli implementation their software actually uses, apply the matching fixed release, rebuild affected images where needed and restart services and other running processes. Teams should check direct dependencies as well as bundled libraries in runtimes, proxies, file-processing tools and deployment artifacts. Where a project has fixed only its main branch, administrators should check whether a patched release is available before treating the component as resolved.
Further updates are expected as projects and distributions publish or backport fixes. The source gives no single deadline for the remaining bundled copies, so teams should monitor advisories from their vendors and upstream projects. The immediate checklist is straightforward: patch, restart and verify that the running deployment uses the corrected decoder.
Key Questions
What is Broccoli2Shell?
It is the name used for CVE-2026-111497, a memory-corruption flaw in the Brotli C decoder. The source says malformed compressed input could cause an out-of-bounds write.
Does updating Node.js or a Python package fix every copy?
No single update covers every deployment. Use the fixed version for the runtime or package in use, and check for separately bundled copies in other tools, libraries and system packages.
Why does the service need to restart after patching?
A running process may keep the old decoder loaded in memory after files are updated. The source advises restarting affected processes so they load the patched decoder.
Has the flaw been exploited in the wild?
The source reports no known in-the-wild exploitation as of October 26, 2026. It also reports an Imperva demonstration of code execution on an unmodified official Node.js image after several attempts; that is a test demonstration, not evidence of active attacks.
Which Node.js releases are listed as fixed?
The source lists 22.23.4, 24.22.1 and 26.12.1 as fixed. It says Node.js 20, 23 and 25 receive no fix, so users of those lines should consult the relevant project guidance about their options.
Source: ThorstenMeyerAI.com
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
