26 de octubre de 2026.
Qué hacer ahora
El 21 de octubre Node.js publicó el parche de seguridad de las ramas 22, 24 y 26. La falla que puede ejecutar código es CVE-2026-111497, en el decodificador Brotli que viene con Node.js. Node.js la califica de alta. Google le dio 9,2 en CVSS v4 a la librería. En la prensa el apodo es Node2Shell. No es un nombre del proyecto.
| Rama | Instala |
|---|---|
| Node.js 22 | 22.23.4 |
| Node.js 24 | 24.22.1 |
| Node.js 26 | 26.12.1 |
La 20 y las anteriores no entran en este release. Node.js avisa que las ramas en fin de vida quedan afectadas cada vez que hay un parche de seguridad. En Chile, el CSIRT de la ANCI lo repitió el 22 de octubre en la alerta AVC26-00743.
Si tu aplicación descomprime Brotli con la librería de Google y no con Node.js, la versión del binario no te cubre. Las versiones corregidas de esa librería son 1.0.10, 1.1.1 y 1.2.1. Afectan a Brotli 1.0.3 hasta 1.2.0.
¿Qué está afectado?
Cualquier proceso que pase datos no confiables al decodificador Brotli vulnerable. Node.js nombra el caso de una aplicación que descomprime con node:zlib. El resultado puede ser una caída, una fuga de memoria del proceso o ejecución de código. Sin datos controlados por quien ataca, el decodificador no se dispara solo.
El mismo código vive en otros runtimes. SecurityWeek reportó el 26 de octubre que Microsoft publicó arreglos el 25 para .NET 8.0.33, 9.0.22 y 10.0.14, además de .NET 11 Release Candidate 3, Visual Studio 2019, 2022 y 2026, y PowerShell 7.4, 7.5 y 7.6. En Python, los paquetes Brotli 1.2.1 y brotlicffi 1.2.1.0 incluyen el arreglo. Bun, Envoy e Istio también se actualizaron. Microsoft puntúa la falla en 8,1 (CVSS v3.1), crítica para .NET y Visual Studio e importante para PowerShell, y la marca como "explotación más probable".
Al 26 de octubre no hay explotación en producción reportada. Imperva demostró ejecución de código en la imagen oficial de Node.js 24.22.0 para Linux arm64. No en todos los intentos, y sin publicar el exploit. Un ejemplo público en GitHub solo logra ejecución contra una compilación debilitada a propósito. Parte de la investigación discute si, fuera de ese caso, el efecto práctico es una caída del proceso. El parche corresponde igual.
OpenAI encontró el problema en un ejercicio de red team y avisó a los mantenedores de Brotli. El cambio de código en la librería es de febrero. Entonces no se trató como vulnerabilidad y no hubo un release. Por eso el arreglo llegó ahora, con el aviso.
Cómo saber qué versión de Node.js tiene tu servidor
En el servidor, o dentro del contenedor que atiende tráfico:
node -v
Tiene que decir v22.23.4, v24.22.1 o v26.12.1, o una versión posterior de esa rama cuando exista. El node de tu laptop y el de producción no tienen por qué coincidir. Revisa el proceso que responde en internet.
npm ls no dice la versión del runtime. Si package.json fija una rama vieja en engines, el próximo deploy puede volver a instalar Node.js 20.
Cómo aplicar el parche de Node.js
Servidor propio
Instala 22.23.4, 24.22.1 o 26.12.1 desde el aviso de Node.js o desde el paquete de tu distribución, si ya publicó esas versiones. Reinicia el proceso. Vuelve a correr node -v en el binario que sirve la app, no en otro que haya quedado en el PATH.
Contenedores
Reconstruye la imagen sobre una base ya parcheada y vuelve a desplegar. Un contenedor que sigue corriendo conserva el binario viejo aunque el registro ya tenga la imagen nueva.
Plataforma o hosting
Si el runtime lo elige el proveedor, cambia la versión en el panel o abre un ticket. Mientras la plataforma ofrezca 20, o una 22 anterior a 22.23.4, el servicio sigue en la rama afectada.
.NET, PowerShell o Python
Son actualizaciones distintas. El parche de Node.js no cubre el runtime de .NET ni los paquetes Brotli y brotlicffi. Si un producto trae su propia copia del decodificador, hay que actualizar ese producto, no solo el node del servidor.
¿Qué hacer si no puedes actualizar todavía?
Saca de internet lo que descomprima datos que no controlas, hasta poder instalar el parche. Un WAF no reemplaza el binario. En la rama 20 no hay versión corregida a la que subir: el camino es migrar.
El mismo release de Node.js corrige otras fallas, no solo Brotli. Node.js marca como altas, además de CVE-2026-111497, un truncado de nombres DNS con un byte nulo (CVE-2026-105482) y dos fallas de verificación de certificados TLS cuando la dirección IP no está escrita en su forma canónica (CVE-2026-105483 y CVE-2026-106069). La de los dígitos de ancho completo no aplica a la rama 22. El aviso lista en total diez CVE, con severidades alta, media y baja. La alerta chilena las agrupa como altas. Manda la calificación de Node.js, e instala el release completo: también actualiza el paquete de certificados por el compromiso de autoridades intermedias de eMudhra.
La misma semana, PHP
El parche de PHP es independiente y ya tiene explotación confirmada en un honeypot. Si el sitio es WordPress, Drupal o cualquier PHP, el runtime de Node.js no lo cubre. El detalle está en el parche de seguridad PHP.
¿Necesitas ayuda para revisar tus servidores? Agenda un diagnóstico.
Fuentes
- Wednesday, October 21, 2026 Security Releases, Node.js, 21 de octubre de 2026
- Node.js - Vulnerabilidad Crítica (AVC26-00743), CSIRT Nacional de la ANCI, 22 de octubre de 2026
- Node2Shell: Brotli Flaw Triggers Patching Across Microsoft, Node.js, Python Packages, SecurityWeek, 26 de octubre de 2026
Preguntas frecuentes
¿Qué versión de Node.js debo instalar?
La de tu rama con soporte: 22.23.4, 24.22.1 o 26.12.1. Node.js no publicó este parche para la 20 ni para ramas anteriores.
¿Actualizar las dependencias de npm corrige el parche de Node.js?
No. La falla está en el decodificador Brotli que trae el binario de Node.js. Hay que cambiar el runtime y reiniciar el proceso. Si la app o una imagen Docker traen su propia copia de Brotli, esa copia se actualiza aparte.
¿Hay explotación activa de CVE-2026-111497?
Al 26 de octubre de 2026, SecurityWeek no reporta explotación en producción. Imperva mostró ejecución de código en laboratorio sobre la imagen oficial de Node.js 24.22.0 para Linux arm64, y no publicó el exploit. Un ejemplo en GitHub solo funciona contra una compilación debilitada a propósito.
¿Qué hago si sigo en Node.js 20?
No hay parche. El CSIRT Nacional lo dice así: las versiones 20.x y anteriores llegaron al fin de soporte. Hay que pasar a 22.23.4 o a una rama vigente más nueva. Mientras tanto, no dejes expuesto a internet un servicio que descomprima datos que no controlas.
