🔍 Read the full analysis: Cross-Stack Compression Bug: A Broccoli2Shell Remediation Guide on ThorstenMeyerAI.com
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
TL;DR
A flaw in Google’s Brotli decoder, tracked as CVE-2026-111497, can cause memory corruption when processing crafted compressed data. Fixes are available for several runtimes and packages, but teams must update the component they actually use and restart affected processes; some bundled copies were still listed as unfixed on October 26, 2026.
Security updates are addressing CVE-2026-111497, a flaw in Google’s Brotli decoder that can corrupt memory when software processes certain malformed compressed data. The vulnerability affects multiple runtimes and packages that use the decoder; maintainers have released fixes for several of them, but a tracker still listed seven bundled copies without fixes as of October 26, 2026.
The flaw occurs when the decoder treats a malformed stream as though it is incomplete and keeps processing it. According to the Node.js security advisory, this can cause writes beyond an eight-byte internal buffer. The CVE record identifies an out-of-bounds write and an unchecked return value. Depending on the affected application and circumstances, memory corruption can cause a crash, disclose memory contents or potentially permit code execution.
The listed fixed versions 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. Updates are also listed for Envoy, Istio, .NET and Debian. The affected software and its release branches vary, so operators should check the advisory for their specific product rather than assume one version number applies across a stack.
A software update alone may not replace the decoder already loaded by a running service. The source article advises administrators to patch and restart affected processes. Node.js versions 20, 23 and 25 are listed as receiving no fix in the supplied material; teams using those releases need to check their support options and upgrade path. Updating Express alone does not fix the underlying Brotli library, according to the source.
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 Across Many Stacks
Brotli is used to compress web traffic and other data, and its decoder is embedded in software across languages and infrastructure. A flaw in that shared component can consequently affect applications that do not call Brotli directly. Exposure may arise when software automatically decompresses a response, accepts a compressed request body, or reads a file through a tool that includes the vulnerable C decoder.
That reach makes inventory and patch coordination important. A team may need to update a runtime, Python dependency, proxy, operating-system package, container image or separately bundled copy. The source says official Node.js builds bundle Brotli, while some Linux distributions link Node.js to a system library. The applicable fix can depend on how the software was built and deployed.
The public material describes the issue as serious, but it does not establish widespread attacks. Google’s CVE record gives the vulnerability a 9.2 Critical score under CVSS 4.0. The source reports that Imperva demonstrated code execution on an official Node.js image after several attempts. It also says CISA data showed no known exploitation and that the CVE was not in CISA’s Known Exploited Vulnerabilities catalog at publication time. Those details indicate risk, not proof of attacks against users.
As an affiliate, we earn on qualifying purchases.
From Source Fix to Public Advisory
The source article dates the underlying code change to February 27, 2026, when a Brotli commit titled “Detect and report invalid stream earlier” was made. It says the change did not identify a security issue. Releases containing the fix appeared October 21, a gap the article calculates as 236 days. OpenAI said the security significance was not known at the time and that no more recent Brotli release was available.
The CVE became public on October 22, according to the source, and a public proof of concept appeared on GitHub the same day. The article describes subsequent fixes across packages and distributions, illustrating how a correction in a shared library must pass through software that bundles or depends on it before reaching deployed services.
The article also reports that Node.js credited OpenAI Codex Security and that OpenAI said the flaw was found during red-teaming with teams of AI agents. This is an attributed account of the discovery, not independent proof that AI tools alone found or validated the vulnerability. The supplied material separately mentions a DreamHost password reset incident and explicitly says no cause was given and nothing links it to Brotli; the incidents should not be conflated.
network security monitoring appliance intrusion detection
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Exposure and Remaining Unpatched Copies
The supplied material does not establish how many systems are vulnerable or whether attackers have exploited the flaw in the wild. Imperva’s demonstration shows a reported code-execution result under test conditions, but it does not show that the same outcome is achievable against every affected product or configuration. The source reports no known exploitation in CISA data as of October 26; that status can change.
It also says an independent tracker listed seven bundled copies still unfixed on October 26, naming DuckDB, Apache Arrow’s bundled build, 7-Zip-zstd, p7zip and EDK II firmware tools among them. Five additional projects were described as fixed in their main branches, which does not necessarily mean a released version is available. The supplied material does not give release dates for all outstanding copies or identify every affected deployment.
Whether a particular service is exposed depends on its Brotli version, build method and whether it processes attacker-controlled compressed data. A dependency scanner may not identify an embedded copy, and the source says Python package advisories were absent from some advisory databases on October 23 before GitHub added them later that day. The current status of every package should be checked against its maintainer’s latest notice.
server rack UPS battery backup for network equipment
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Verify, Update and Restart Services
Operators should identify where Brotli is used, including indirect dependencies and software that vendors or distributions build with a bundled decoder. They should compare installed versions with the applicable vendor advisory, apply a fixed release where available, rebuild affected images or packages, and restart processes so they load the updated code. Teams on Node.js 20, 23 or 25 should consult the project’s support and upgrade guidance because the source lists no fix for those lines.
Maintainers of products with bundled Brotli copies still need to publish or backport updates, and users should watch for a released package rather than relying solely on a fix in a development branch. Security teams should also check whether their scanners have current advisories and whether their inventory captures system libraries and embedded copies.
The status described here is dated October 26, 2026. Further releases, advisories and changes to exploitation reporting may follow. The source material does not provide a single deadline or a complete remediation schedule across all affected projects.
USB-C Ethernet adapter for secure server administration
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
What is the Broccoli2Shell vulnerability?
It is the name used in the source article for CVE-2026-111497, a flaw in Google’s Brotli decoder. Malformed compressed input can trigger memory corruption; the CVE record describes an out-of-bounds write and an unchecked return value.
Which software has fixes?
The supplied list includes 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. It also lists fixes for Bun, Envoy, Istio, .NET and Debian. Check the relevant maintainer advisory for the exact product and branch.
Is the flaw being exploited in the wild?
The source reports that CISA data listed exploitation as “none” and that the CVE was not in CISA’s Known Exploited Vulnerabilities catalog as of October 26, 2026. That is a status report at that time, not a guarantee that exploitation cannot occur or that the status will not change.
Does updating a package or server automatically fix a running service?
Not necessarily. The source advises restarting affected processes after patching because a running process may continue using the old decoder until it reloads. Teams should also verify whether Brotli comes from the runtime, operating system or a separately bundled copy.
Does the DreamHost password reset incident relate to Brotli?
The source says DreamHost disclosed password resets for some email and FTP/SFTP accounts but did not name a cause. It explicitly reports no link between that incident and the Brotli flaw.
Source: ThorstenMeyerAI.com
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
