Web Exploitation · Term

What is HTTP2Shell?

The Brotli bug behind Node2Shell is not a Node.js bug. It lives in a C library that Python packages and other HTTP stacks bundle too. HTTP2Shell is the name for that wider exposure.

TL;DR

HTTP2Shell is a name some researchers use for CVE-2026-111497, the Brotli decoder out-of-bounds write also known as Node2Shell, when it reaches HTTP stacks outside Node.js. Any client, server or proxy that decodes Content-Encoding: br with Google Brotli 1.0.3 to 1.2.0 is exposed. In Python, the Brotli package up to 1.2.0 and brotlicffi up to 1.2.0.2 bundle the vulnerable decoder; requests, urllib3, httpx and aiohttp use them automatically when installed. Fixed in Brotli 1.2.1 and brotlicffi 1.2.1.0.

By Pranav Khune, Lead Pentester, SecureLayer7Updated

What HTTP2Shell is

HTTP2Shell is not a separate CVE. It is the same Brotli decoder bug tracked as CVE-2026-111497, described from the point of view of HTTP in general rather than Node.js in particular. The name is far less established than Node2Shell; you will mostly see it in dependency-security write-ups.

The flaw is in Google's Brotli C library, versions 1.0.3 to 1.2.0, in the streaming decoder: a malformed block switch is treated as "need more input" instead of a format error, and the decoder keeps writing past a small internal buffer. Any software that embeds that library and decodes untrusted br data inherits the bug, whatever language sits on top. The name does not refer to the HTTP/2 protocol; HTTP/1.1 and HTTP/2 are equally affected because the bug is in body decoding.

Where the exposure shows up

The bug only fires when attacker-controlled Brotli data is decoded, so the question is which of your components decode br:

  • Python HTTP clients. requests and urllib3, httpx and aiohttp advertise br in Accept-Encoding and decode Brotli responses automatically when the Brotli or brotlicffi package is installed. A scraper, webhook consumer or link-preview service fetching attacker-chosen URLs is exposed.
  • Python servers and middleware that inflate compressed request bodies.
  • Proxies, gateways and CDN-style services that decompress traffic to inspect or rewrite it.
  • Node.js, Bun and Electron, covered on the Node2Shell page.

A gap worth knowing about: as of October 23, 2026, the Python package fixes had no advisory database entry, so dependency scanners may not flag the vulnerable versions. Check versions by hand.

How to check if you are exposed

Look for the decoder in every environment that handles untrusted HTTP:

  • Python: pip show brotli brotlicffi, or pip list | grep -i brotli. Vulnerable if Brotli is 1.2.0 or older, or brotlicffi is 1.2.0.2 or older.
  • Lock files: search requirements.txt, poetry.lock and uv.lock for brotli and brotlicffi; they often arrive as an optional extra such as urllib3[brotli] or aiohttp[speedups].
  • System packages: OS-level libbrotli used by native software. Check your distribution's advisory for the patched package.
  • Containers: scan images, not just source repositories. Wheels bundle their own compiled copy of the decoder.

How to fix and mitigate

Upgrade the decoder wherever it lives:

  • Python: Brotli 1.2.1 or later, brotlicffi 1.2.1.0 or later, then rebuild images.
  • Native and system libraries: Brotli 1.0.10, 1.1.1 or 1.2.1 or later, depending on your branch.
  • Node.js: 22.23.4, 24.22.1 or 26.12.1 or later.

If you cannot patch a component yet, stop it from decoding untrusted Brotli: remove the Brotli package so clients fall back to gzip, strip br from outbound Accept-Encoding headers, and reject inbound Content-Encoding: br at the edge. These reduce exposure; only the library upgrade fixes the bug.

References

  1. [1]NVD: CVE-2026-111497(NIST NVD)
  2. [2]Google Brotli releases(Google)
  3. [3]PyPI: brotlicffi(PyPI)
  4. [4]Node.js October 2026 security releases(Node.js)
  5. [5]MITRE CWE-787: Out-of-bounds Write(MITRE)
Related terms
Related service
Web & API Penetration Testing
Manual, exploit-grade testing of your web apps and APIs, mapped to OWASP, with fixes a developer can ship.
Web & API testing

Common questions

HTTP2Shell, asked often

Want your servers and dependencies tested for flaws like this?

Test your application

Find the path to a shell before an attacker does.

Our testers check what your servers actually run, prove whether a named vulnerability is exploitable in your environment, and hand your developers a reproducible finding and a fix.

See web application penetration testing30-min scoping call, fixed-price proposal in 48 hours.