node2shell es el apodo de CVE-2026-111497, una escritura fuera de límites en la librería de compresión Brotli de Google. Como Brotli viene integrado en Node.js, Bun, .NET y muchas otras herramientas, un mensaje comprimido manipulado puede tumbar un proceso, filtrar memoria o, en algunos casos, ejecutar código. Read it in English.

¿Qué es node2shell?
Brotli es el formato de compresión que aparece como br en la cabecera Content-Encoding. El fallo está en su descompresor en C: un flujo que declara un tipo de bloque y luego cambia de bloque no se rechazaba, y la descompresión seguía en un estado inválido escribiendo fuera del búfer. Google le da un 9,2 crítico en CVSS 4.0; Microsoft y Red Hat, un 8,1.
Software afectado por node2shell
| Software | Corregido en |
|---|---|
| Node.js 26 / 24 / 22 | 26.12.1 / 24.22.1 / 22.23.4 |
| Node.js 20 y anteriores | sin corrección (fin de soporte), actualiza |
| Bun | 1.4.4 |
| .NET 8 / 9 / 10 | 8.0.33 / 9.0.22 / 10.0.14 |
| Librería Brotli | 1.0.10, 1.1.1, 1.2.1 |
Python brotli / brotlicffi | 1.2.1 / 1.2.1.0 |
| Envoy / Istio | 1.40.0 y otras / 1.31.2 y otras |
Cómo saber si estás expuesto
Hacen falta dos cosas: un runtime vulnerable y un camino para que los datos del atacante lleguen al descompresor. En Node.js, los casos típicos son Express 5 con body-parser 2.x, los body parsers de Koa, @fastify/compress con descompresión de peticiones y fetch() descargando URLs que da el usuario. En .NET la descompresión Brotli viene desactivada por defecto.
node -v # Node.js
bun --version # Bun
dotnet --list-runtimes # .NET
pip show brotli brotlicffi
Cómo arreglar node2shell
- Actualiza el runtime a las versiones corregidas. Node.js no ha publicado ninguna alternativa: actualizar es la única solución.
- Reinicia los servicios, porque los procesos en marcha mantienen el descompresor antiguo.
- Reconstruye las imágenes de Docker con
docker build --pully despliega de nuevo. - Recompila las apps autocontenidas de .NET y los binarios de Bun, que llevan su propia copia.
Mientras tanto, puedes rechazar en tu proxy las peticiones con Content-Encoding: br. Quitar br de Accept-Encoding no basta, porque el servidor puede enviar Brotli igualmente.
Preguntas frecuentes
¿node2shell y PHP2Shell son lo mismo?
No. Tienen nombres parecidos pero no tienen nada que ver. PHP2Shell es un fallo de PHP; node2shell (CVE-2026-111497) es un fallo de la librería de compresión Brotli que usan Node.js, Bun, .NET y muchos otros programas.
¿Me afecta si uso Express?
Express 5 con body-parser 2.x descomprime cuerpos Brotli, así que un Node.js vulnerable detrás de Express 5 está expuesto. Express 4 con body-parser 1.x no los descomprime, pero conviene actualizar Node.js igualmente.
¿Se está explotando node2shell?
A 26 de octubre de 2026 no se habían publicado ataques reales, pero sí se ha demostrado ejecución de código en Node.js 24.22.0, así que conviene parchear ya.
¿.NET Framework está afectado?
No. Según Microsoft, .NET Framework no está afectado. Sí lo están .NET 8, 9, 10 y 11 si tu aplicación activa la descompresión Brotli.
Recibe alertas de seguridad gratis
Un email breve cuando una vulnerabilidad crítica o una actualización problemática te afecte. Sin spam y puedes darte de baja cuando quieras. Consulta nuestra política de privacidad (en inglés).
Fuentes
- Cycode: node2shell (CVE-2026-111497)
- The Hacker News: el fallo de Brotli afecta a Bun, Python y más
- Blog de .NET: actualizaciones de seguridad fuera de ciclo de octubre de 2026
Más en Arelvox: PHP2Shell explicado en español.