
A vulnerability in the compression library Brotli (CVE-2026-111497) was added to the US CISA’s Known Exploited Vulnerabilities (KEV) catalog on October 27, 2026. The deadline for US federal agencies is November 10 (I checked the data in CISA’s KEV directly).
Node.js disclosed it on October 21, so it is widely known as a Node.js problem. But the cause is the Brotli library that Node.js bundles, so other products that use the same library are affected too.
This article is for people who want to know where to check in their own environment. It is built on primary sources and separates what is confirmed from what is not. The information is current as of October 29, 2026. Sources are given next to each statement.
| Date (2026) | Event | Source |
|---|---|---|
| Feb 27 | The fix lands in the Brotli source, with no release or announcement | Help Net Security |
| Oct 21 | Node.js releases fixes. Google releases Brotli 1.2.1, 1.1.1 and 1.0.10 | Node.js, Google |
| Oct 22 | The CVE record and advisory are published. The first proof of concept (PoC) appears | GitHub advisory, Aikido |
| Oct 25 | Microsoft releases out-of-band .NET updates | Microsoft .NET Blog |
| Oct 26 | Palo Alto says PAN-OS is affected. JPCERT/CC publishes an alert. ELLIO reports attack traffic | Palo Alto, JPCERT/CC (Japanese), Help Net Security |
| Oct 27 | CISA adds it to KEV | CISA KEV data |
It was found by OpenAI Codex Security (Khai Tran and Sylvie Mayer; Node.js).
The fix went into the source in February, and the release came in October. Help Net Security points out that for about eight months in between, the fix could be read in the public repository (Help Net Security).
Brotli is bundled inside other products. The status by product is below.
| Product | Fixed version | Source |
|---|---|---|
| Brotli (C library) | 1.2.1, 1.1.1, 1.0.10 | |
| Node.js | 22.23.4, 24.22.1, 26.12.1 | Node.js |
| Node.js 20, 23, 25 | No fix (end of life) | Aikido |
| Bun | 1.4.4 | Aikido |
Python (Brotli, brotlicffi) |
1.2.1, 1.2.1.0 | GitHub advisory |
| .NET | 8.0.33, 9.0.22, 10.0.14 (RC3 for .NET 11) | Microsoft .NET Blog |
| Palo Alto PAN-OS | 12.2.4-h1, 12.1.4-h13, 12.1.7-h11, 12.1.10-h3, and hotfixes on the 11.2 branches | Palo Alto |
JPCERT/CC names Node.js, Bun and the Python Brotli packages as examples, and says Brotli is embedded in a wide range of products. Google offers no mitigation (JPCERT/CC, in Japanese).
Envoy, Istio, curl, FFmpeg, Apache Arrow, ClickHouse and Java’s brotli4j also come up in discussion of the impact (Help Net Security, Aikido). These come from news coverage and security-vendor blogs, so check each product’s official notice.
Points to watch:
Having Brotli installed is not enough to be attacked. The problem arises when you decompress Brotli data the attacker prepared.
| Situation | Exposed? | Source |
|---|---|---|
Node.js decompresses outside data with node:zlib |
Yes | Node.js |
Express 5 (express.json()) accepts request bodies |
Yes (decodes Brotli bodies by default) | Sysdig |
| Express 4 | Not through body-parser (it returns 415) | Sysdig |
Server-side fetch() calls user-supplied URLs or webhook targets |
Possibly (it decompresses Brotli responses automatically) | Aikido, Sysdig |
.NET with request decompression or HttpClient automatic decompression turned on |
Yes. Off by default | Microsoft .NET Blog |
| PAN-OS with Brotli inspection and TLS decryption on | Yes. The management web interface and API are not affected | Palo Alto |
On PAN-OS 11.2.4 and later, Brotli inspection is off by default. To check, run show system setting brotli in the CLI. If it shows “Enabled: yes,” you are exposed (Palo Alto).
| Item | Content | Confidence |
|---|---|---|
| CISA KEV listing | October 27. Due date November 10. No attacker or target named | Primary (CISA KEV data) |
| Attack traffic | ELLIO reported on October 26 that its sensors recorded it. The traffic carried a public PoC that ELLIO says gets a shell on vulnerable builds | News report (Help Net Security). I could not check ELLIO’s original |
| Public PoC | October 22. Reported to reach code execution only on a deliberately weakened build. On standard builds, a crash and a limited memory read | Secondary (Aikido) |
| Code execution in a standard setup | Imperva says it succeeded on the official Node.js 24.22.0 image (Linux arm64) after several attempts. The exploit is unpublished | Secondary (Sysdig) |
| Palo Alto’s view | Says it is not aware of malicious exploitation of this issue on PAN-OS (as of the October 29 update) | Primary (Palo Alto) |
| Severity | Google’s CVE record gives CVSS v4.0 9.2 (Critical). Node.js rates it High | Primary (GitHub advisory, Node.js) |
In short: attack traffic has been observed and CISA lists it as exploited, but it has not been shown that code can be run reliably in any environment. Crashes are reported to be easy to reproduce (Sysdig). A service going down is damage in itself.
Work through these in order.
The commands to check:
# Node.js
node --version
node -p "process.versions.brotli"
# Python
pip show Brotli brotlicffi
pipdeptree -r -p Brotli
# .NET
dotnet --list-runtimes
urllib3, requests, aiohttp, httpx or Scrapy. Check your lockfiles too (Aikido).set system setting brotli-encoding disable).None of these makes you safe. They buy time.
Content-Encoding: br at a proxy or load balancer. This does not cover responses your server fetches (Aikido).express.json({ inflate: false }). This also rejects gzip, so check the impact on clients first (Sysdig).The Node.js advisory gives no workaround. To protect against responses that Node.js fetches, updating is the only way.
Attack traffic has been observed. Before you update, check the following.
If you’d like help finding which components in your environment include Brotli, updating them, or checking for intrusion, get in touch below.
We are currently taking free consultations on security. Questions like "Is our site safe?" or "Where should we start checking?" are welcome.
