Broccoli2Shell Security Review: Find Affected Compression Components
AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: Broccoli2Shell Security Review: Find Affected Compression Components on ThorstenMeyerAI.com

Before you orderOffer from Amazon

Get smart everyday buys delivered free with Prime

  • Fast, free delivery on millions of items
  • Prime Video, Amazon Music and more included
  • Member-only deals all year
Start your free Prime trial Free trial for eligible customers · Cancel anytime
As an affiliate, we earn on qualifying purchases.

TL;DR

A memory-corruption flaw in Google’s Brotli C decoder affects versions 1.0.3 through 1.2.0 and has prompted fixes across Node.js, Python packages, Bun, Envoy, Istio, .NET and Linux distributions. Researchers demonstrated code execution on an unmodified Node.js build, but CISA data cited in the report lists no exploitation in the wild. Teams need to identify affected copies, install the relevant fixed versions and restart running processes.

Security fixes for Broccoli2Shell, CVE-2026-111497, are now available for several major runtimes and packages after researchers reported a memory-corruption flaw in Google’s Brotli decoder. The flaw affects decoder versions 1.0.3 through 1.2.0; an independent demonstration reportedly ran code on an unmodified Node.js build, though the available source material says there is no known exploitation in the wild.

The vulnerability is in Brotli’s C decoder, not in every framework or application that uses it. The Node.js advisory describes malformed compressed input that the decoder handled as though it were incomplete rather than invalid. According to the advisory, that behavior could cause writes beyond an eight-byte internal buffer. The resulting memory corruption can crash a process or potentially expose memory or enable code execution, depending on the circumstances. Google’s CVE record classifies the issue as an out-of-bounds write and an unchecked return value.

Patched releases 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; Bun 1.4.4; and updates for Envoy, Istio, .NET and Debian. The applicable release depends on the software and distribution. The source says Node.js 20, 23 and 25 have no fix.

Updating a package does not necessarily update every copy of the decoder in a deployment. Some software bundles Brotli, while other builds use an operating system’s library. The report says official Node.js builds include their own copy, so those installations need a fixed Node.js release. After applying an update, operators must also restart running processes; a process that remains open continues using its loaded decoder.

At a glance
updateWhen: Developing; reported October 26, 2026,…
The developmentSecurity updates for the Broccoli2Shell Brotli decoder flaw are spreading across runtimes and dependent projects, while some bundled copies remain unfixed.
Thorsten Meyer AI
CVE-2026-111497 · 26 Oct 2026

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.

9.2CVSS 4.0, Critical, in Google's CVE record
1.0.3–1.2.0affected Brotli versions
3supported Node.js lines fixed on 21 Oct
~83 MPyPI downloads of Brotli in the last month

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 .br files (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

ComponentFixed inNote
Google Brotli (C library)1.0.10 · 1.1.1 · 1.2.11.0.3–1.2.0
Node.js22.23.4 · 24.22.1 · 26.12.120, 23, 25: no fix (end of life)
Python Brotli / brotlicffi1.2.1 / 1.2.1.01.0.3 up to 1.2.0.x
Bun1.4.4includes Brotli 1.2.1
Envoy Proxy1.40.0 · 1.39.3 · 1.38.6 · 1.37.8if Brotli decompression is configured
Istio1.29.9 · 1.30.6 · 1.31.21.29 is end of life
.NET runtime8.0.33 · 9.0.22 · 10.0.14GitHub source builds still affected
Debian brotlibookworm 1.0.9-2+deb12u1 · trixie 1.1.0-2+deb13u1DLA 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

Patches Must Reach Every Copy

The flaw matters because Brotli is widely used to reduce the size of web data, and the decoder can enter systems through several software layers. Node.js can decode compressed responses through its built-in fetch function. Python clients may use Brotli when a compatible package is installed, and some web frameworks or body parsers can decompress incoming request bodies. The issue can also affect file-handling tools that use the C library.

That spread complicates remediation: a team may patch its application but leave a bundled or system-level copy untouched. The source identifies more than 30 projects and packages in an independent tracker, with seven bundled copies still unfixed as of October 26. That count is the tracker’s reported status, not a measure of confirmed attacks. Operators need to check the actual dependency and build used by each service, container and tool rather than assume one top-level upgrade covers them all.

Risk also depends on exposure. Systems that process attacker-supplied compressed responses, request bodies or files may have a path to the vulnerable decoder; the source does not establish that every installation is remotely reachable. The practical priority is to locate affected components, apply their vendor’s fixed release, and restart services. Google’s CVE record assigns a 9.2 Critical score under CVSS 4.0, while the source reports no exploitation listed by CISA.

Products Worth Considering

Apple iPad Air (4th Generation, 10.9-inch, Wi-Fi, 256GB) - Space Gray

Apple iPad Air (4th Generation, 10.9-inch, Wi-Fi, 256GB) – Space Gray

LG UltraGear 27-Inch QHD OLED Gaming Monitor, 240Hz, 0.03ms, G-SYNC Compatible, FreeSync Premium Pro, HDMI 2.1

LG UltraGear 27-Inch QHD OLED Gaming Monitor, 240Hz, 0.03ms, G-SYNC Compatible, FreeSync Premium Pro, HDMI 2.1

Logitech MX Mechanical Mini Mac Wireless Keyboard Low-Profile - Space Grey

Logitech MX Mechanical Mini Mac Wireless Keyboard Low-Profile – Space Grey

As an affiliate, we earn on qualifying purchases.

A Delayed Fix Reaches Downstream

The source traces the underlying code change to February 27, 2026, when Brotli’s source repository received a fix titled “Detect and report invalid stream earlier.” It says the change was not identified as a security fix at the time and was not included in a release until October 21. The report describes that interval as 236 days. This is the time between the source change and releases carrying it, not evidence that attackers knew about or exploited the flaw throughout that period.

The vulnerability became public on October 22, according to the report, and a public proof of concept appeared on GitHub the same day. Fixes then had to move through projects that bundle or depend on Brotli. The report says Python packages were missing from advisory databases on October 23 before GitHub added an advisory later that day, illustrating how dependency scanners can miss a flaw when package records lag.

The issue has also drawn attention to AI-assisted security work. The source says Node.js credits OpenAI Codex Security, and OpenAI said the flaw was found during red-teaming with teams of AI agents. Those statements describe the discovery process; they do not change the technical scope of the vulnerability or establish that all affected projects have been patched.

“The decoder treated one kind of malformed input as ‘waiting for more data’ instead of ‘this is broken.’”

— Node.js security advisory, as summarized by ThorstenMeyerAI.com

Exposure and Remaining Bundles

The source reports that CISA’s data lists “exploitation: none” and that the CVE was not in CISA’s Known Exploited Vulnerabilities catalog as of the report date. Those indicators do not prove that exploitation has never occurred; they describe the status cited in the source. Imperva reportedly ran code on an official Node.js image after several attempts, but the material does not provide enough detail to assess the conditions or reproduce the demonstration.

The exact number of vulnerable deployments is unknown. The tracker reportedly listed seven bundled copies as still unfixed on October 26, including copies associated with DuckDB, Apache Arrow, 7-Zip-zstd, p7zip and EDK II firmware tools; five additional projects had fixes in their main branches. A fix in a development branch is not necessarily present in a released product. The status of individual installations, downstream packages and later releases may change after publication.

The source does not establish that every use of Brotli exposes an application to remote attack. Whether an attacker can supply data to a vulnerable decoder depends on how a product handles responses, request bodies or files. It also does not provide a complete inventory of affected versions for every downstream project.

Verify Updates and Restart Services

Administrators should check vendor advisories and dependency inventories for the exact runtime, package, distribution and bundled libraries in use. Apply the corresponding fixed release, then restart affected services and workloads so they load the updated decoder. Where a project has not yet published a release, teams should follow its official security notices and assess whether the vulnerable component processes untrusted compressed data.

Security teams should also check container images and build artifacts, not just source manifests: a software package may contain its own Brotli copy, and a system-linked build may rely on a separate distribution update. The tracker status and package availability can change; the source’s list should be treated as a snapshot from October 26, 2026, rather than a current guarantee about every project.

The next concrete milestone is the release of fixes by remaining downstream maintainers and confirmation that those fixes have reached shipped versions. Until then, the source supports a measured response: patch where updates exist, restart processes, and verify exposure without treating an unconfirmed attack scenario as evidence of active exploitation.

Key Questions

What is Broccoli2Shell?

It is the name used for CVE-2026-111497, a flaw in Google’s Brotli C decoder. The issue can cause memory corruption when the decoder processes certain malformed compressed input.

Which software is affected?

The source lists Brotli decoder versions 1.0.3 through 1.2.0 and affected downstream software including Node.js, Python Brotli packages, Bun, Envoy, Istio, .NET and some Linux distributions. The affected version and fix depend on the specific product and build.

Is Broccoli2Shell 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 the reported status, not proof that exploitation has never occurred.

What should administrators do?

Identify every Brotli copy in affected runtimes, packages, system libraries and bundled software; install the vendor’s fixed release; and restart running processes. A package update alone may not replace a decoder already loaded by a running service.

Does upgrading Express fix the issue?

Not by itself, according to the source. The flaw is in Brotli, not Express. If a deployment uses an affected Brotli decoder to inflate request bodies, administrators need to update the underlying component and check the relevant vendor guidance.

Source: ThorstenMeyerAI.com

This content is for general information only and is not financial, tax or legal advice. Consult a qualified professional for decisions about your money.
You May Also Like

AI In 2026: 13 Trends That Will Shape The Future

An analysis of 13 confirmed AI trends set to influence technology, business, and society in 2026, based on expert insights and industry developments.

Understanding OpenAI’s Price Drop For GPT‑6 Sol And Luna Amid Stable Benchmarks

OpenAI reduces GPT‑6 Sol and Luna prices by 50% while maintaining similar performance metrics, enabling broader AI deployment at lower costs.

Could Bots And Math Shift The Horizon For Human Work?

A commentary links persistent AI agents, automated workflows and a reported Navier–Stokes result to questions about how work may be organized.

The Compounding Error Problem — Why 99.9% Alignment Decays to 60% in 500 Generations

Research shows that 99.9% alignment accuracy degrades to 60% after 500 generations, raising concerns about recursive self-improvement and safety.