El miércoles 21 de octubre de 2026, el mismo día que PHP2Shell, Node.js publicó una actualización de seguridad importante. Esta corrigió una vulnerabilidad grave en Brotli, un componente que comprime y descomprime datos. La vulnerabilidad recibió enseguida el apodo de Node2Shell. También el Centro Nacional de Ciberseguridad neerlandés (NCSC) avisa de ella. En este artículo explicamos qué pasa, para quién es peligrosa y qué hemos hecho nosotros.

¿Tienes una app de Node.js en Theory7? Entonces no tienes que hacer nada. Hemos actualizado todas las versiones de Node.js que puedes elegir con nosotros y hemos reiniciado las apps en funcionamiento, para que usen de verdad la nueva versión. Los sitios web normales sin Node.js, como la mayoría de los sitios WordPress, no usan Node.js y no se vieron afectados por esta vulnerabilidad de Node.js.

Node2Shell en breve

  • Qué: un fallo en Brotli, la función de descompresión integrada en Node.js. Oficialmente CVE-2026-111497.
  • Gravedad: alta. Un atacante puede leer memoria sin contraseña, hacer que una app se bloquee y, en el peor de los casos, ejecutar código propio.
  • Quién: apps que descomprimen datos Brotli procedentes del exterior. También cuando eso ocurre a través de una biblioteca en la que no piensas.
  • Solución: Node.js 22.23.4, 24.22.1 y 26.12.1, publicadas el 21 de octubre de 2026.
  • En Theory7: todas las versiones de Node.js actualizadas y apps reiniciadas el viernes 23 de octubre, en cuanto hubo soluciones para cada versión que puedes elegir con nosotros.

¿Qué es Node.js en realidad?

Un sitio web o una aplicación web tiene una parte delantera y una parte trasera. La parte delantera la ves en tu navegador. La parte trasera funciona en un servidor y hace el trabajo: obtener datos, procesar formularios, enviar mensajes. Node.js es una tecnología muy extendida para construir esa parte trasera, con el mismo lenguaje de programación con el que funciona la parte delantera de los sitios web: JavaScript.

Te encontrarás con Node.js en aplicaciones web, funciones de chat, conexiones entre sistemas y sitios web modernos. Con nosotros puedes iniciar una app de Node.js desde tu plan de hosting. Cómo funciona lo puedes leer en nuestro artículo de la base de conocimiento sobre apps de Node.js. Si quieres saber en qué fijarte al elegir un proveedor de hosting, lee hosting para Node.js: cómo elegir.

¿Qué es Brotli y qué salió mal?

Brotli es una forma de reducir el tamaño de los datos, igual que un archivo zip. Lo inventó Google. Los sitios web lo usan mucho, porque los archivos más pequeños viajan más rápido por internet. Tu navegador casi siempre lo pide. Node.js lleva integrada su propia copia de Brotli, para que las apps puedan comprimir y descomprimir datos.

El fallo estaba en la descompresión. Compáralo con alguien que desembala cajas de mudanza siguiendo una lista de embalaje. Un atacante envía una caja con una lista que no cuadra. En lugar de parar y decir "esta lista está mal", quien desembala cree que todavía vienen más cosas de camino. Sigue metiéndolo todo en un cajón pequeño, aunque hace rato que está lleno. Lo que no cabe acaba en los cajones de al lado. Justo ahí un atacante puede dejar cosas que no deberían estar.

En lenguaje técnico esto se llama desbordamiento de búfer (buffer overflow). Las consecuencias pueden ser graves:

  • Leer memoria. Un atacante puede llegar a ver fragmentos de la memoria de la app. Entre ellos puede haber contraseñas o claves.
  • Hacer que una app se bloquee. La app se detiene y tus visitantes ven un mensaje de error.
  • Ejecutar código. En el peor de los casos, la app hace lo que dice el atacante. De ahí viene el nombre Node2Shell.

No hace falta ninguna contraseña. Lo único que tiene que conseguir un atacante es que tu app descomprima un paquete Brotli falsificado. Por ejemplo, porque tu app obtiene una dirección web que el propio atacante ha elegido.

¿Qué gravedad tiene Node2Shell?

El propio Node.js califica la vulnerabilidad de "alta". El NCSC valora en su aviso la probabilidad de abuso como media y el daño posible como grande. La recomendación es instalar las actualizaciones lo antes posible.

Por qué la probabilidad es "media": no todas las apps descomprimen datos Brotli procedentes del exterior. E incluso cuando lo hacen, un ataque no funciona siempre. Pero ya el 22 de octubre unos investigadores demostraron que en la práctica es posible. Según la empresa de seguridad Aikido, se consiguió ejecutar código en una versión normal de Node.js, sin modificar. Un ejemplo así facilita a los malintencionados convertirlo en un ataque real.

¿Qué hemos hecho nosotros contra Node2Shell?

Con nosotros eliges tú mismo qué versión de Node.js usa tu app, también versiones antiguas. Por eso en nuestros servidores funcionan muchas versiones de Node.js a la vez, y todas tenían que quedar bien. Las versiones de Node.js de tu plan de hosting vienen de CloudLinux, el sistema operativo de nuestros servidores. CloudLinux también ofrece soluciones para versiones antiguas de Node.js para las que el propio Node.js ya no publica actualizaciones.

Cronología de Node2Shell (hora de los Países Bajos)
CuándoQué ocurrió
Miércoles 21 de octubreNode.js publica la actualización para las versiones 22, 24 y 26.
Jueves 22 de octubreUnos investigadores muestran un primer ejemplo funcional de ataque. CloudLinux ofrece versiones actualizadas de Node.js 22, 24 y 26.
Noche previa al viernes 23 de octubreCloudLinux ofrece también soluciones para versiones antiguas de Node.js.
Viernes 23 de octubre, durante el díaEl NCSC publica su aviso. Nosotros identificamos qué versiones de Node.js y qué apps funcionan en todos nuestros servidores.
Viernes 23 de octubre, por la tardeActualizamos todas las versiones de Node.js: primero en un servidor como prueba, después en todos los demás. Las apps en funcionamiento se reinician y comprobamos que después funcionan igual que antes.

Ese reinicio es importante. Una app que ya está en marcha sigue usando la versión antigua en su memoria, aunque la nueva ya esté instalada. Solo después de un reinicio queda realmente protegida. Lo hemos hecho con todas las apps, y hemos comprobado app por app que después da la misma respuesta que antes.

Unas pocas versiones muy antiguas de Node.js no contienen el componente vulnerable en absoluto. Para una versión antigua ya no salió ninguna solución. Nadie la usaba y la hemos eliminado.

¿Existe el mismo fallo en otro software?

Sí. Brotli lo usa muchísimo software, no solo Node.js. Los investigadores han encontrado entretanto el mismo fallo en otros programas y bibliotecas que usan Brotli, por ejemplo para Python. En una parte de ellos, las actualizaciones de sus creadores todavía no están listas.

Lo vigilamos a diario. En cuanto hay una actualización para el software de nuestros servidores, la instalamos igual que con Node.js: primero probar, después actualizar en todas partes y comprobar.

¿Tienes que hacer algo tú después de Node2Shell?

Para tu app de Node.js con nosotros, no. Aun así, algunos consejos:

  • ¿Usas una versión antigua de Node.js, como la 18 o la 20? También la hemos actualizado, pero el número de versión se mantiene igual. Así que no te asustes si con node -v ves el mismo número. Estas versiones ya no reciben actualizaciones del propio Node.js. Por eso, pasa a Node.js 22 o 24 si tu app lo admite.
  • ¿Has iniciado tú mismo un proceso de Node.js, al margen del menú de Node.js de tu plan de hosting? Reinícialo entonces, para que use la nueva versión.
  • Mantén al día tu propio código y tus paquetes. Nosotros nos encargamos de Node.js en el servidor. Los paquetes npm de tu app los actualizas tú. Si usas Python con los paquetes Brotli o brotlicffi, o si usas Bun, actualízalos también en cuanto haya una actualización.
  • ¿Tienes en otro sitio un servidor propio o un VPS con Node.js? Entonces actualiza Node.js a 22.23.4, 24.22.1 o 26.12.1, o a una versión más reciente, y reinicia tus apps.

El estado actual de las incidencias y el mantenimiento lo encuentras siempre en status.theory7.net. Si tienes dudas sobre tu propia app, abre un ticket con tu dominio. Con gusto lo revisamos por ti.

Preguntas frecuentes

¿Qué es Node2Shell?

Node2Shell es el apodo de una vulnerabilidad grave en Brotli, la función de descompresión integrada en Node.js (CVE-2026-111497). Con datos Brotli falsificados, un atacante puede leer memoria sin contraseña, hacer que una app se bloquee y, en el peor de los casos, ejecutar código. Node.js lo ha corregido en las versiones 22.23.4, 24.22.1 y 26.12.1.

¿Era vulnerable mi sitio web en Theory7?

La vulnerabilidad de Node.js solo afectaba a las apps de Node.js. Los sitios web normales, como la mayoría de los sitios WordPress, no usan Node.js. Todas las versiones de Node.js que puedes elegir con nosotros las actualizamos el viernes 23 de octubre, y reiniciamos las apps en funcionamiento. El mismo fallo de Brotli está también en otro software. Lo actualizamos en cuanto sus creadores tengan una actualización.

¿Tengo que hacer algo yo?

Para Node.js en sí, no, eso lo hemos actualizado nosotros. Si has iniciado tú mismo un proceso de Node.js al margen del menú de Node.js, reinícialo. Si usas Node.js 18 o 20, te recomendamos pasar a 22 o 24.

¿Por qué no ha cambiado el número de versión de mi Node.js?

Para versiones antiguas como Node.js 18 y 20, CloudLinux crea la solución sin cambiar el número de versión. La actualización sí está incluida. En Node.js 22, 24 y 26 sí ves el número nuevo: 22.23.4, 24.22.1 o 26.12.1.

¿Es Node2Shell lo mismo que PHP2Shell?

No. Salieron en las noticias la misma semana y tienen un nombre parecido, pero son dos vulnerabilidades distintas. PHP2Shell estaba en PHP, Node2Shell está en Brotli en Node.js. Sobre PHP2Shell puedes leer más en PHP2Shell explicado.

Fuentes