🔍 Read the full analysis: Broccoli2Shell Questions: What Needs Patching, Restarting, And Checking? on ThorstenMeyerAI.com
Get business pricing on office and shipping supplies
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
TL;DR
A flaw in Google’s Brotli decoder, tracked as CVE-2026-111497, can cause memory corruption when affected software processes crafted compressed data; a security firm demonstrated code execution on an unmodified Node.js build. Fixes are available for several runtimes and packages, but administrators must check bundled copies and restart affected processes to load updated decoders. CISA reports no known exploitation in the wild, and the vulnerability is not listed in its Known Exploited Vulnerabilities catalog.
A vulnerability in Google’s Brotli decoder, tracked as CVE-2026-111497 and nicknamed Broccoli2Shell, has prompted security updates across software that uses the compression library. The flaw can corrupt memory when affected software processes crafted compressed data; Imperva demonstrated code execution on an unmodified Node.js build, while CISA data reports no known exploitation in the wild.
The affected component is the Brotli C decoder in versions 1.0.3 through 1.2.0, according to the source report. A malformed stream can be treated as incomplete input rather than invalid data, leading the decoder to write beyond an eight-byte internal buffer. The resulting memory corruption could crash a process, expose memory or, in a severe case, allow code execution. The CVE record identifies an out-of-bounds write and an unchecked return value.
Fixes are available in Brotli 1.0.10, 1.1.1 and 1.2.1. Listed runtime and package updates include 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. The source also lists Debian fixes for Bookworm and Trixie. Administrators should check the advisory for the specific versions relevant to their platform rather than assume one version number applies everywhere.
Upgrading a package is not always enough: running processes retain the decoder already loaded, so affected services need to be restarted after patching. Official Node.js builds include their own Brotli copy, making the Node.js release the relevant update for those builds. Some Linux distributions instead link Node.js to a system library. The report says Node.js 20, 23 and 25 have no fix; users of those lines need to review supported upgrade options and exposure.
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
Where Brotli Creates Exposure
The issue matters because Brotli is embedded or integrated across many software stacks, not just one application. The source report identifies exposure paths in automatically decoded web responses, accepted request bodies and tools that process compressed files. Node.js fetch can decode Brotli responses; Python clients may do so when a Brotli package is installed. Express and body-parser versions listed in the report can inflate Brotli request bodies, but the underlying defect is in the decoder, so upgrading Express alone does not fix it.
That broad reach creates a supply-chain patching task. Teams need to identify whether the decoder arrives through a runtime, a direct dependency, a distribution package or a separately bundled copy. The source cites an independent tracker listing more than 30 projects and packages that bundle Brotli; as of October 26, it listed seven bundled copies still unfixed, including DuckDB, Apache Arrow’s bundled build, 7-Zip-zstd, p7zip and EDK II firmware tools. These tracker findings are a snapshot, not confirmation that every installation of those products is vulnerable or exposed.
For defenders, the practical priority is to find software that actually decodes untrusted compressed input, apply the relevant vendor fix, and restart the process. The reported exploit demonstration raises the potential impact, but it does not establish that attackers are using the flaw against systems in the wild.
Brotli compression software security guide
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
From Source Fix to Public Alert
The source report says the underlying Brotli change was committed on February 27, 2026, under a commit message about detecting invalid streams earlier. It says the change was not identified as a security fix at the time. Releases carrying the fix appeared on October 21, a 236-day gap between the source change and those releases, according to the report. That interval helps explain why dependent projects had to coordinate updates after the security significance became clear.
The CVE became public on October 22, and a public proof of concept appeared the same day, the source reports. Google assigned the issue a CVSS 4.0 score of 9.2, classified as Critical. Separately, Imperva reported running code on an official Node.js image after several attempts. Those details establish serious demonstrated potential, but not widespread or successful attacks against real-world targets.
The report also says Node.js credited OpenAI Codex Security, while OpenAI said the flaw was found during red-teaming involving teams of AI agents. This attribution describes how the vulnerability was identified; it does not change the need for maintainers and users to verify which fixed release applies to their deployments.
Exploitation and Remaining Bundles
The available information does not show that Broccoli2Shell is being exploited in the wild. The source reports that CISA’s data says “exploitation: none” and that the CVE is not in CISA’s Known Exploited Vulnerabilities catalog. Those indicators describe the reporting available at the time and do not prove that no attack has occurred. Imperva’s demonstration and a public proof of concept show that exploitation is possible under some conditions, but the source does not establish how many systems are reachable or vulnerable in practice.
Patch coverage is also incomplete. The tracker cited by the report listed seven bundled copies without fixes as of October 26, while five additional projects had fixes in their main development branches. The full deployment status of those projects, the timing of releases, and whether downstream distributors have shipped updated builds remain unclear from the supplied material. Exposure depends on the version in use and whether the affected decoder processes attacker-controlled compressed data.
Verify Fixes and Restart Services
Administrators should inventory runtimes, Python packages, system libraries and applications that bundle Brotli, then compare installed versions with the relevant vendor advisories. Teams should pay particular attention to services that fetch and decode remote content, accept compressed request bodies, or process uploaded archives and other files. Where a vendor has not yet issued a fixed release, the source material does not provide a universal workaround; operators should follow that vendor’s guidance and assess whether they can limit processing of untrusted compressed data.
After applying updates, restart affected services and workers so they load the patched decoder. Check container images and deployment templates as well as live hosts: rebuilding an image without redeploying it will not update a running instance. Teams should also recheck package and distribution advisories, since fixes can arrive on different schedules. The next relevant developments are vendor updates for remaining bundled copies and any change in reported exploitation status; neither is confirmed by the source as of October 26.
Key Questions
What is Broccoli2Shell?
It is the nickname for CVE-2026-111497, a flaw in affected versions of Google’s Brotli C decoder. Crafted compressed input can trigger an out-of-bounds write and memory corruption.
Which systems should be checked?
Check systems using affected Brotli versions through Node.js, Python Brotli packages, Bun, Envoy, Istio, .NET, Linux distributions and software with its own bundled copy. Exposure depends on the actual decoder version and how the software processes compressed data.
Does patching mean services are already protected?
No. The source report says running processes keep the decoder they loaded. Apply the appropriate fixed release and restart affected services, workers or containers so they use the updated code.
Is Broccoli2Shell being exploited in the wild?
The supplied report says CISA data lists no exploitation and the CVE is not in CISA’s Known Exploited Vulnerabilities catalog. A security firm demonstrated code execution, but that is not evidence of confirmed real-world exploitation.
Are all Brotli-dependent projects patched?
No. As of October 26, the source-cited tracker listed seven bundled copies still without fixes, and said five more had fixes in their main branches. Check current advisories for each product because release and distribution status can change.
Source: ThorstenMeyerAI.com
Halloween Picks
halloween
As an affiliate, we earn on qualifying purchases.
