node2shell (CVE-2026-111497): fallo de Brotli en Node.js, Bun y .NET y cómo parchearlo

node2shell en resumen: CVE-2026-111497 es un fallo crítico en el descompresor Brotli que usan Node.js, Bun, .NET y paquetes de Python. Actualiza Node.js a 22.23.4, 24.22.1 o 26.12.1, Bun a 1.4.4 y .NET a 8.0.33, 9.0.22 o 10.0.14, y reinicia tus servicios. Última actualización: 27 de octubre de 2026.

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.

node2shell explicado en español

¿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

SoftwareCorregido en
Node.js 26 / 24 / 2226.12.1 / 24.22.1 / 22.23.4
Node.js 20 y anterioressin corrección (fin de soporte), actualiza
Bun1.4.4
.NET 8 / 9 / 108.0.33 / 9.0.22 / 10.0.14
Librería Brotli1.0.10, 1.1.1, 1.2.1
Python brotli / brotlicffi1.2.1 / 1.2.1.0
Envoy / Istio1.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

  1. Actualiza el runtime a las versiones corregidas. Node.js no ha publicado ninguna alternativa: actualizar es la única solución.
  2. Reinicia los servicios, porque los procesos en marcha mantienen el descompresor antiguo.
  3. Reconstruye las imágenes de Docker con docker build --pull y despliega de nuevo.
  4. 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

Más en Arelvox: PHP2Shell explicado en español.

Leave a Comment