A Broccoli2Shell Checklist For Node.js, Python, And Other Environments
AIThis post was created with the assistance of artificial intelligence (AI).

🔍 Read the full analysis: A Broccoli2Shell Checklist For Node.js, Python, And Other Environments on ThorstenMeyerAI.com

Before you orderOffer from Amazon

Get hardware and tech essentials 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 flaw in Google’s Brotli decoder, tracked as CVE-2026-111497, affects versions 1.0.3 through 1.2.0 and has prompted fixes across Node.js, Python and other software. Maintainers have issued patched releases, but affected running processes need restarting, and some projects that bundle Brotli remained unfixed as of October 26, 2026. There is no confirmed evidence of exploitation in the wild in the source material.

Google’s Brotli decoder flaw CVE-2026-111497 has led to security updates across Node.js, Python and other software, after a crafted compressed stream was shown to corrupt memory and, in one demonstration, run code on an unmodified Node.js build. The vulnerability affects Brotli versions 1.0.3 through 1.2.0; maintainers have released patched versions, while some software that bundles its own copy remained unpatched as of October 26, according to the source’s tracker.

The flaw is an out-of-bounds write in Brotli’s C decoder. The Node.js advisory says the decoder handled certain malformed input as if it were incomplete and waiting for more data, rather than rejecting it. The resulting writes could exceed an eight-byte internal buffer. The CVE record identifies an out-of-bounds write and an unchecked return value. Memory corruption can cause a crash or expose data; code execution is a possible worst-case impact, not an outcome confirmed for every affected application.

The source lists fixes for Brotli 1.0.10, 1.1.1 and 1.2.1, and for Node.js versions 22.23.4, 24.22.1 and 26.12.1. It says Node.js 20, 23 and 25 do not receive a fix. Python’s Brotli package is fixed in 1.2.1 and brotlicffi in 1.2.1.0. Other listed updates include Bun 1.4.4, several Envoy and Istio releases, .NET runtime releases, and Debian packages. These version details come from the supplied October 26 report and should be checked against each project’s current advisory.

Exposure depends on how software uses Brotli. Node’s built-in fetch() can decode compressed responses; Python HTTP clients may do so when a Brotli package is installed. The source also identifies applications that accept compressed request bodies and tools that process compressed files. Updating a framework alone may not replace the vulnerable decoder: the report says the issue is in Brotli, not Express. After installing a fix, operators must restart affected processes so they stop using the old decoder.

At a glance
updateWhen: Developing; fixes and affected-project…
The developmentA critical memory-corruption flaw in Google’s Brotli decoder has prompted security fixes across multiple runtimes and software packages, with some bundled copies still awaiting patches.
Crypto market snapshot
Fear & Greed Index
50/100 — Neutral
Bitcoin BTC$80,134▼ 0.6%
Ethereum ETH$2,322▼ 1.4%
Tether USDT$0.9993▲ 0.0%
BNB BNB$741.59▼ 0.6%
XRP XRP$1.29▼ 1.1%
USDC USDC$0.9998▲ 0.0%
Solana SOL$101.3▼ 0.8%
TRON TRX$0.3299▲ 0.4%
Live data · CoinGecko · alternative.me (24h change)
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 Brotli Patches Reach Many Stacks

The flaw matters because Brotli is reused across languages, runtimes and applications. A single decoder defect can therefore require fixes from many maintainers, rather than one update to one product. Teams may need to trace direct and transitive dependencies, check whether a runtime bundles its own decoder or uses a system library, and rebuild and restart affected services.

The difference between response decoding and request-body parsing also matters for exposure reviews. Software that fetches compressed content, accepts compressed bodies, or handles Brotli-compressed files may reach the vulnerable code through different paths. The source names webhooks, crawlers, link previews and URL-import features as examples to review; it does not establish that every deployment using these features is exploitable.

The source reports Google’s CVE score as 9.2, Critical under CVSS 4.0. It also says CISA’s data recorded exploitation as “none” and that the CVE was not listed in CISA’s Known Exploited Vulnerabilities catalog at the time. Those indicators describe the reported status on October 26; they do not rule out later exploitation or reduce the need to apply available fixes.

Products Worth Considering

Apple MacBook Pro 14-inch with M5 Max Chip (18-Core CPU, 20-Core GPU), 48GB RAM, 2TB SSD, Space Black

Apple MacBook Pro 14-inch with M5 Max Chip (18-Core CPU, 20-Core GPU), 48GB RAM, 2TB SSD, Space Black

Logitech MX Mechanical Full-Size Wireless Mechanical Keyboard, Tactile Quiet Switches, Backlit Keys, Bluetooth, USB-C, Multi-Device, Graphit

Logitech MX Mechanical Full-Size Wireless Mechanical Keyboard, Tactile Quiet Switches, Backlit Keys, Bluetooth, USB-C, Multi-Device, Graphit

Apple MacBook Pro 2021 16‑inch with M1 Max, 32 GB RAM, 2 TB SSD, Space Gray (QWERTY English)

Apple MacBook Pro 2021 16‑inch with M1 Max, 32 GB RAM, 2 TB SSD, Space Gray (QWERTY English)

As an affiliate, we earn on qualifying purchases.

From Brotli Commit to Runtime Updates

The supplied report says the underlying source-code change was committed on February 27, 2026, under the title “Detect and report invalid stream earlier.” The report says the commit did not identify the change as security-related. OpenAI said the security implications were not known at the time and that Brotli had no more recent release. The patched Brotli releases appeared on October 21, a 236-day gap between the source change and releases carrying it, according to the report.

The CVE became public on October 22, and a public proof of concept appeared on GitHub the same day, the source says. It reports that an independent tracker listed more than 30 projects and packages bundling their own copies. As of October 26, seven bundled copies were still marked unfixed on that tracker, including DuckDB, Apache Arrow’s bundled build, 7-Zip-zstd, p7zip and EDK II firmware tools. The report says five other projects had fixes in their main branches, which does not necessarily mean released versions were already available.

Node.js credits OpenAI Codex Security in its advisory. OpenAI said it found the vulnerability during red-teaming with teams of AI agents. The supplied report also describes Imperva’s demonstration of code execution on an official Node.js image after several attempts. These are attributed findings and demonstrations, not evidence that attackers have used the flaw against systems in the wild.

“A “bigger deal than PHP2Shell” and comparable to “zlib 20 years ago.””

— Juliano Rizzo, security researcher, as quoted by the supplied report

Unpatched Bundles and Exploitation Status

The full set of affected products and versions remains a moving target because projects may bundle Brotli separately from operating-system or runtime libraries. The source’s tracker lists seven bundled copies as unfixed on October 26, but that count can change as maintainers publish updates. It also says some Linux distributions build Node.js against a system library, while official Node.js builds include their own copy; operators need to establish which arrangement applies to their deployment.

The supplied material reports no exploitation in the wild, citing CISA data marked “exploitation: none” and the CVE’s absence from CISA’s Known Exploited Vulnerabilities catalog. It does not establish that the flaw cannot be exploited beyond the cited Node.js demonstration. The report does not give a complete inventory of affected deployments, confirm which organizations have patched, or state when every remaining bundled copy will receive a release.

Patch, Restart and Track Releases

Operators should compare their installed runtime, Brotli library and package versions with the relevant vendor advisories, then apply the fixed release available for their platform. They should also check container images and system packages, since a dependency may be bundled rather than installed as a separately visible library. For Node.js, the supplied report lists fixes in versions 22.23.4, 24.22.1 and 26.12.1 and says versions 20, 23 and 25 receive no fix; teams on those lines should consult the project’s current support guidance for an upgrade path.

After updating, teams should restart affected services and workers, rebuild images where needed, and verify the running versions rather than relying only on a successful package update. Maintainers of still-unfixed bundled copies may publish releases or advisories, while security trackers can update their status. The source supplies no universal patch deadline or confirmed date for the remaining fixes.

Key Questions

What is Broccoli2Shell?

Broccoli2Shell is the name used in the supplied report for the security issue involving CVE-2026-111497, a flaw in Google’s Brotli decoder. The reported defect can cause memory corruption when the decoder processes certain malformed compressed input.

Which versions are reported as vulnerable?

The source identifies Brotli 1.0.3 through 1.2.0 as affected. It lists Brotli 1.0.10, 1.1.1 and 1.2.1 as fixed releases, alongside fixes for Node.js, Python packages and other products. Check the relevant vendor advisory for the exact package and platform version.

Does updating Express fix the issue?

Not by itself, according to the supplied report. The flaw is in Brotli’s decoder, not Express. Applications using body-parser or other components to process Brotli bodies need to update the vulnerable decoder or a package that supplies it.

Is the vulnerability being exploited in the wild?

The source says 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. It also describes a researcher demonstration of code execution; that is not the same as confirmed attacks in the wild.

Why must services restart after patching?

A running process can continue using the decoder loaded before the update. The supplied report says operators should restart affected processes after installing a fix so the patched code is active.

Source: ThorstenMeyerAI.com

Nothing in this article is financial or investment advice. Cryptocurrency and precious-metal investments carry significant risk — do your own research and consider a licensed advisor.
You May Also Like

Warranty claim packet builder for appliance repair shops

A new workflow tool for independent appliance repair shops aims to streamline warranty claim documentation, improving accuracy and reducing rework.