HTTP2Shell (Node2Shell, CVE-2026-111497): the Brotli flaw OpenAI's Codex Security team reported, what's affected and which versions fix it

HTTP2Shell, first called Node2Shell, is CVE-2026-111497: an out-of-bounds write in Google's Brotli decoder that Node.js credits to OpenAI Codex Security. Brotli 1.2.1, 1.1.1 and 1.0.10 fix it, as do Node.js 22.23.4, 24.22.1 and 26.12.1, Python's Brotli 1.2.1 and Envoy 1.40.0. Here's what else is affected and what to patch.

Seven glass tiles with check badges standing on one lit slab, the shared library fix, on a mint gradient, titled Brotli 1.2.1

What’s new, in 20 seconds

  1. CVE-2026-111497 is an out-of-bounds write in Google's Brotli decoder, versions 1.0.3 through 1.2.0. Brotli released fixes in 1.2.1, 1.1.1 and 1.0.10, and Node.js shipped 22.23.4, 24.22.1 and 26.12.1 on October 21, 2026, crediting 'OpenAI Codex Security' researchers Khai Tran and Sylvie Mayer.
  2. The CVE record scores it CVSS v4.0 9.2, critical; Node.js rates it high. Python's Brotli 1.2.1 and brotlicffi 1.2.1.0 followed on October 22, Bun 1.4.4 the same day, and Envoy 1.40.0, 1.39.3, 1.38.6 and 1.37.8 on October 23. Istio had shipped Envoy's fix on October 15, and Microsoft patched .NET on October 25.
  3. Aikido named the wider problem 'HTTP2Shell' on October 23 because any HTTP client or server that decodes untrusted Brotli data can be exposed. Imperva reported lab code execution on an unpatched Node.js 24.22.0 image on October 22. CISA hadn't added the CVE to its Known Exploited Vulnerabilities catalog by October 26, and its October 23 assessment in the CVE record lists exploitation as 'none'.
Contents

HTTP2Shell is the name security firm Aikido gave on October 23, 2026, to CVE-2026-111497, a memory-corruption flaw in Google's Brotli decompression library that was first disclosed two days earlier as "Node2Shell." Node.js credits the report to OpenAI's Codex Security team. Because Brotli is bundled into runtimes, proxies and HTTP libraries, the fix has to arrive separately in each one. This security story lists what's affected and what to patch. It's the second critical, AI-found bug in widely used web software in one week, after PHP2Shell.

This story is based on the Node.js October 2026 security release, Google Brotli's release notes, the CVE record and its GitHub advisory, CISA's Known Exploited Vulnerabilities catalog, Envoy's, Istio's, Bun's and Microsoft's .NET advisories, the PyPI pages for Brotli and brotlicffi, and research posts by Aikido and Imperva, checked October 26, 2026.

The short version

  • What: an out-of-bounds write in the Brotli decoder, in Brotli 1.0.3 through 1.2.0. Crafted compressed data can crash a process, leak memory or, potentially, run code.
  • Fixed in: Brotli 1.2.1, 1.1.1 and 1.0.10; Node.js 22.23.4, 24.22.1 and 26.12.1; and downstream releases listed below.
  • Severity: CVSS v4.0 9.2 (critical) in the CVE record; "High" from Node.js.
  • Found by: the CVE record, filed by Google, and Node.js credit "OpenAI Codex Security" (Khai Tran and Sylvie Mayer); Envoy credits "OpenAI Security Research."
  • Exploited? Not in CISA's Known Exploited Vulnerabilities catalog as of October 26, 2026.

What is HTTP2Shell?

The GitHub advisory, which mirrors the CVE record, describes a buffer overflow in Brotli's decoder (c/dec/decode.c) that lets "a remote unauthenticated attacker" use a crafted Brotli stream to corrupt memory, disclose memory, cause a denial of service "or potentially execute arbitrary code." Node.js disclosed it first, on October 21, so early coverage called it Node2Shell. On October 23, Aikido renamed its tracking "HTTP2Shell," saying the flaw affects "many libraries and applications using HTTP."

The flaw sits in a decompressor, so only code that decodes Brotli is at risk. Aikido notes that Apache's standard mod_brotli compresses but doesn't decode, and that Apache and Nginx don't decode Brotli by default.

Which versions fix CVE-2026-111497?

ComponentFixed versionsReleasedSource
Google Brotli (C library)1.2.1; 1.1.1 and 1.0.10 for older linesOctober 21, 2026Brotli release notes
Node.js22.23.4, 24.22.1, 26.12.1October 21, 2026Node.js security release
Python Brotli (PyPI)1.2.1October 22, 2026PyPI
Python brotlicffi (PyPI)1.2.1.0 (bundles libbrotli 1.2.1)October 22, 2026PyPI changelog
Bun1.4.4 (fixes 1.0.21 through 1.4.3; advisory rates it high)October 22, 2026 (advisory October 23)Bun release notes; GHSA-663w-cv8g-jj2p
Envoy1.40.0, 1.39.3, 1.38.6, 1.37.8 (1.36.12 also patched)October 23, 2026 (advisory)Envoy GHSA-3wvj-j6qm-62mr
Istio1.31.2, 1.30.6, 1.29.9October 15, 2026ISTIO-SECURITY-2026-007
Microsoft .NETRuntime 8.0.33, 9.0.22, 10.0.14October 25, 2026.NET security advisory

Table 1The library fix landed on October 21; each runtime or proxy then shipped its own release, and Istio's came first. Source: the project pages listed, checked October 26, 2026.

Last verified: October 26, 2026

Bun's advisory adds that executables built with bun build --compile on an affected version stay vulnerable until they're rebuilt with 1.4.4.

Microsoft's .NET advisory of October 25 rates the flaw High (CVSS 3.1 score 8.1) in .NET and fixes it in runtimes 8.0.33, 9.0.22 and 10.0.14. ASP.NET Core and HttpClient don't decompress Brotli by default, so only apps that turn on Brotli decompression or call APIs such as BrotliStream directly are exposed. .NET Framework isn't affected. Self-contained and NativeAOT apps have to be rebuilt and redeployed, because updating the machine's shared runtime doesn't replace a decoder already built into them.

Node.js 25.x, 23.x, 20.x and older lines are end-of-life and get no fix, according to Aikido. Linux distributions may ship the fix as a backported brotli package without changing the upstream version number, and distribution builds of Node.js can use that system library, so check your vendor's advisory rather than the version string alone.

How do I know if my app is exposed?

Look for places where untrusted Brotli data gets decoded. Aikido's and Imperva's research name the common Node.js paths:

  • Incoming requests: Express 5 and body-parser 2.x decompress request bodies sent with Content-Encoding: br. A bare node:http server doesn't.
  • Outgoing requests: built-in fetch() decompresses Brotli responses automatically, so a webhook target or any user-supplied URL could send one.
  • Direct use: passing untrusted input to node:zlib's Brotli functions.

In Python, exposure is mostly indirect: Aikido says urllib3, requests, httpx (with its Brotli extra), aiohttp and Scrapy use Brotli or brotlicffi automatically when installed. Aikido warned on October 23 that advisory databases didn't yet map the CVE to either PyPI package. That has changed: by October 25, the reviewed GitHub advisory and the PyPA advisory database list Brotli (fixed in 1.2.1) and brotlicffi (fixed in 1.2.1.0), so scanners that use them can now flag older versions. For Envoy, the advisory says deployments are affected if they have the Brotli decompressor configured. Istio says its users are affected if they enable Brotli decompression, for example through an EnvoyFilter.

How do I patch or mitigate HTTP2Shell?

Upgrade every component that bundles Brotli, rebuild images and wheels, regenerate lockfiles and restart services. Node.js lists no workaround; Imperva advises checking the Node.js version inside each deployed image.

If you can't upgrade at once, Aikido suggests:

  • rejecting inbound requests whose Content-Encoding includes br at a proxy, load balancer or middleware, before any decoder runs;
  • removing br from outgoing Accept-Encoding headers and refusing to decode Brotli responses, because a malicious server can send Brotli regardless of what the client asks for;
  • in Python, uninstalling Brotli or brotlicffi where they're optional, which may break responses from servers that send Brotli anyway.

Imperva and, according to Aikido, Vercel have added firewall rules, but those don't cover responses your own code fetches.

Is HTTP2Shell being exploited?

There were no confirmed reports by October 26. CISA's Known Exploited Vulnerabilities catalog doesn't list CVE-2026-111497 (catalog version of October 23), and CISA's October 23 assessment, added to the CVE record, rates exploitation as "none." Aikido cites The Hacker News as saying no in-the-wild exploitation had been reported as of October 22. On the same day, Imperva reported that its researchers achieved code execution against the official Node.js 24.22.0 Linux arm64 image through fetch() and through Express 5 or body-parser 2, that it "took multiple attempts in our setup," and that Node.js 24.22.1 rejected the same input. Aikido says the first public proof of concept worked only against a deliberately weakened build.

How did OpenAI find it, and why did the fix take so long to ship?

Node.js credits the report to "OpenAI Codex Security," naming Khai Tran and Sylvie Mayer; the CVE record Google filed names the same team as finder, and Envoy's advisory credits "OpenAI Security Research." None of them says when the report arrived or whether a model found the bug on its own. OpenAI's Patch the Planet initiative, whose disclosure process is examined in our Patch the Planet analysis, has published a Brotli advisory page that, by its own description, covers affected software, fixed releases and how to disable Brotli decoding while patching.

The timing is the odd part. Aikido says the root cause was fixed in Brotli's source in February 2026 but wasn't treated as a security issue, so no release carried the fix until October 21. The upstream commit, "Detect and report invalid stream earlier," changes the decoder's block-switch error handling. Istio shipped Envoy's fix in its October 15 patch releases, six days before public disclosure, which suggests some downstream projects had advance notice.

CVE-2026-111497 from upstream commit to downstream fixes, 2026

  1. Feb.Root-cause fix committed to Brotli source, not labeled as securityAikido; GitHubReported
  2. Oct. 15Istio 1.31.2, 1.30.6, 1.29.9 ship Envoy's Brotli fixIstioConfirmed
  3. Oct. 21Brotli 1.2.1, 1.1.1, 1.0.10 and Node.js security releasesBrotli; Node.jsConfirmed
  4. Oct. 22Python Brotli 1.2.1, brotlicffi 1.2.1.0 and Bun 1.4.4PyPI; BunConfirmed
  5. Oct. 22Imperva reports lab code execution on Node.js 24.22.0ImpervaReported
  6. Oct. 23Envoy advisory; Aikido renames it HTTP2ShellEnvoy; AikidoConfirmed
  • Confirmed
  • Reported
Figure 1The bug was fixed in source months before any release carried the fix; downstream projects then patched one at a time. Source: Istio, Google Brotli, Node.js, PyPI, Bun, Envoy, Imperva, Aikido, as of October 26, 2026.

AI-assisted bug reports are arriving faster than many projects can handle, as our Linux kernel disclosure story shows; Anthropic's OSS Scanner is another lab's attempt to find such bugs first.

What's confirmed, reported and uncertain

  • Confirmed (projects): the affected Brotli range, every fixed version in the table, and the OpenAI credits from Node.js and Envoy.
  • Confirmed (CVE record): CVSS v4.0 9.2, the impact description and the "OpenAI Codex Security" finder credit; CISA's "none" exploitation rating as of October 23, and no KEV listing as of October 26.
  • Reported: Imperva's lab exploitation; the February source fix and "not treated as security" account (Aikido); no in-the-wild exploitation as of October 22 (The Hacker News, via Aikido); Python library exposure paths (Aikido).
  • Uncertain: when OpenAI reported the bug, whether a model found it alone, which other products embed vulnerable Brotli builds, and whether exploitation is under way.

About this story

Based on the sources linked below. How we report: Editorial standards.

Written byShajanthan YogeswaranFounder & Editor-in-ChiefMore from Shajanthan
Was this useful?

Read next

Comments (0)

More on Security

View all
Agents · NewsThe Week in AI #5: AI-found PHP bugs hit the wild, Anthropic's IPO numbers leak, and Meta's $825 billion in commitmentsAI news for October 19–25, 2026: PHP2Shell and OpenAI's Patch the Planet framework, Anthropic's reported $80.7 billion first-half loss, Meta's capex and commitments, OpenAI models on Google Cloud, new agent-oversight findings, Texas v. OpenAI and DeepSeek's reported $15 billion round.·7 min read
Agents · AnalysisAI-found vulnerabilities and maintainers: Sam Altman says we can't 'just patch all the bugs,' Cloudflare's CEO expects weekly alarms, and the PHP Foundation says it's under-fundedAI-found vulnerabilities are arriving faster than maintainers can fix them. What Sam Altman, Cloudflare's Matthew Prince and the PHP Foundation's Elizabeth Barron said between October 21 and 24, 2026, what the numbers show, and who funds the people who write the patches.·9 min read
Hardware · NewsUnitree Go2 vulnerability CVE-2026-115995: a critical flaw in the robot dog's AI chat module, which firmware is affected, and the 1.1.11.5 fixThe Unitree Go2 vulnerability CVE-2026-115995, published October 24, 2026, is a command injection flaw in the robot dog's AI voice-chat service, rated critical. The CVE record lists Go2 firmware 1.1.11.0 to 1.1.11.4 as affected and 1.1.11.5 as fixed. What's known, what isn't, and what owners can check.·5 min read
Developers · GuideClaude auto mode is now the default: what it does, how it differs from accept edits and bypass permissions, and how to turn it offClaude auto mode has been Claude Code's default since August 14, 2026, and on October 22 Anthropic said Claude's web, desktop and mobile apps will follow. How the classifier works, how it compares with accept edits and bypass permissions, and how to switch back to manual.·9 min read
The Week in AI · every Friday

Get the cluster, not just the headline.

The week’s biggest stories in AI and tech, what they mean, and what to read next.

Free. One email a week. Unsubscribe in one click.