Skip to main content

Cve/http2shell

@swamp/cve/http2shellv2026.10.25.1· AGPL-3.0-or-later· 1d agoBEHAVIORSREPORTSACCEPTED WARNINGS
01README

Finds and fixes Brotli decoders exposed to CVE-2026-111497 ("Node2Shell" / "HTTP2Shell", CVSS 4.0 9.2, GHSA-9v8h-qqgm-4m35), the out-of-bounds write in Google's C Brotli decoder 1.0.3 through 1.2.0, disclosed 2026-10-21. A crafted Brotli request body, or a Brotli response from a server you do not control, can crash the process, leak memory or run code. Node's fetch(), Express 5, body-parser 2, Envoy, and Python's urllib3/requests, aiohttp and httpx (whenever Brotli is installed) all decode it.

Fixed in Brotli 1.0.10, 1.1.1 and 1.2.1; Node.js 22.23.4, 24.22.1 and 26.12.1; Bun 1.4.4; Python Brotli 1.2.1 and brotlicffi 1.2.1.0; Envoy 1.37.8, 1.38.6, 1.39.3 and 1.40.0; Istio 1.29.9, 1.30.6 and 1.31.2. .NET has no fixed runtime yet.

Methods

  • scan scans one host (local or SSH), Docker container or image, including distroless images without sh.
  • scanFleet scans many hosts in parallel over SSH, Linux, macOS and Windows.
  • mitigate scans first, then upgrades the brotli library and distro Node.js through the package manager and restarts the systemd units still running the old library. dryRun defaults to true. upgradePython=true also pip-upgrades Brotli and brotlicffi in affected virtualenvs. Containers are reported for an image rebuild; macOS and Windows hosts get a saved script with the exact commands.

What it reports

Every Brotli decoder it finds: the system library, Node.js (and whether it links the system library), Bun, Python Brotli/brotlicffi, .NET, Envoy, Istio, curl, the Ruby gem, Electron apps, lockfile pins, and processes still running old code. Each gets a verdict (patched, vulnerable, update-available, unsupported, no-fix-released, restart-required, check-vendor, not-affected, unknown), an action, and how untrusted Brotli reaches it. Distro builds are judged against a security tracker snapshot; anything it does not cover is check-vendor, never patched.

Scanning needs no root. mitigate needs root, or passwordless sudo for the exact commands it runs (sudo -n, checked per command before anything changes).

02Behaviors1
@swamp/cve/http2shellv2026.10.25.1http2shell.ts
fn scan()
Scan one host, container or image for Brotli decoders exposed to CVE-2026-111497
fn scanFleet()
Scan multiple hosts in parallel over SSH (Linux, macOS and Windows). Pass a comma-separated list of hosts; each connects as the model's SSH user and key, or as user for a user@host entry.
fn mitigate()
Scan, then upgrade the brotli library and distro Node.js through the package manager and restart the services still running the old library. dryRun defaults to true; containers are reported for rebuild, macOS and Windows get a script to run.

Resources

status(infinite)— Exposure assessment for CVE-2026-111497 (Brotli decoder out-of-bounds write, Node2Shell / HTTP2Shell)

Files

log(text/plain)— Scan execution log
script(text/plain)— Commands to run by hand on hosts mitigate does not change (macOS .sh, Windows .ps1)
03Reports1
@swamp/cve/http2shell-reportmethod
http2shell_report.ts

Reports on Brotli decoder (CVE-2026-111497, Node2Shell / HTTP2Shell) scan and mitigation results

securityvulnerability
04Previous Versions1
2026.10.24.1AGPL-3.0-or-later
05Stats
A
100 / 100
Downloads
0
Archive size
109.6 KB
Verified by Swamp
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Docs keep secrets in a vault1/1earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License2/2earned
  • Verified public repository2/2earned

07Platforms
08Labels