What Is Node2Shell?
Node2Shell, also called HTTP2Shell and Broccoli2Shell, is a buffer overflow in the Brotli decoder, the code that unpacks Brotli-compressed data. Brotli is the compression behind Content-Encoding: br on the web, so the decoder is built into Node.js, .NET and many Python packages.
An attacker who can get a vulnerable program to decompress data they made can corrupt its memory. That can crash it, leak memory contents or, in the worst case, run their code. They need no account. It is rated 9.8 out of 10.
Node.js disclosed it on 21 October 2026, alongside fixes. CISA added it to its list of flaws being exploited on 27 October.
Am I Affected?
Anything that decompresses Brotli data from outside is at risk: a web app that accepts compressed requests, a proxy, a scraper or an API client that fetches compressed responses. The vulnerable code is in Brotli 1.0.3 to 1.2.0, apart from the patched 1.0.10 and 1.1.1 releases.
| Software | Fixed in | How to check |
|---|---|---|
| Node.js | 22.23.4, 24.22.1, 26.12.1 | node -v |
| .NET | 8.0.33, 9.0.22, 10.0.14 | dotnet --list-runtimes |
Python brotli / brotlicffi |
brotli 1.1.1 or 1.2.1; brotlicffi 1.2.1.0 | pip show brotli brotlicffi |
Linux libbrotli package |
your distribution's fixed build | dpkg -l | grep brotli or rpm -q brotli |
Node.js release lines that no longer get updates won't be fixed. Move to a supported line.
Docker images carry their own copy of Node.js, Python or libbrotli. Rebuild them from updated base images; patching the host doesn't fix them.
How to Fix It
- Update Node.js, .NET and the Python packages above to the fixed versions, and your distribution's
libbrotlipackage. - Restart the apps and services that use them, so the running copies are the new ones.
- Rebuild and redeploy your containers.
After Patching
The flaw was being exploited within days. If a public app was running an affected version, check its logs for crashes or restarts around unusual compressed requests, and look for processes or files you don't recognise.