AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: Broccoli2Shell In Production: What To Update, Restart, And Inspect on ThorstenMeyerAI.com

Buying for a business?Offer from Amazon

Get business pricing on monitors, keyboards and dev gear

  • Business-only prices and quantity discounts
  • Tax-exempt purchasing
  • Multiple users, one account, clear invoices
As an affiliate, we earn on qualifying purchases.

TL;DR

The Broccoli2Shell flaw, CVE-2026-111497, affects Google’s Brotli C decoder and software that bundles vulnerable versions. Fixes are available for several runtimes and packages, but affected services need to be restarted to load patched code; the source tracker still lists some bundled copies without a release fix. No exploitation in the wild has been reported in the cited CISA data.

Security updates are spreading for Broccoli2Shell, a flaw in Google’s Brotli decoder tracked as CVE-2026-111497, after researchers demonstrated code execution on an unmodified Node.js build. The vulnerability affects Brotli versions 1.0.3 through 1.2.0 and can reach applications through runtimes and packages that include the decoder, making patching and restarting affected services the immediate response.

The flaw is in the Brotli C decoder, not in Node.js or Express itself. The Node.js advisory describes malformed compressed input that the decoder treated as incomplete rather than invalid; the decoder could then write beyond an eight-byte internal buffer. The CVE record identifies an out-of-bounds write and an unchecked return value. Depending on the affected program and how it handles the data, memory corruption can cause a crash, expose memory or potentially enable code execution.

Fixes listed in the source material 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. The material also lists patched releases for Envoy, Istio, .NET and Debian. Administrators should match the upgrade to the component actually deployed: an application package update may not replace a decoder bundled inside a runtime or tool.

Restarting matters because a process that is already running continues to use the decoder loaded when it started. Apply the relevant patched release, rebuild or redeploy affected images where needed, and restart the service or workload. The source material says Node.js 20, 23 and 25 have no listed fix, and its tracker reported seven bundled copies still without fixes as of October 26. Those tracker findings are time-sensitive and should be checked against current vendor advisories.

At a glance
updateWhen: Developing; patches and advisories were…
The developmentA critical flaw in the Brotli decoder has prompted security updates across Node.js, Python packages and other projects, with administrators urged to patch dependencies and restart affected processes.
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

Why Shared Brotli Copies Matter

Brotli is used to compress web responses and other data, so a flaw in the shared decoder can affect more than one language or product. Exposure depends on whether a particular application processes attacker-controlled Brotli data. Examples cited in the source include fetching compressed responses, accepting compressed request bodies, and tools that read files such as archives or data files. A dependency’s presence alone does not establish that an installation is exploitable.

The update workload can extend beyond a single package: maintainers may need to patch a library, publish a runtime or package update, rebuild a container image, and then restart running services. The source reports that an independent tracker listed more than 30 projects and packages bundling their own copy, while some copies remained unfixed. That makes inventorying deployed components important, especially where software ships a private decoder rather than using the system library.

The cited evidence indicates a serious vulnerability, but not confirmed widespread exploitation. Google’s CVE record assigns a CVSS 4.0 score of 9.2, Critical. The source says CISA data listed exploitation as none and the CVE was not in CISA’s Known Exploited Vulnerabilities catalog at the time of publication. Those indicators describe the reported status, not a guarantee that exploitation cannot occur.

Amazon

enterprise vulnerability management software CVE tracking

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

From Decoder Fix to Runtime Patches

The root-cause change was committed to Brotli’s source code on February 27, 2026, under the title “Detect and report invalid stream earlier.” According to the source, that commit did not describe the change as a security fix. Releases containing the fix appeared on October 21, a gap of 236 days. The vulnerability became public on October 22, when a proof of concept also appeared on GitHub, according to the source’s cited tracker.

That delay helps explain why a library-level correction did not immediately protect every dependent application. Each project that bundles or depends on Brotli must identify the issue, produce a release, and distribute it. The source reports that Python package advisories were absent from some advisory databases on October 23 before GitHub’s advisory was added later that day. Dependency scanning may therefore miss an issue until relevant package records are published.

For Node.js, the listed fixed releases are 22.23.4, 24.22.1 and 26.12.1; official builds bundle Brotli, while some Linux distributions may link Node.js against a system library instead. Python applications can use Brotli through packages such as Brotli or brotlicffi and through higher-level clients when the relevant support is installed. An upgrade to a framework alone may not fix a vulnerable decoder underneath it.

Amazon

container image vulnerability scanning software

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Exposure and Unpatched Copies

The source says Imperva demonstrated code execution after several attempts on an official Node.js image, but that demonstration does not show that every vulnerable deployment can be exploited in the same way. The conditions needed for exploitation will vary with the application, decoder build and whether untrusted compressed data reaches it. The material does not provide a complete, independently verified list of affected deployed systems.

It also reports that seven bundled copies remained without fixes as of October 26, naming DuckDB, Apache Arrow’s bundled build, 7-Zip-zstd, p7zip and EDK II firmware tools among them. Five additional projects reportedly had fixes in their main branches, which may not mean a stable release is available. Administrators should confirm status with each project’s current security notice rather than assume a tracker entry applies to their installed version.

No in-the-wild exploitation was listed in the CISA data cited by the source, and the CVE was not listed in CISA’s Known Exploited Vulnerabilities catalog at that time. Whether attackers are attempting exploitation outside those records, and whether additional vendors will publish advisories, remains unclear.

Amazon

software dependency scanning and SBOM management tools

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Patch, Redeploy and Verify

Teams should identify which applications process Brotli-compressed responses, request bodies or files, then check the versions of runtimes, packages, system libraries and bundled tools in use. Upgrade to a listed fixed release where one exists. For software without a released fix, follow the maintainer’s security notices and assess whether the affected decoding path can receive untrusted data.

After updating, restart affected processes and redeploy rebuilt images or workloads so they load the patched decoder. Verify the running version rather than relying only on a changed dependency file or a successful build. Organizations using distributions or software with bundled copies should check their vendor’s advisory, since the correct fix may differ from the upstream library version.

Further vendor updates and tracker changes are expected as remaining projects assess their copies. The status described here is based on information reported through October 26, 2026; patch availability and exploitation reporting may change after that date.

Amazon

server monitoring and incident response software

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Key Questions

What is Broccoli2Shell?

Broccoli2Shell is the name used for CVE-2026-111497, a flaw in Google’s Brotli C decoder. The source reports that malformed compressed data can cause an out-of-bounds write and that code execution was demonstrated on an unmodified Node.js build.

Which versions are listed as fixed?

The source lists 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. It also gives patched versions for Envoy, Istio, .NET and Debian. Check the relevant vendor advisory for the product and version you run.

Why must affected services be restarted?

A running process generally continues using the decoder loaded when it started. Restarting or redeploying after the update loads the patched component into the running service.

Is Broccoli2Shell being exploited in the wild?

The source reports that CISA’s 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 at that time and does not establish that exploitation is impossible.

Source: ThorstenMeyerAI.com

HALLOWEEN

Halloween Picks

As an affiliate, we earn on qualifying purchases.

You May Also Like

Could StreetComplete’s Quest Format Bring More Detail To OpenStreetMap?

StreetComplete’s quest-based approach to OpenStreetMap editing drew renewed attention on Hacker News, raising questions about structured micro-contributions.

How I Put Jev’s Visual AI Through A 30-Image Trial

A 30-image trial tested Jev 1.14 and 1.13 on headline matching and product identification after TypeSafe added opt-in image support.

The Revised Rules Of Engineering Management With Will Larson

Will Larson discusses how engineering management has changed, why middle managers face new pressures and how AI is reshaping technical leadership.