Brotli decoder bug puts Node.js, Bun, Python and Envoy apps at risk
CVE-2026-111497, a memory flaw in Google's Brotli decoder code, reaches every program that bundles it, so Node.js, Bun, Envoy and Python users must update each copy.
Key points
- Node.js rates CVE-2026-111497, a flaw in its bundled Brotli decoder, as high severity and patched it in v22.23.4, v24.22.1 and v26.12.1.
- Each program ships its own copy of the decoder, so Bun, Envoy, Istio and Python packages each need their own update.
- No in-the-wild exploitation has been reported, and fixes are reaching Linux distributions at different times.
A single flaw in shared compression code has pushed developers to patch several popular tools at once. The Node.js project has patched CVE-2026-111497, a high-severity write past the end of a buffer inside its bundled Brotli decoder. The project's advisory names crashes, memory disclosure and remote code execution as outcomes of the flaw.
The problem reaches well past Node.js. The flaw sits in Google's Brotli C library from version 1.0.3 up to 1.2.0, and since each program bundles its own decoder, every affected project must patch its own copy.
Key facts
- The Node.js team put out security releases for the 26.x, 24.x and 22.x lines on Wednesday, October 21, 2026.
- The fixed Node.js builds are v22.23.4, v24.22.1 and v26.12.1.
- Upstream, the repair landed in Brotli 1.0.10, 1.1.1 and 1.2.1.
- Bun users need version 1.4.4, since 1.4.3 and older carry the bug.
- So far, nobody has reported attacks using the flaw, and a CISA review dated October 23 marked exploitation as none.
How the bug works
Brotli is a widely used way to squeeze web data. Google designed the format, and the faulty piece is the C code that unpacks it, which is why the bug travels into runtimes, proxies and Python libraries.
The mistake itself is small. According to the Node.js project, a bad block switch was handled as if the decoder simply needed more data, so it kept piling bytes into an internal buffer only eight bytes long. Overrunning a buffer in this way is what makes the bug serious.
The attack has been shown to work in at least one setup. Imperva's Red Team got its own code to run on a stock Node.js 24.22.0 build for ARM64 Linux, though the team has kept its exploit private. Whether other builds can be attacked the same way is not known.
The repair took a long time to ship. The patch entered Brotli's source code on February 27, yet no Brotli release included it before October 21.
The Node.js project thanked the finders. It named Khai Tran and Sylvie Mayer of OpenAI Codex Security as the people who reported the flaw.
Severity ratings vary. Google gives the bug a critical 9.2 under CVSS 4.0, Node.js labels it high, and Red Hat puts it at 8.1.
Who is affected
The exposure depends on how an app handles data. Node.js and Bun apps face risk when the built-in fetch() reads a reply marked Content-Encoding: br, or when Express 5 or body-parser 2 decodes an uploaded Brotli body. By contrast, a bare Node.js HTTP server leaves request bodies undecoded.
Envoy is at risk only in some setups. The proxy's releases 1.39.2, 1.38.5, 1.37.7 and 1.36.11 are exposed only with the Brotli decompressor switched on, and 1.40.0, 1.39.3, 1.38.6, 1.37.8 and 1.36.12 fix it.
Istio follows the same pattern. Its 1.31.0 to 1.31.1, 1.30.0 to 1.30.5 and 1.29.0 to 1.29.8 builds are exposed only with Brotli decompression enabled, and 1.31.2, 1.30.6 and 1.29.9 close the gap.
Python users may be exposed without knowing it. The fix arrived in the Brotli package at 1.2.1 and brotlicffi at 1.2.1.0, and popular clients like requests, urllib3, httpx and aiohttp start unpacking Brotli on their own once either one is present.
What it means for you
One update may not cover everything. Because every project carries its own decoder and must patch it separately, a team that fixes Node.js could still run an old copy inside Bun, a proxy or a Python library.
Edge protection may leave a gap too. One edge provider said its firewall rules do not cover "responses your functions fetch from other servers."
Old Node.js lines are left out. The project says releases past end of life count as affected whenever a security update ships, and only the 26.x, 24.x and 22.x lines received fixes.
Practical steps
- Start with Node.js. The project's security release page links to v22.23.4, v24.22.1 and v26.12.1.
- Restart after patching. A process that is still running holds on to the old decoder, so services need a restart and container images need a rebuild.
- Check Python versions yourself. PYSEC-2026-4322 and PYSEC-2026-4323 only appeared on October 23, so scanners may not flag the packages yet.
- Use a stopgap if patching must wait. One option is to refuse incoming requests marked Content-Encoding: br before decoding; in Python, removing Brotli and brotlicffi makes clients fall back to gzip and deflate.
- Do not count on request headers alone. Leaving br out of Accept-Encoding is not enough, because a server can reply in Brotli regardless.
What happens next
Operating system fixes are rolling out unevenly. Debian patched its brotli package for Debian 13 on October 23, while Amazon Linux 2023 still showed brotli and Node.js 24 as waiting for a fix as of October 22.
It is also unclear whether code execution is possible on builds beyond the one Imperva tested.
FAQ
Will my older Node.js version get a fix? No. Only the 26.x, 24.x and 22.x lines received updates, and end-of-life lines count as affected.
Will my dependency scanner catch the Python packages? Maybe not yet. The PYSEC-2026-4322 and PYSEC-2026-4323 entries were added on October 23.
Does removing br from Accept-Encoding protect me? Not by itself, since a server may send Brotli no matter what the client requests.
Has anyone been attacked with this bug? No in-the-wild attacks have been reported.
Which Bun version is safe? Bun 1.4.4 includes the fix.
Sources
- nodejs.orgnodejs.org
- The Hacker NewsThe Hacker News
More from the network
Junious Media Network ↗Tarantino shows first 17 minutes of Cliff Booth film at AFI Fest
Quentin Tarantino surprised an AFI Fest crowd with the opening of the David Fincher-directed Brad Pitt film, which Netflix opens in Imax on Nov. 25.
daily.juniousmedia.com ↗Taylor Swift's self-titled debut album turns 20
Released Oct. 24, 2006, "Taylor Swift" yielded the hits "Tim McGraw" and "Our Song." Her Nashville Songwriters Hall of Fame induction is set for Oct. 26.
daily.juniousmedia.com ↗Stop using PowRyte pressure washers now, CPSC warns
The CPSC says PowRyte pressure washers lack a GFCI shock guard near the plug, and the maker, based in China, has not responded to recall requests.
daily.juniousmedia.com ↗Heated Rivalry Season 1 heads to more than 650 U.S. theaters
Regal is leading a limited theatrical run of all six Season 1 episodes, shown in pairs from Nov. 6 to 30, ahead of Season 2 in spring 2027.
daily.juniousmedia.com ↗