How to Find Vulnerable Brotli Copies on Your Systems
How to find vulnerable Brotli copies in Node.js, Python, curl, Envoy, .NET and Linux packages, with the version checks published for CVE-2026-111497.
To find vulnerable Brotli copies, check each ecosystem separately: the Node.js runtime, Python packages, proxies such as Envoy, curl builds and the operating system library. Brotli is usually bundled inside other software, so a clean OS package check proves very little. This guide shows the checks published for Brotli CVE-2026-111497, which affects decoder versions 1.0.3 through 1.2.0 and is fixed in 1.0.10, 1.1.1 and 1.2.1.
Why can't you just check the system Brotli package?
Most software that decodes Brotli ships its own copy of the decoder. Node.js, Bun, Envoy, .NET and the Python packages each carry their own code, so updating the operating system library leaves all of them unchanged.
Even version strings can mislead. Node.js applied the CVE-2026-111497 fix to its bundled 1.1.0 source instead of upgrading, so process.versions.brotli still reports 1.1.0 on fixed releases. Check the product version, not the embedded library version.
How do you check Node.js for the Brotli fix?
Compare the Node.js version with the fixed releases: 22.23.4, 24.22.1 and 26.12.1. Any older 22.x, 24.x or 26.x build is vulnerable, and Node.js 20 and older get no fix at all.
node -v
A researcher at lilting.ch published a direct check that does not rely on the version number. The fixed build adds a new decoder error constant:
node -p "process.version + ' ' + require('zlib').constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH"
The constant prints undefined on vulnerable builds and -17 on fixed ones. Run it inside each container image as well as on hosts, because images often pin an older Node.js than the host.
Bun is fixed in 1.4.4; 1.0.21 through 1.4.3 are affected.
How do you check Python environments?
Look for the Brotli and brotlicffi packages in every environment: servers, CI runners, laptops and container images. Fixed versions are Brotli 1.2.1 and brotlicffi 1.2.1.0.
pip show Brotli brotlicffi
For a container image, Aikido suggests running the same check inside it:
docker run --rm <image> pip show Brotli brotlicffi
Your code does not need to import Brotli to be exposed. urllib3 (and therefore requests), aiohttp and httpx with its brotli extra use these packages automatically when they are installed. To see what pulled the package in, and to search lockfiles:
pipdeptree -r -p Brotli
grep -i brotli poetry.lock uv.lock requirements*.txt
pip-audit also flags the vulnerable versions. The PyPI advisories are PYSEC-2026-4322 and PYSEC-2026-4323. If you already hash-pin dependencies, update the pinned version and regenerate the hashes; our guide on pinning Python dependencies with pip hash checking covers that workflow.
How do you check curl and Git for Windows?
curl -V lists the libraries a curl build includes. Look for a brotli/ entry and its version.
curl -V
On Windows, the built-in C:\Windows\System32\curl.exe tested by lilting.ch had no Brotli support, but the curl bundled with Git for Windows reported brotli/1.2.0. Git for Windows 2.56.0.windows.4 bundles the fixed 1.2.1. Run git version to confirm, or check C:\Program Files\Git\etc\package-versions.txt for the bundled brotli package version.
How do you check proxies and service meshes?
Check the Envoy and Istio versions against the fixed releases:
- Envoy: 1.36.12, 1.37.8, 1.38.6, 1.39.3 or 1.40.0.
- Istio: 1.29.9, 1.30.6 or 1.31.2.
Envoy is only exposed when Brotli decompression is enabled, so also review your filter configuration. Istio ships Envoy as its sidecar, so upgrading the control plane is not enough: the sidecars in each workload must be restarted to pick up the new proxy.
How do you check .NET and other runtimes?
For .NET, the fixed versions are 8.0.33, 9.0.22, 10.0.14 and 11.0 RC3. Microsoft also advises removing the Brotli provider from request decompression or HttpClient setups where you do not need it.
For Go, the andybalholm/brotli port is fixed in v1.2.7. Search go.mod and go.sum files and rebuild any binary that uses an older version.
How do you check the operating system library?
Use your distribution's security tracker. Debian fixed bookworm in 1.0.9-2+deb12u1 and trixie in 1.1.0-2+deb13u1. As of October 26, Ubuntu's brotli and nodejs packages were still under evaluation, so check the Ubuntu CVE tracker before assuming you are covered.
What do you do after you find a vulnerable copy?
- Upgrade to the fixed version and regenerate lockfiles.
- Rebuild container images and any bundled binaries.
- Restart every process that loaded the old decoder. Running processes keep it in memory.
- Re-run the checks to confirm the fixed version is what actually runs.
Where an upgrade has to wait, reject Content-Encoding: br requests at the edge and turn off automatic Brotli decoding in HTTP clients. For background on why Brotli turns up in so many places, see what Brotli compression is and where it runs.