HTTP2Shell is a nickname for CVE-2026-111497, an out-of-bounds write in Google’s Brotli decoder. It is not a second flaw, and the bug is not in the HTTP/2 protocol. The CVE record lists Brotli 1.0.3 through 1.2.0 as affected and names 1.0.10, 1.1.1 and 1.2.1 as the fixed releases.
Many programs carry their own copy of that decoder, so the fix reaches each one separately. This post tracks published fixes and vendor status, including products still being checked. Rows reflect those pages on 24 October 2026 at 18:40 UTC, with later checks on 25, 28 and 29 October. Node.js details are in our Node2Shell analysis.
Last updated: 11 November 2026 (Debian forky, Red Hat Node.js, Ubuntu 16.04 to 20.04 and SUSE python-Brotli rows corrected; NVD and KEV status added). Earlier checks covered AWS, Git for Windows, Cisco, Ubuntu, Firefox and Thunderbird. We update this post when vendors publish fixes or product assessments.
Update 11 November: NVD lists the record as analyzed, with a CVSS 3.1 score of 9.8 from NIST next to Google’s 9.2 on CVSS 4.0. The KEV due date of 10 November has passed.
Is HTTP2Shell a New Vulnerability?
No. Node2Shell came first because Node.js shipped the first fix on 21 October. In our X capture, the first post using that name is from 21 October at 17:08 UTC.
“HTTP2Shell” spread after a security vendor’s post on X at 22:26 UTC on 23 October said the vulnerability reached beyond Node.js. Bun’s own post at 00:15 UTC on 24 October used the new name for its advisory.
Open the post on X (@bunjavascript, Bun, 24 October 2026, 00:15 UTC). Our capture holds 229 posts that use the name between 23 October at 16:54 UTC and 24 October at 18:34 UTC. The capture is partial, so read it as a floor.
The CVE record and the Node.js advisory do not use the name. GitHub’s advisory title still says “Node2Shell”. The name is also misleading about where the bug sits.
The Node.js advisory explains it: an invalid block switch was reported as a temporary need for more input instead of a permanent format error. The streaming decoder then kept appending input bytes to an eight-byte internal buffer.
So any code that decodes attacker-supplied Brotli data can reach the bug. Red Hat’s page gives two examples: HTTP content negotiated with Content-Encoding: br, and APIs such as the Node.js zlib module and fetch().
A third name, Broccoli2Shell, has been used on X since 24 October 2026. A Wiz Research blog post of 25 October 2026 uses it and lists Node2Shell and HTTP2Shell as other names for the same CVE. Wiz says its data show that 91% of cloud environments have resources vulnerable to CVE-2026-111497 and that 82% have publicly exposed Node.js instances.
Japan’s JPCERT/CC and IPA published advisory JVNVU#97400824 (in Japanese) on 26 October 2026. It lists HTTP2Shell and Node2Shell as names for CVE-2026-111497. The affected versions are Brotli 1.0.3 before 1.0.10, 1.1.0 before 1.1.1 and 1.2.0 before 1.2.1. It says several products that bundle the library are confirmed affected and advises updating.
Which Runtimes and Libraries Carry the Decoder?
Each row links to the vendor’s own page. A product is listed only where a page says it is affected or fixed.
| Stack and primary page | Fixed version | What the vendor page says |
|---|---|---|
| Brotli library (Google) Brotli v1.2.1 release |
1.0.10, 1.1.1, 1.2.1 | The release notes for all three list CVE-2026-111497 as a security fix. They appeared on 21 October at about 19:27 UTC. |
| Node.js Node.js security releases |
22.23.4, 24.22.1, 26.12.1 | Affects 22.x, 24.x and 26.x. End-of-life lines are always affected when a security release occurs. Fixes exist only for 22.x, 24.x and 26.x. |
| Git for Windows Git for Windows v2.56.0.windows.4 |
2.56.0.windows.4 | The 26 October security release upgrades the bundled Brotli component to 1.2.1 for CVE-2026-111497. |
| AWS Lambda: Node.js and .NET runtimes AWS bulletin 2026-155 |
Runtime rollout in progress | The managed Lambda service is not affected, but its Node.js and .NET runtimes are. Updated Node.js container base images are available; rebuild and redeploy container functions. AWS targets 30 October for Node.js ZIP automatic updates and 31 October for .NET ZIP updates. |
| AWS App Runner AWS service guidance |
Managed Node.js runtime deployed 26 October | Redeploy services last deployed before 26 October. If a service pins an older runtime, update that pin before redeploying. |
| AWS CodeBuild AWS service guidance |
Images in progress; target 30 October | AWS lists updated curated images as in progress. Once available, update pinned image versions or digests. Rebuild custom images from the updated base image. |
| Cisco Smart Software Manager On-Prem Cisco Node.js security advisory |
10-202610 | Cisco lists this fixed release in its 28 October 2026 advisory update. The advisory covers CVE-2026-111497 and three other Node.js flaws. Check Cisco’s product status before choosing fixes for other Cisco products. |
| Bun Bun advisory GHSA-663w-cv8g-jj2p |
1.4.4 | Bun 1.4.3 and earlier bundle an affected Brotli (1.4.3 carries 1.2.0). The fetch, node:zlib and DecompressionStream APIs pass data to the decoder. Executables built with bun build --compile stay affected until rebuilt. |
| Python: brotli and brotlicffi GitHub advisory GHSA-9v8h-qqgm-4m35 |
brotli 1.2.1, brotlicffi 1.2.1.0 | Vulnerable from 1.0.3 until the fixed version. GitHub rates the advisory critical. |
| .NET Microsoft .NET security advisory |
Runtime 8.0.33, 9.0.22, 10.0.14; .NET 11 Release Candidate 3 (11.0.0-rc.3.26522.148) | Released on 25 October 2026 as an out-of-band update, outside Microsoft’s regular monthly schedule. Microsoft says .NET Framework is not affected, and ASP.NET Core and HttpClient do not decompress Brotli by default. Apps are exposed when they enable Brotli decompression or pass untrusted data to BrotliStream or BrotliDecoder. Self-contained, NativeAOT and container deployments must be rebuilt; the steps are in our .NET Brotli update guide. |
| PowerShell and Visual Studio Microsoft Security Update Guide |
PowerShell 7.4.22, 7.5.13, 7.6.9; Visual Studio 2019 16.11.61, 2022 17.14.43, 2026 18.11.2 | Listed as fixed in the entry published on 25 October 2026. Microsoft rates the flaw Critical for Visual Studio and Important for PowerShell. |
| Ruby: brotli gem Project change, pull request 65 |
0.9.1 or later | The gem’s maintainers moved the bundled Brotli to 1.2.1 on 24 October. They also made the gem refuse a system library that lacks the fix. Version 0.9.1 reached RubyGems at 05:31 UTC. |
| PHP: Windows builds php.net announcement |
8.5.12-1, 8.4.27-1, 8.3.36-1, 8.2.35-1 | Announced on 26 October 2026, these rebuilds include Brotli 1.2.1. On Windows the vulnerable decoder can be reached through the cURL extension when automatic HTTP response decompression is enabled, which is off by default in cURL. Apps and HTTP client libraries can turn it on. The -1 suffix marks a package rebuild; the PHP versions are unchanged. |
| PHP: brotli extension Release 0.21.1, pull request 105 |
0.21.1 | Released on GitHub on 24 October 2026. Pull request 105 updates the bundled Brotli to 1.2.1 and names CVE-2026-111497. The PECL page still listed 0.21.0 when we checked on 26 October. |
| UEFITool Release A76, issue 492 |
A76 | Released on 24 October 2026. Its notes list Brotli 1.2.1. Issue 492 reports the bundled Brotli 1.2.0 as affected by CVE-2026-111497, and a reply says A76 fixes it. |
| Envoy proxy Envoy advisory GHSA-3wvj-j6qm-62mr |
1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12 | Rated critical, 9.2. Envoy says deployments with the Brotli decompressor configured are affected. Patch the Planet notes that 1.36 is unsupported, so use a supported branch. |
| Istio Istio security bulletin ISTIO-SECURITY-2026-007 |
1.31.2, 1.30.6, 1.29.9 | The bulletin lists CVE-2026-111497 as a fix in the Brotli library used by Envoy and says users who enable Brotli decompression, for example with an EnvoyFilter, should upgrade. Affected are 1.31.0 to 1.31.1, 1.30.0 to 1.30.5 and 1.29.0 to 1.29.8. Istio 1.29.9 is the final 1.29 release, because 1.29 reached end of life on 15 October 2026. |
| ngx_brotli (nginx module) Repository commit |
No release tag; repository updated to 1.2.1 | The module’s Brotli submodule moved to v1.2.1 on 22 October. Its README describes compressing responses and serving pre-compressed files. |
| ClickHouse Pull request 127419 |
Backported to 26.10, 26.9, 26.8 and 26.3; release contents not confirmed | The pull request, merged on 25 October 2026, bumps Brotli from 1.2.0 to 1.2.1, and its commit message names CVE-2026-111497. The newest release we found, v26.10.2.103 of 24 October, is older than the merge. Backports to the 26.10, 26.9, 26.8 and 26.3 branches merged on 25 and 26 October; ClickHouse has not said whether its 30 October builds include them. ClickHouse disclosed another flaw, CVE-2026-116366, on 30 October without saying whether it relates to Brotli; see our ClickHouse CVE-2026-116366 page. For self-managed servers, our ClickHouse exposure and patch plan lists the steps. |
| NanaZip Issue 1034, commit 3da1c6a |
No release yet; fixed on main | Issue 1034 reports the bundled Brotli 1.2.0 as affected by CVE-2026-111497. A project member answered on 24 October 2026 with the commit that updates Brotli to 1.2.1. The newest release, 7.0.1873.0 of 22 October, is older than the commit. |
| GraalJS (graal-nodejs) Commit 49dff6f |
No release yet; fixed on master | The commit of 20 October 2026 cherry-picks the upstream Brotli fix and carries the line “CVE-ID: CVE-2026-111497”. The newest release listed, graal-25.4.4.1.1 of 22 September, is older than the commit. |
| YDB Commit 343f6be |
No release yet; fixed on main | The commit of 23 October 2026 applies the upstream Brotli patch and is titled “fix brotli: CVE-2026-111497 fix”. The newest release listed, pre-release 26.3.1.16 of 21 September, is older than the commit. |
Two projects with their own decoder copy had no fix on 26 October. DuckDB’s issue 27660 reports that its vendored Brotli lacks the fix. Its pull request 27791, which ports the fix into the vendored 1.1.0 copy, is open. Apache Arrow’s issue 55166 reports bundled Brotli 1.0.9, and its pull request 55167, approved by a project member, is not yet merged.
Microsoft’s Security Update Guide entry for CVE-2026-111497, published on 25 October 2026, describes an out-of-bounds write in .NET that lets an unauthorized attacker elevate privileges over a network. It scores the flaw 8.1 on CVSS 3.1 with high attack complexity and rates it Critical for .NET. The entry marks the flaw as publicly disclosed and not exploited, and assesses exploitability as “Exploitation More Likely”.
How to read this table. The fixed version belongs to the product, not to the library inside it. Updating a system package does not fix a program that carries its own static copy, such as a Bun executable. Vulnerability intelligence software that follows vendor advisories and exploitation reports can flag when a product in this table ships its fix.
The ngx_brotli README describes no step that decodes data from users. That is our reading, not a vendor statement, and we have not tested it. Rebuild with the new submodule when you next ship.
OpenAI’s Patch the Planet page lists the same fixed releases for Node.js, Bun, Envoy, Istio and Brotli, reviewed on 23 October 2026. It advises checking the running binary or image against the vendor’s fixed release. It also says to restart or redeploy every service, worker, scheduled job and replica that uses the old build.
Until you can patch, the page advises disabling Brotli decoding of untrusted data and keeping gzip and deflate. For Envoy and Istio, it says to disable the Brotli decompressor filter for both requests and responses. Encoded data then passes onward, so protect any vulnerable downstream decoder. It says request-size limits and WAF rules alone do not cover every decoding path.
OpenAI’s Patch the Planet page also tells teams to look beyond servers. Electron-based desktop tools can carry several Brotli copies, so check both Chromium and Node.js. Check the decoder loaded by curl and libcurl, by Python and Java bindings and by other native libraries. Font decoders and data-file readers that use Brotli are in scope too.
A public lab of 27 October reports that a WordPress XML-RPC pingback can make libcurl fetch a Brotli response from an attacker’s server and decode it inside the PHP worker. In the author’s tests on PHP 8.3.36, a 23 MB stream crashed the worker and an 86-byte stream held it at full CPU. The author reports no code execution. We ran nothing and link nothing.
The table leaves out browsers and Electron-based desktop apps. The table lists only products with a vendor advisory, a fixed release or a published fix commit.
On 28 October Red Hat’s CVE page lists Firefox and Thunderbird 140.10.0 packages as fixed, in errata dated between 27 April and 20 May 2026. Browsers stay out of the table, which lists only fixes published by each product’s own vendor.
What Do the Azure and Cloudflare WAF Rules Cover?
Microsoft’s Azure WAF guidance of 23 October 2026 says rule 920450 in DRS 2.2 blocks the crafted requests it analysed by default, on Application Gateway and Front Door Premium. DRS 2.1 and CRS 3.2 or earlier need the upgrade, or a custom rule that blocks Content-Encoding: br. Microsoft advises starting that rule in log-only mode, because it can block legitimate Brotli request bodies.
Microsoft notes that Azure WAF inspects only inbound requests, so apps that fetch and decompress Brotli responses from external servers must be patched. It says the proof-of-concept payloads analysed so far are about 23 MB each. It adds that attackers may be able to craft smaller ones, so size limits are an extra layer, not a mitigation on their own. It lists Node.js and Python applications that bundle the vulnerable decoder among those affected.
Cloudflare’s emergency WAF release of 25 October 2026 announces two rules for CVE-2026-111497 in the Cloudflare Managed Ruleset. Both are set to be enabled by default, but their action is Log, so with the defaults they record matching requests and block nothing. Cloudflare says customers can review matches in analytics and set a blocking action if they want one.
The Brotli rule, “Brotli – Request Content-Encoding”, matches requests that declare Content-Encoding: br, including legitimate clients that send Brotli request bodies. It does not match Accept-Encoding: br or change Cloudflare’s Brotli response compression. The Next.js rule, “Next.js – Image Optimizer Path”, matches requests to /_next/image. Cloudflare warns that switching it to Block may stop optimized images from loading.
Cloudflare also warns that an existing ruleset-level override set to Block takes effect as soon as the rules deploy. Matching requests, including legitimate ones, may then be blocked. Check your overrides first. To test without blocking, set rule-specific overrides to Log and review the matches before you choose Block.
With the defaults, these rules only log. By our reading, neither inspects Brotli data that your own code fetches from other servers, as with Azure WAF. Patching stays the fix.
What Does Mitel Report for Its Products?
Mitel’s MISA-2026-0010 advisory, revision 1.0 of 28 October, separates affected products from those still under review. Its statements cover supported versions only. Products that have reached end of support are outside that assessment.
| Product or service | Mitel’s status | Response and limits |
|---|---|---|
| OpenScape Endpoint Management | Affected: V1 R2.5.1 and earlier. | Planned Update. The public table does not name a released fixed build. |
| Unify Phone and CloudLink | Mitel says cloud updates have been applied. | This statement names these two services; it is not a fix claim for all Mitel products. |
| Other Mitel products | The advisory has separate Investigating and Not Affected rows. | Check the exact product row. Investigating is not confirmation that a product is affected. |
For OpenScape Endpoint Management, Mitel rates the product-specific risk low when it is deployed according to Mitel’s recommended guidelines. This qualified assessment does not turn Planned Update into a released fix. It also does not replace the Brotli library’s severity or apply to other products.
MISA-2026-0009 says OpenScape Endpoint Management V1R2.5.1 corrects separate Node-RED issues. For Brotli, MISA-2026-0010 still lists that version as affected and names only a planned update.
Mitel points to KB000129034 for product guidance. Its public advisory gives no universal appliance upgrade or workaround. Keep the affected product’s status open until Mitel names a fix or changes the assessment.
Where Do the Linux Distributions Stand?
Distribution pages change by the day, so read the one for your release on the day you patch. This table began with checks on 24 October. Later checks covered Alpine, Debian and Ubuntu on 25 October, Red Hat and Ubuntu on 28 October, and the SUSE image rows below on 29 October. On 11 November we read the Debian, Alpine and Red Hat rows and the SUSE python-Brotli rows again, and Ubuntu’s status through OSV.
| Distribution and primary page | Status | Fixed package |
|---|---|---|
| Debian 12 (bookworm) Debian security tracker | Fixed | brotli 1.0.9-2+deb12u1 |
| Debian 13 (trixie) | Fixed | brotli 1.1.0-2+deb13u1 (DSA-6582-1) |
| Debian forky | Fixed | brotli 1.2.0-4.1 |
| Debian sid (unstable) | Fixed | brotli 1.2.0-4.1 |
| Alpine 3.21 Alpine security tracker | Fixed | brotli 1.1.1-r0 |
| Alpine 3.23 | Fixed | brotli 1.2.1-r0 |
| Alpine 3.24 and edge | Fixed | brotli 1.2.1-r0; nodejs-current 26.12.1-r0 (community repository) |
| openSUSE Tumbleweed SUSE CVE page | Fixed | brotli 1.2.1-1.1, nodejs24 24.22.1-1.1, ghostscript 10.08.0-3.1 |
| Red Hat Enterprise Linux 8, 9, 10 Red Hat CVE page | Fixed (brotli) | brotli 1.0.6-5.el8_10 (RHSA-2026:90501), 1.0.9-10.el9_8.1 (RHSA-2026:90495) and 1.1.0-8.el10_2.1 (RHSA-2026:90449), all dated 26 October. Red Hat lists nodejs 24 on RHEL 8 and 9 as fixed on 29 October (RHSA-2026:92376, RHSA-2026:92378) and nodejs 26 on RHEL 9 as affected. It lists nodejs 22 and the RHEL 10 Node.js packages as not affected. |
| Red Hat Enterprise Linux 10.0 Extended Update Support | Fixed in this support channel | brotli 1.1.0-6.el10_0.3 (RHSA-2026:90889); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 9.2 Update Services for SAP Solutions | Fixed in this support channel | brotli 1.0.9-6.el9_2.3 (RHSA-2026:90914); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 9.4 Update Services for SAP Solutions | Fixed in this support channel | brotli 1.0.9-6.el9_4.3 (RHSA-2026:90888); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 9.6 Extended Update Support | Fixed in this support channel | brotli 1.0.9-7.el9_6.3 (RHSA-2026:90890); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 8.8 Telecommunications Update Service and Update Services for SAP Solutions | Fixed in this support channel | brotli 1.0.6-4.el8_8.1 (RHSA-2026:90891); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 8.6 Advanced Mission Critical Update Support and Extended Update Support Long-Life Add-On | Fixed in this support channel | brotli 1.0.6-4.el8_6.1 (RHSA-2026:90893); Red Hat release date 27 October 2026. |
| Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update Support and Extended Update Support Long-Life Add-On | Fixed in this support channel | brotli 1.0.6-4.el8_4.1 (RHSA-2026:90892); Red Hat release date 27 October 2026. |
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | In QA; release not confirmed here | QA build: MozillaThunderbird 153.6.0-150400.13.14.1. Check the released-package list before closing a patch task. |
| Ubuntu 22.04 LTS to 26.10 Ubuntu CVE page | Fixed (brotli) | brotli 1.0.9-2ubuntu0.1 (22.04), 1.1.0-2ubuntu0.1 (24.04), 1.2.0-3ubuntu0.1 (26.04) and 1.2.0-4ubuntu0.1 (26.10). Ubuntu lists nodejs on 22.04 and later as not affected because it uses the system brotli. |
| Ubuntu 16.04, 18.04 and 20.04 | Fixed (brotli, Ubuntu Pro); nodejs (20.04): Vulnerable | brotli 1.0.3-1ubuntu1~16.04.2+esm1 (16.04), 1.0.3-1ubuntu1.3+esm1 (18.04) and 1.0.7-6ubuntu0.1+esm1 (20.04) through Ubuntu Pro, per Ubuntu’s data in OSV (UBUNTU-CVE-2026-111497, 30 October). nodejs on 20.04 uses its own bundled copy and has no fixed package. |
Red Hat rates the vulnerability Important, 8.1 on CVSS 3.1. Besides the three brotli errata above, it lists its Hardened Images as fixed, with advisory RHSA-2026:87420 of 21 October.
SUSE also lists Node.js packages in QA. Its QA list names nodejs22 >= 22.23.4-150700.3.21.1 and nodejs24 >= 24.22.1-150700.15.21.1 for SUSE Linux Enterprise Server 15 SP7. For Server 15 SP6-LTSS, the QA build is nodejs22 >= 22.23.4-150600.13.27.1.
These QA entries do not confirm that updates have shipped. Check the release status for your own product and support channel.
Which Red Hat Advisories (RHSA) Carry the Brotli Fix?
Red Hat’s CVE page lists three brotli errata for Red Hat Enterprise Linux 8, 9 and 10, all dated 26 October:
- RHSA-2026:90501 with brotli 1.0.6-5.el8_10.
- RHSA-2026:90495 with brotli 1.0.9-10.el9_8.1.
- RHSA-2026:90449 with brotli 1.1.0-8.el10_2.1.
The Extended Update Support and SAP channels have their own errata, dated 27 October. They are in the table above.
Which SUSE Images Now Have Listed Fixes?
Our 29 October check of the SUSE CVE page found four more rows with fixed builds. Match the row to the image you run. These rows do not mean that all SUSE products have a fix.
| Deployment | Fixed package minimum | Scope to check |
|---|---|---|
bci/bci-busybox:16.1 |
busybox >= 1.37.0-160000.3.1 |
This BCI container row. |
| Selected SL-Micro and SLE-Micro images. | less >= 633-3.1 |
The listed images include suse/sl-micro/6.0/baremetal-os-container:latest and suse/sl-micro/6.0/toolbox:latest. Check SUSE’s row for the full image list. |
| SUSE Multi-Linux Manager Proxy BYOS images for Azure, EC2 and GCE. | mgrpxy >= 5.1.27-slfo.1.1.1 |
The same minimum applies to mgrpxy-bash-completion. The proxy image builds below have their own versions. |
| SUSE Multi-Linux Manager Server images listed by SUSE. | mgradm >= 5.1.27-slfo.1.1.1 and mgrctl >= 5.1.27-slfo.1.1.1 |
The same minimum applies to their -bash-completion and -lang packages. Check the exact cloud image variant in SUSE’s row. |
The Manager package version is not an image build number. Each image name below starts with suse-multi-linux-manager-5.1-x86_64-. Add the listed ending to that prefix when you match a build in your inventory.
| Image name ending | Minimum fixed build |
|---|---|
proxy-httpd-image |
5.1.3.1-8.19.2 |
proxy-salt-broker-image |
5.1.3.1-9.17.3 |
proxy-squid-image, proxy-ssh-image, proxy-tftpd-image |
5.1.3.1-8.17.2 |
server-attestation-image |
5.1.3.1-8.19.2 |
server-hub-xmlrpc-api-image, server-image, server-migration-14-16-image |
5.1.3.1-8.17.2 |
server-postgresql-image |
5.1.3.1-6.19.1 |
server-saline-image |
5.1.3.1-9.17.3 |
SUSE’s CVE page, read on 11 November, lists python-Brotli as Released on SUSE Linux Enterprise Server 16.0 and its SAP applications variant. It still lists python-Brotli on openSUSE Leap 16.0 as Affected. Earlier checks showed In progress and then Affected for the Server 16.0 rows.
Check the exact package or image row before you close a patch task. Use the listed fixed build or a later fixed build in that same product line. Keep separate tasks open for rows still marked Affected or In progress.
Debian’s tracker notes that its nodejs package uses the system Brotli library and rates the nodejs entry unimportant. On Debian, the brotli package update is the one that fixes Node.js.
How Real Is the Risk of Remote Code Execution?
The vendors call it remote code execution. Public proof of concept code tells a more mixed story. We read repository descriptions and README files only, ran nothing and link none.
- Public proof of concept codeYesA GitHub search for CVE-2026-111497 returns 71 repositories on 28 October, up from 38 on 24 October. They range from version checkers to labs that report remote code execution on one Node.js build.28 Oct
- CISA KEV catalogYesCISA added the CVE on 27 October with a due date of 10 November. The file released 23 October at 19:30 UTC did not list it.27 Oct
- Exploitation in the wildYesCISA’s catalog lists the CVE as exploited, and since 27 October CISA’s data in the CVE record lists exploitation as “active”. Neither says who is exploiting it or how. On 23 October Red Hat said it knew of no public, reliable remote code execution proof of concept.27 Oct
- Talk on XYes229 posts in our capture use the name HTTP2Shell. Nine of them promote a token.24 Oct
CISA lists the flaw as “Google Brotli Unchecked Return Value Vulnerability” and notes that it sits in an open-source component other products can embed. Its required action is to apply vendor mitigations, or stop using the product if none exist.
The due date of 10 November binds US federal civilian agencies under BOD 26-04. CISA says organizations should use the catalog as an input to their vulnerability management priorities. The listing does not say who is exploiting the flaw, against which software or how. It does not settle the question of code execution discussed next.
Two READMEs report remote code execution against lab apps on one exact build, the official Node.js 24.22.0 for Linux x86-64. One covers an Express 5.3.0 profile, recorded on 22 and 23 October. The other repository was created on 24 October and had 85 stars on 28 October. Both authors say the fixed 24.22.1 rejects the request.
Both call the result probabilistic. It needs addresses taken from that exact binary, and a miss crashes the worker. Other READMEs report crashes only, and two argue that code execution cannot be reached. These are authors’ claims, not findings by Node.js or Google.
A crash alone can take down a service that decodes Brotli from users. The patch order below does not depend on who is right about code execution.
What Should You Patch First?
In our view, CISA’s listing of 27 October makes the first group below urgent. The order itself does not change.
- Servers that decode Brotli request bodies from the internet. That means Express 5 apps on Node.js 22, 24 or 26, and Envoy with the decompressor configured. An attacker only has to send a request. Red Hat advises not accepting or auto-decoding
Content-Encoding: brfrom untrusted sources where the application allows it. - Clients that fetch from servers you do not control. Bun’s
fetchsendsbrin its default Accept-Encoding header, and Bun says a malicious server can then supply the data. Crawlers, webhook senders and integrations fall in this group. In Bun,decompress: falseturns decoding off for one request. - Build servers and developer machines that run Node.js, Bun or Python and fetch third-party content.
- Unsupported runtimes. Node.js 20 and older have no published fix. Plan a move to a supported line and treat them as exposed until then.
- Linux hosts. Apply the package marked fixed in the table above. Where your distribution lists none, read its page again each day.
How Do You Find Brotli in Your Own Estate?
The decoder hides in three places: a system package, a language package, and a private copy inside a product or image. Check all three.
- System packagesRun dpkg -l ‘brotli*’ on Debian and Ubuntu, apk info brotli on Alpine, and rpm -q brotli on Red Hat and SUSE. Compare with the table.
- Language packagesRun pip show brotli brotlicffi and gem list brotli. A package can be installed only as a dependency of an HTTP client.
- Container imagesRead the version inside each image, not the tag. Rebuild on a patched base and redeploy.
- Software bill of materialsSearch it for brotli, libbrotlidec and the products in the table. A bill made before 21 October still lists the old versions.
- Copies inside productsBun executables built with bun build –compile embed the runtime. Ask vendors which Brotli version their products decode web traffic with.
- Vendored sourceSearch the copy for BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH. The fix adds this error code, and the Ruby gem’s change uses it as its test.
A compiled binary may not show that name, so a miss there proves nothing. For the code paths, split the search in two.
- Client side: code that fetches from other servers and accepts
brinAccept-Encoding. In Node.js this includesfetch(). Our Node.js analysis covers it in more detail. - Server side: body parsers that decode
Content-Encoding: brrequests, and gateways with a Brotli decompressor. Express 5 does this by default for JSON bodies.
For Node.js versions, Brandefense Atlas has a free Node.js version checker. Paste the output of node --version or an exact Docker tag, and it compares the version with the Node.js advisory. It never contacts your server.
Is the $HTTP2SHELL Token Connected to the Flaw?
No. About 40 minutes after the post that spread the name, crypto promotion accounts began posting a token called $HTTP2SHELL. Our capture holds nine such posts from seven accounts, all between 23:08 and 23:27 UTC on 23 October.
A Telegram channel run by a trading bot repeated the listing. None of this is verified, and nothing links the token to the flaw or its fix.
Treat any token, “scanner” or “patch tool” that carries the name as untrusted. Four GitHub projects named http2shell are older than the flaw, the oldest from 2017, and three of them describe HTTP-to-shell tools; none is about Brotli. A repository with the name is not a fix.
Take fixes only from the vendor pages in the tables above. We link no token and print no contract address.
For the short fact sheet, see our CVE-2026-111497 vulnerability page. The same week brought the PHP flaws, covered in our PHP2Shell analysis. For the other JavaScript platform fixes of that window, read our Next.js and Node.js security updates guide.
Frequently Asked Questions
Is HTTP2Shell a different flaw from Node2Shell?
No. Both names refer to CVE-2026-111497, a flaw in Google's Brotli decoder. The official records we read use that one CVE.
Does HTTP2Shell affect HTTP/2?
The CVE record places the bug in the Brotli decoder file c/dec/decode.c and does not mention HTTP/2. Any code that decodes attacker-controlled Brotli data can reach it, including HTTP content sent with Content-Encoding: br.
Which Brotli versions are safe?
Brotli 1.0.10, 1.1.1 and 1.2.1 or later. The CVE record lists 1.0.3 through 1.2.0 as affected. Products that bundle their own copy need their own release, so check the table.
How do I check a Python app?
Run pip show brotli brotlicffi. GitHub's advisory lists versions before 1.2.1 (brotli) and 1.2.1.0 (brotlicffi) as vulnerable. The package may be installed as a dependency of an HTTP client.
Is HTTP2Shell on the CISA KEV list?
Yes. CISA added CVE-2026-111497 to its Known Exploited Vulnerabilities catalog on 27 October 2026, with a due date of 10 November. The entry does not say who is exploiting it or how. Update every Brotli decoder that reads untrusted input first.
Sources
- CVE record for CVE-2026-111497 (Google CNA)
- Node.js October 2026 security releases
- Brotli v1.2.1 release notes (Google)
- GitHub advisory GHSA-9v8h-qqgm-4m35 (PyPI brotli and brotlicffi)
- Bun advisory GHSA-663w-cv8g-jj2p
- Envoy advisory GHSA-3wvj-j6qm-62mr
- CISA, Known Exploited Vulnerabilities Catalog (CVE-2026-111497 added 27 October 2026)
- Red Hat CVE page, CVE-2026-111497
