🔍 Read the full analysis: How To Prioritize Broccoli2Shell Checks Across A Mixed Technology Stack on ThorstenMeyerAI.com
TL;DR
CVE-2026-111497 affects Google’s Brotli C decoder and reaches multiple runtimes and products through bundled or installed copies. Prioritize internet-facing services that decode untrusted Brotli data, identify the actual decoder in use, apply the relevant vendor fix and restart affected processes. The source reports no known exploitation in the wild, but says some bundled copies remained unfixed as of October 26, 2026.
Security teams need to check more than application dependencies after disclosure of CVE-2026-111497, a critical memory-corruption flaw in Google’s Brotli decoder that can affect services and tools across a mixed technology stack. Patches are available for several major runtimes and products, but the source says some bundled copies remained unfixed as of October 26, 2026, and affected running processes need a restart to load updated code.
The flaw affects Google’s Brotli C decoder versions 1.0.3 through 1.2.0. According to the Node.js advisory, malformed compressed input can be treated as incomplete rather than invalid, leading the decoder to write beyond an eight-byte internal buffer. The resulting memory corruption could cause a crash or memory exposure; code execution is a potential worst-case outcome, not a confirmed consequence in every affected deployment. Google’s CVE record lists an out-of-bounds write and an unchecked return value, and scores the vulnerability 9.2, Critical, under CVSS 4.0.
Exposure depends on where Brotli decoding occurs. Node’s built-in fetch decodes Brotli responses, while Python clients can use Brotli packages when installed. Express 5.0.0 to 5.3.0 and body-parser 2.0.0 to 2.3.0 can inflate Brotli request bodies, but the source stresses the flaw is in the decoder, not Express itself. Other paths include webhooks, link previews, crawlers, URL-import features, archives and data-processing tools. A plain Node.js HTTP server does not decode request bodies automatically.
Reported 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 listed releases for Envoy, Istio, .NET and Debian. The source says Node.js 20, 23 and 25 have no fix. Official Node.js builds include their own Brotli copy, while some distribution builds use a system library, so teams must check how their package was built rather than assume one upgrade path applies everywhere.
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
Prioritize Exposed Decoders First
The central operational issue is that a single low-level decoder can be present in many languages, services and packaged tools. A dependency scan of an application’s declared packages may miss copies embedded in a runtime, container base image, proxy or standalone utility. That makes an inventory of actual deployed components more useful than relying on a single language-level package list.
Prioritization should start with systems that decode attacker-controlled compressed data and are reachable from the internet or from untrusted internal networks. Check request-body parsing, fetched responses, webhooks and file-processing services first. Then identify which Brotli implementation each uses, apply the vendor’s fixed release, rebuild images where needed and restart the process. The source notes a running process retains its old decoder until restarted; a patched package on disk alone does not complete remediation.
The reported evidence supports urgency but not claims of widespread active attacks. Imperva demonstrated code execution on an unmodified official Node.js image after several attempts, according to the source. It also reports that CISA data showed no exploitation and that the CVE was not in CISA’s Known Exploited Vulnerabilities catalog at the time. That distinction matters: a proof-of-concept demonstration is not evidence that attackers are exploiting the flaw in the wild.
Popular right now

Samsung 42-Inch S90H OLED 4K Smart TV Bundle

iRobot Roomba Max 715 Pet Robot Vacuum with AutoEmpty Dock

Bose QuietComfort Wireless Noise-Cancelling Over-Ear Headphones, Black
As an affiliate, we earn on qualifying purchases.
From Brotli Fix to Stack-Wide Exposure
The underlying code change was committed to Brotli on February 27, 2026, with the commit title “Detect and report invalid stream earlier.” The source says the change did not identify itself as a security fix. Releases carrying the correction appeared on October 21, creating a reported 236-day gap between the source change and those releases. The CVE became public October 22, and the source says a public proof of concept appeared that day.
That delay matters because projects often vendor or bundle copies instead of relying on a centrally updated library. Once the issue became public, fixes had to move through the upstream library, language runtimes, packages, operating-system distributions, container images and finally running processes. The source’s tracker listed more than 30 projects and packages with bundled copies, and said seven remained unfixed as of October 26, including DuckDB, Apache Arrow’s bundled build, 7-Zip-zstd, p7zip and EDK II firmware tools. Those tracker figures are a dated snapshot, not a current status guarantee.
The source also reports that Python Brotli had about 83 million downloads in the previous month, citing pypistats.org checked October 26. That is a download count, not a measure of unique installations or vulnerable deployments. The scale helps explain why teams should check transitive dependencies and packaged copies, while avoiding an assumption that every download represents an exposed service.
„A bigger deal than PHP2Shell“
— Security researcher Juliano Rizzo, as quoted by ThorstenMeyerAI.com
Coverage and Exploitation Still Unclear
The source reports no known exploitation in the wild as of October 26, but that status can change and does not rule out unreported attempts. Imperva’s code-execution demonstration establishes a potential impact under its test conditions; the material does not establish that every affected product or configuration permits the same result. Organizations should treat the demonstrated outcome as a risk signal, not a prediction of what will happen in every environment.
It is also unclear from the source how many deployed systems remain vulnerable or how quickly every downstream project will publish fixes. Its list of seven unfixed bundled copies is a dated tracker snapshot, and the source does not provide a complete inventory of affected versions for every product. Teams should verify current advisories and package provenance with each vendor. The source separately mentions DreamHost resetting some email and FTP/SFTP passwords after an incident; it says no cause was named and provides no link between that incident and Brotli.
Verify Fixes and Restart Services
Teams should map the decoder path in each production service and tool, confirm the exact runtime or bundled library version, and compare it with current vendor advisories. Patch to the applicable fixed release where available, rebuild affected images and installations, and restart services so the updated decoder is loaded. Where no fixed release is listed, teams should seek vendor guidance, reduce exposure to untrusted compressed input where practical, and track the affected component until a verified update is available.
Security teams should also check whether dependency and container scans recognize bundled copies. The source says scanners did not list the Python packages in an advisory database on October 23, before GitHub’s advisory was added later that day. That history illustrates why a clean scan should not be treated as proof that every embedded copy is safe. Recheck advisories and the source’s tracker as vendors release updates; the confirmed patch list and unfixed-project count may change.
Key Questions
Which systems should teams check first?
Start with internet-facing services that decode untrusted Brotli data, including request parsers, webhook handlers, crawlers and URL-fetching features. Then check file-processing tools, proxies and embedded or bundled copies.
Does upgrading Express fix the flaw?
Not by itself, according to the source. The vulnerability is in the Brotli decoder, not Express. Check and update the decoder or runtime that performs Brotli decompression.
Is updating the package enough?
No. The source says an already running process can continue using the old decoder. After applying the fix, restart affected processes and rebuild deployed images or installations where required.
Is the flaw being exploited in the wild?
The source reports no known exploitation as of October 26, 2026, citing CISA data, and says the CVE was not in CISA’s Known Exploited Vulnerabilities catalog. That is a time-specific status and does not rule out later or unreported activity.
What if a product has no listed patch?
Check the vendor’s current advisory and ask for a remediation timeline. Until a fix is available, assess whether untrusted compressed input can be limited, and keep the component on a tracked exception list for follow-up.
Source: ThorstenMeyerAI.com