Broccoli2Shell, titled Node2Shell by GitHub: one Brotli flaw, checked per stack
Broccoli2Shell is the name in common use for an out-of-bounds write in the Brotli decoder that reaches Node.js, Python packages and other software that bundles it. GitHub's advisory titles the same flaw Node2Shell. Each statement below links to its official source, with the quoted text one click away. The commands only print versions on your own machine.
Facts last checked against the stored sources on
What happened
-
GitHub's advisory GHSA-9v8h-qqgm-4m35 titles the Brotli decoder flaw with the name Node2Shell and says it also affects the PyPI Brotli package. Broccoli2Shell is the name in common use for it; the vendor advisories below describe it as a flaw in the Brotli decoder rather than by name.
Source: GitHub Advisory Database
Quoted text
Brotli: Out-of-bounds write in the Brotli decoder ("Node2Shell") also affects the PyPI Brotli package
GHSA ID GHSA-9v8h-qqgm-4m35
-
The CVE record by Google describes a buffer overflow in the Brotli decoder, reachable with a crafted Brotli-compressed stream. It lists Google Brotli as affected from 1.0.3 up to but not including 1.0.10, from 1.1.0 up to but not including 1.1.1, and from 1.2.0 up to but not including 1.2.1.
Source: CVE Program (record by Google) · Event page: CVE-2026-111497
Quoted text
A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli versions 1.0.3 through 1.2.0 on all platforms allows a remote unauthenticated attacker to corrupt adjacent decoder state memory, disclose sensitive memory contents, cause a denial of service, or potentially execute arbitrary code using a crafted Brotli-compressed stream.
{ "status": "affected", "version": "1.0.3", "lessThan": "1.0.10", "versionType": "semver" }, { "status": "affected", "version": "1.1.0", "lessThan": "1.1.1", "versionType": "semver" }, { "status": "affected", "version": "1.2.0", "lessThan": "1.2.1", "versionType": "semver" }
Node.js
The Node.js advisory concerns the Brotli decoder bundled with Node.js, so the Node.js version is the one to check, not a system library.
-
Node.js lists the Brotli decoder out-of-bounds write (CVE-2026-111497) as affecting the 26.x, 24.x and 22.x release lines. The same security release page lists the versions v22.23.4, v24.22.1 and v26.12.1 under its downloads and release details.
Source: Node.js
Quoted text
Node.js Brotli decoder out-of-bounds write permits remote code execution (CVE-2026-111497) - (high) A flaw in the Brotli decoder bundled with Node.js allows malformed compressed input to write past the end of an internal decoder buffer. An invalid block switch was reported as a temporary need for more input instead of a permanent format error, so the streaming decoder kept appending input bytes to an eight-byte internal buffer. An attacker who can supply Brotli data that an application decompresses with node:zlib can corrupt process memory, which can lead to a crash, disclosure of process memory, or remote code execution. This vulnerability affects Node.js 26.x , 24.x , and 22.x .
Downloads and release details Node.js v22.23.4 Node.js v24.22.1 Node.js v26.12.1
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Node.js
Prints the version of the Node.js binary on this machine. Compare it with the fixed release of your release line above.
node -v Tool documentation: Node.js documentation
Quoted text
-v , --version # Added in: v0.1.3 Print node's version. Python (brotli and brotlicffi)
The GitHub advisory lists the two PyPI packages below. Check them in each environment, including virtual environments and container images.
-
GitHub's advisory lists the PyPI packages brotli and brotlicffi as affected from 1.0.3, and as fixed in 1.2.1 and 1.2.1.0.
Source: GitHub Advisory Database
Quoted text
pip brotli ( pip ) Affected versions >= 1.0.3, < 1.2.1 Patched versions 1.2.1 pip brotlicffi ( pip ) >= 1.0.3, < 1.2.1.0 1.2.1.0
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Python (pip)
Prints the installed version of each package, or nothing for a package that is not installed. Run it with the interpreter of each environment.
pip show brotli brotlicffi Tool documentation: pip documentation
Quoted text
Show information about one or more installed packages. Go
This page cites no official Go source. The command lists the Brotli modules in your build list so you can read their versions; programs that wrap the C library or vendor its source need the version of that copy checked as well.
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Go modules
Lists the modules in the build list of the current module without letting the go command change go.mod, and keeps the lines that mention Brotli.
go list -mod=readonly -m all | grep -i brotli Tool documentation: Go modules reference
Quoted text
The build list may be inspected with the command go list -m all .-mod=readonly tells the go command to ignore the vendor directory and to report an error if go.mod needs to be updated. libbrotli and the brotli tool
Programs that link a system Brotli library use the version your distribution installs. Also check any copy bundled or statically linked into other programs; the event page lists the distribution tables.
-
Google's release v1.2.1 carries the security note for CVE-2026-111497.
Source: Google Brotli releases
Quoted text
CVE-2026-111497 : out-of-bounds write permits remote code execution
v1.2.1
-
Google's release v1.1.1 carries the security note for CVE-2026-111497.
Source: Google Brotli releases
Quoted text
CVE-2026-111497 : out-of-bounds write permits remote code execution
v1.1.1
-
Google's release v1.0.10 carries the security note for CVE-2026-111497.
Source: Google Brotli releases
Quoted text
CVE-2026-111497 : out-of-bounds write permits remote code execution
v1.0.10
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
brotli command line tool
Prints the version of the brotli tool installed on this machine. A bundled copy inside another program is not visible this way.
brotli --version Tool documentation: Debian manual pages
Quoted text
-V , --version : display version and exit Bun
-
Bun's advisory lists Bun as affected from 1.0.21 and fixed in 1.4.4, which updates the bundled Brotli to 1.2.1.
Source: Bun (GitHub advisory)
Quoted text
Affected versions >= 1.0.21, < 1.4.4 Patched versions 1.4.4
Bun 1.4.4 updates brotli to 1.2.1, which contains the fix.
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Bun
Prints the version of the Bun binary on this machine. If you ship executables built with Bun, check which Bun version built them.
bun --version Tool documentation: Bun documentation
Quoted text
After installation, verify with bun --version and bun --revision . Envoy
-
Envoy's advisory names v1.39.2, v1.38.5, v1.37.7 and v1.36.11 as the vulnerable releases, and lists v1.40.0, v1.39.3, v1.38.6, v1.37.8 and v1.36.12 as the patched releases.
Source: Envoy (GitHub advisory)
Quoted text
Affected versions v1.39.2, v1.38.5, v1.37.7, v1.36.11 Patched versions v1.40.0, v1.39.3, v1.38.6, v1.37.8, v1.36.12
Envoy versions v1.39.2, v1.38.5, v1.37.7 and v1.36.11 are vulnerable to a buffer overflow vulnerability in the Brotli decoder.
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Envoy
Prints the Envoy version and build information of the binary you run.
envoy --version Tool documentation: Envoy documentation
Quoted text
--version (optional) This flag is used to display Envoy version and build information Istio
-
Istio's security bulletin lists the affected releases 1.31.0 to 1.31.1, 1.30.0 to 1.30.5 and 1.29.0 to 1.29.8, and notes that the flaw sits in the Brotli library used by Envoy. It tells users who enable Brotli decompression, for example with an EnvoyFilter, to upgrade.
Source: Istio
Quoted text
Affected Releases 1.31.0 to 1.31.1 1.30.0 to 1.30.5 1.29.0 to 1.29.8
CVE-2026-111497 : Fixed a vulnerability in the Brotli compression library used by Envoy. Users who enable Brotli decompression, for example with an EnvoyFilter , should upgrade.
-
Istio's release notes for 1.31.2 list the fix for CVE-2026-111497 in the Brotli library used by Envoy.
Source: Istio release notes
Quoted text
Announcing Istio 1.31.2 Istio 1.31.2 patch release.
CVE-2026-111497 : Fixed a vulnerability in the Brotli compression library used by Envoy.
-
Istio's release notes for 1.30.6 list the fix for CVE-2026-111497 in the Brotli library used by Envoy.
Source: Istio release notes
Quoted text
Announcing Istio 1.30.6 Istio 1.30.6 patch release.
CVE-2026-111497 : Fixed a vulnerability in the Brotli compression library used by Envoy.
-
Istio's release notes for 1.29.9 list the fix for CVE-2026-111497 in the Brotli library used by Envoy.
Source: Istio release notes
Quoted text
Announcing Istio 1.29.9 Istio 1.29.9 patch release.
CVE-2026-111497 : Fixed a vulnerability in the Brotli compression library used by Envoy.
These commands run on your own machine and only read what is installed there: versions, issuers, validity dates and trust-store entries. PatchBell does not scan your systems.
Istio
Prints build version information for the istioctl client and, when it can reach the cluster, the control plane.
istioctl version Tool documentation: Istio documentation
Quoted text
istioctl version Prints out build version information