What To Do About Broccoli2Shell In Node.js, Python, And Other Platforms
AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: What To Do About Broccoli2Shell In Node.js, Python, And Other Platforms on ThorstenMeyerAI.com

Age 18–24?Offer from Amazon

Prime made for students and young adults

  • Fast, free delivery for dorm and study essentials
  • Prime Video and Amazon Music included
  • Member-only deals
Try Prime for Young Adults Free trial for eligible 18–24 year olds
As an affiliate, we earn on qualifying purchases.

TL;DR

A memory-corruption flaw in Google’s Brotli decoder, tracked as CVE-2026-111497 and nicknamed Broccoli2Shell, affects versions 1.0.3 through 1.2.0 and software that bundles them. Fixes are available for several runtimes and packages, but some bundled copies remain unpatched; teams need to update affected components and restart running processes.

Security fixes for CVE-2026-111497, a memory-corruption flaw in Google’s Brotli decoder, are now available across several runtimes and packages, including Node.js and Python. The issue can affect applications that decode attacker-supplied Brotli data; administrators must update the relevant component and restart processes to load the fix.

The flaw affects Brotli C decoder versions 1.0.3 through 1.2.0. The Node.js advisory describes malformed compressed input that the decoder treated as incomplete rather than invalid. That handling could cause an out-of-bounds write, potentially crashing a process or corrupting memory. Code execution is a possible worst-case impact, but it is not the same as evidence of widespread exploitation.

Available 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; and Python Brotli 1.2.1 and brotlicffi 1.2.1.0. The supplied advisory list also names Bun 1.4.4, several Envoy and Istio releases, and .NET runtime releases. These version numbers are specific to the affected product: teams should check the relevant project’s advisory and distribution package status before choosing an upgrade.

Updating alone may not clear a live process. The source material says a running process continues using its existing decoder until restarted. Official Node.js builds include their own Brotli copy, so those deployments need a fixed Node.js release. Other installations may link to a system library, making the operating-system package relevant too.

At a glance
updateWhen: Developing as of October 26, 2026; publ…
The developmentSecurity fixes for a critical Brotli decoder vulnerability are spreading across Node.js, Python packages and other platforms after the flaw became public on October 22, 2026.
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

A Shared Decoder Spreads Exposure

Brotli is used to compress web content, so the same underlying decoder can appear in many products. Affected paths include automatically decoded responses fetched by applications, Brotli-compressed request bodies accepted by some parsers, and files processed by tools that use the C library. Exposure depends on whether a product actually uses a vulnerable copy and processes data an attacker can control; the mere presence of Brotli does not prove that a particular service is exploitable.

The cross-platform reach makes inventory work as important as patching. The source material cites an independent tracker listing more than 30 projects and packages that bundle their own copy, while some copies had not yet received a fix as of October 26. A patch in the upstream library does not automatically update a runtime, container image, operating-system package or application dependency. Teams need to identify where the decoder comes from and confirm the fix reached the deployed artifact.

The advisory assigns the issue a CVSS 4.0 score of 9.2, rated Critical. At the same time, the source reports no known exploitation in the wild: CISA’s data lists exploitation as “none,” and the CVE was not in CISA’s Known Exploited Vulnerabilities catalog as of the report date. Those points describe the reported status then; they do not remove the need to patch.

Amazon

Brotli vulnerability CVE-2026-111497 security incident response guide

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

From Upstream Fix to Runtime Patches

The source says the Brotli correction entered the project source on February 27, 2026, under a commit titled “Detect and report invalid stream earlier.” It was not described as a security fix at the time. Releases containing the correction appeared on October 21, a gap the source calculates as 236 days. The CVE became public on October 22, alongside a public proof of concept, according to the cited tracker.

That timeline helps explain why multiple projects required separate updates. A decoder can be bundled directly into a runtime or package, or supplied by a system library. Node.js released patched versions, while Python packages and other ecosystem projects published their own fixes. The source also reports that Debian listed patched packages for bookworm and trixie, with distribution-specific version strings; users should follow their distribution’s security notices rather than assume an upstream version number maps directly.

Some project versions named in the source have no listed Node.js fix: Node.js 20, 23 and 25. The source further says that, as of October 26, seven bundled copies were still unfixed, including copies associated with DuckDB, Apache Arrow, 7-Zip-zstd, p7zip and EDK II firmware tools. It says five other projects had fixes in their main branches, which may not yet mean a released update is available.

Amazon

Node.js application security hardening guide

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Unpatched Copies and Exposure Status

Exposure varies by deployment. The available information does not establish that every application using Node.js, Python, Brotli or a listed framework is vulnerable. The relevant questions are which decoder copy is loaded, whether the affected code path is used, and whether untrusted compressed input can reach it.

The source’s list of unfixed bundled copies is a snapshot dated October 26, 2026, and may change as maintainers publish releases. It does not provide a complete, verified inventory of every affected downstream product. It also reports no known in-the-wild exploitation at that time, but that status could change; the Imperva demonstration of code execution on an official Node.js image shows a demonstrated possibility, not confirmed attacks against deployed services.

The source mentions a separate DreamHost password-reset incident but says the company named no cause and provides no evidence linking it to Broccoli2Shell. The incidents should not be treated as connected.

Amazon

Python dependency vulnerability scanning software

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Patch, Restart, Then Verify

Teams should check the advisories for their runtime, package manager, operating system, proxy and bundled tools; apply a fixed release where one is available; and restart affected processes. For Node.js services, first confirm whether the installation is an official build with bundled Brotli or a system-linked build. Python users should check both the Brotli or brotlicffi package and the applications that load them.

Where a direct fix has not been released, maintainers’ advisories and distribution notices are the next source of status. Organizations can reduce uncertainty by identifying components that accept compressed request bodies, fetch Brotli responses, or decode files from untrusted sources, then verifying the actual library version in deployed images. The next development to watch is whether the remaining bundled copies receive released patches and whether security agencies update their exploitation assessments.

Amazon

software composition analysis tool for open source dependencies

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Key Questions

What is Broccoli2Shell?

Broccoli2Shell is the nickname used for CVE-2026-111497, a flaw in Google’s Brotli C decoder. Malformed compressed input can trigger an out-of-bounds write in affected versions.

Which Node.js versions include the fix?

The source lists Node.js 22.23.4, 24.22.1 and 26.12.1 as fixed. It says Node.js 20, 23 and 25 have no fix listed; check current Node.js security guidance for the status of your release line.

Does upgrading Express fix the issue?

Not by itself, according to the source. The flaw is in Brotli, not Express. Some Express and body-parser versions can inflate Brotli request bodies, so applications using that path need a fixed decoder or runtime as well as any framework updates their maintainers recommend.

Are attackers exploiting the flaw in the wild?

The source reports no known in-the-wild exploitation as of October 26, 2026. CISA’s data listed exploitation as “none,” and the CVE was not in its Known Exploited Vulnerabilities catalog at that time. An independent demonstration of code execution was reported, but that does not establish active attacks.

What should teams do after installing a patch?

Restart affected processes so they load the updated decoder, then verify the version in the deployed runtime, package or system library. Check containers and bundled tools separately, since updating one component may not update every copy.

Source: ThorstenMeyerAI.com

HALLOWEEN

Halloween Picks

As an affiliate, we earn on qualifying purchases.

You May Also Like

Could AI Have Been Russia’s Su-57’s Hidden Enemy?

Analyzing the claim that Ukraine used AI-driven cyber tactics to manipulate Russian air defenses, potentially causing a Su-57 crash.

The Water Storage Rule That Prevents a Bad Emergency Plan

A vital water storage rule can prevent disaster, but understanding the key practices is essential to ensure your emergency plan remains effective.

OpenAI’s Dilemma: Releasing Astra Gated After Crossing The Line

OpenAI has publicly disclosed that its Astra model has reached the ‘Critical’ cybersecurity capability level, prompting a gated, monitored release amid safety concerns.

Cybersecurity operations signal monitor: A backdoor in a LinkedIn job offer

Security researchers have identified a backdoor in a LinkedIn job posting, raising concerns about targeted cyber espionage and data breaches.