Node2Shell Was Only the Beginning — The Brotli Flaw That Became HTTP2Shell
The evolution is straightforward once you understand the root cause: the bug is not in Node.js at all — it’s in Google’s Brotli C decoder library . Node2Shell: the first discovery Node.js bundles its own copy of Google’s Brotli decoder. A malformed Brotli stream triggers an out‑of‑bounds write in the decoder. Node.js automatically decompresses Brotli in: Express 5 request bodies body‑parser 2 fetch(), axios, got, SuperAgent responses Result: a single malicious Brotli‑compressed request or response can crash Node.js, leak memory, or under certain conditions execute code. This led to the name Node2Shell , coined by Imperva’s red team. Researchers realize the bug is not Node-specific The vulnerable code lives in Google Brotli versions 1.0.3–1.2.0 , used widely across ecosystems. Python packages such as: brotli ≤ 1.2.0 brotlicffi ≤ 1.2.0.2 are also vulnerable — and Python HTTP clients automatically decompress Brotli when these packages are installed: requests urllib3 httpx aiohtt...