🔍 Read the full analysis: A Compression Bug Spans Node.js And Python: Responding To Broccoli2Shell on ThorstenMeyerAI.com
Get business pricing on tech for your team
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
TL;DR
A memory-corruption flaw in Google’s Brotli decoder, tracked as CVE-2026-111497, affects versions 1.0.3 through 1.2.0 and has prompted fixes across Node.js, Python packages and other software. Security researchers demonstrated code execution in an official Node.js image, but CISA data reported no known exploitation in the wild as of October 26, 2026. Teams need to update affected components and restart running processes; some bundled copies remain unfixed.
Fixes are spreading across Node.js, Python packages and other software for a flaw in Google’s Brotli decoder that can corrupt memory when processing malformed compressed data. The vulnerability, CVE-2026-111497, affects decoder versions 1.0.3 through 1.2.0; researchers reported code execution in a demonstration against an unmodified Node.js build, while CISA data cited in the source reported no known exploitation as of October 26, 2026.
The flaw occurs when the decoder treats certain malformed input as incomplete data and continues processing it. According to the Node.js advisory, this can cause writes past an eight-byte internal buffer. The resulting memory corruption could crash a process, expose memory contents or, in the worst case, enable code execution. The CVE record identifies an out-of-bounds write and an unchecked return value; the fix makes the decoder stop with a format error.
Imperva reported running code after several attempts against an official Node.js image. That is a demonstration of potential impact, not evidence that attackers have used the flaw against real-world targets. The CVE record gives it a CVSS 4.0 score of 9.2, rated Critical. The source reports that CISA’s exploitation data said “none” and that the CVE was not listed in CISA’s Known Exploited Vulnerabilities catalog as of October 26.
Fixes listed in the source include Brotli C library versions 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. Updates are also listed for Envoy, Istio, .NET and Debian. Node.js 20, 23 and 25 are identified as receiving no fix. Official Node.js builds include their own Brotli copy, though some Linux distributions link Node.js to a system library instead.
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
One Decoder, Many Software Stacks
The practical risk is not limited to teams that knowingly installed Brotli. A decoder can arrive through a runtime or a transitive dependency, and an application may process attacker-controlled compressed data through network responses, submitted request bodies or files. Teams need to identify the actual decoder in use, not just check whether their application directly names Brotli.
The reported demonstration raises the stakes, but it does not establish widespread compromise. CISA’s reported “none” exploitation status is a time-stamped assessment, not a guarantee that the flaw will remain unused. For operators, the immediate priority is to apply the appropriate vendor fix, rebuild affected images where needed and restart services. For maintainers, the remaining bundled copies show why fixing an upstream library does not automatically protect downstream users.
USB hardware security key FIDO2 for developer account security
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
How the Fix Reached Users
Brotli is a compression format used to reduce the size of web content and other data. Applications need a decoder to unpack compressed input. The vulnerability is in Google’s Brotli C decoder, rather than in Express or another framework that may call it. The source says Express 5.0.0 through 5.3.0 and body-parser 2.0.0 through 2.3.0 can inflate Brotli request bodies in some parsers, but upgrading those packages alone does not replace the vulnerable decoder.
Node.js’s October 21 security release initially included the Brotli issue among several vulnerabilities and rated it High, according to the source. Since disclosure, updates have also appeared for Python packages and several infrastructure components. The source quotes security researcher Juliano Rizzo describing the issue as “a bigger deal than PHP2Shell” and comparing it with “zlib 20 years ago”; those are his assessments, not official severity determinations.
The source separately mentions DreamHost resetting some email and FTP/SFTP passwords after an incident. It says DreamHost has not named a cause and provides no evidence linking that incident to the Brotli flaw.
managed network firewall appliance for small business
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Exploitation and Remaining Copies
As of October 26, the source reports no known exploitation in the wild, citing CISA data. That status does not rule out undiscovered activity, and the available information does not establish how often affected software has been exposed to hostile compressed input. Imperva’s reported code-execution demonstration shows a possible outcome under test conditions, not confirmed attacks on deployed systems.
Some projects still had unfixed bundled copies, and the status of a project’s main branch does not establish that a stable release or installed package is corrected. The source does not provide a complete inventory of every affected deployment or confirm that all listed fixes have reached all distributions. It also does not establish a link between the separate DreamHost password resets and this vulnerability.
encrypted external SSD for secure backups
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Patch, Restart and Check Bundles
Operators should compare their deployed Node.js, Python, Brotli, proxy and system-library versions with vendor advisories, then install the fixed release that applies to their environment. Teams using official Node.js builds should check the Node.js version; deployments linked to a distribution-provided Brotli library should check that package as well. For Python, check both Brotli and brotlicffi where installed.
After updating, restart running services so the corrected decoder is loaded, and rebuild containers or other artifacts that contain bundled libraries. Maintainers and security teams should follow advisories for projects that had not yet released a fix, including the bundled copies named by the tracker. The source’s status is dated October 26, 2026, so downstream release and exploitation information may change.
Key Questions
What is Broccoli2Shell?
Broccoli2Shell is the name used for the security issue involving memory corruption in Google’s Brotli decoder, tracked as CVE-2026-111497. The name reflects the reported potential for code execution in a demonstration; it does not mean every affected installation has been compromised.
Which versions are affected?
The source identifies Brotli C decoder versions 1.0.3 through 1.2.0 as affected. Exposure in a particular product depends on which decoder copy it uses and whether that software processes relevant compressed input.
What should Node.js and Python teams update?
The listed Node.js fixes are 22.23.4, 24.22.1 and 26.12.1; Node.js 20, 23 and 25 are listed as receiving no fix. The listed Python updates are Brotli 1.2.1 and brotlicffi 1.2.1.0. Check vendor guidance for the right supported release in your environment.
Does installing an update protect a running service immediately?
No. The source says a running process can continue using the decoder it already loaded. After applying the fix, restart affected processes and rebuild images or artifacts that package their own Brotli copy.
Is the vulnerability being exploited in the wild?
The source reports that CISA’s exploitation data said “none” as of October 26, 2026, and the CVE was not in the Known Exploited Vulnerabilities catalog. Researchers did demonstrate code execution in a test against an official Node.js image; that is distinct from confirmed real-world exploitation.
Source: ThorstenMeyerAI.com
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
