Node2Shell: Microsoft parchea .NET, Visual Studio y PowerShell por la falla crítica de Brotli
Node2Shell: Microsoft parchea .NET, Visual Studio y PowerShell por la falla crítica de Brotli
La vulnerabilidad CVE-2026-111497, apodada Node2Shell, sigue ampliando su alcance. Se trata de una escritura fuera de límites en el decodificador de compresión Brotli de Google, y ya ha provocado actualizaciones de seguridad de Microsoft, del proyecto Node.js, de dos paquetes de Python y de otras herramientas. El último movimiento llegó el 25 de octubre, cuando Microsoft publicó correcciones para .NET, Visual Studio y PowerShell, según informó SecurityWeek.
Qué es CVE-2026-111497
El fallo afecta a las versiones 1.0.3 a 1.2.0 de Brotli. Google lo calificó con CVSS v4 9.2 (crítico). Cuando el decodificador procesa datos especialmente manipulados, puede escribir más allá del límite de un búfer. Las consecuencias posibles son:
- Caída del proceso (denegación de servicio).
- Filtración de contenido de memoria.
- Ejecución de código arbitrario por parte de un atacante sin autenticación, según indica el propio proyecto Node.js.
Las versiones corregidas de Brotli son 1.0.10, 1.1.1 y 1.2.1. El hallazgo se atribuye a miembros de OpenAI Codex Security, durante trabajos de red teaming. OpenAI precisó que la causa raíz ya se había corregido en el código fuente de Brotli en febrero, pero entonces no se sabía que implicaba una vulnerabilidad y no hubo una versión nueva de la librería.
Respuesta de Microsoft y del ecosistema
Node.js y los paquetes de Python se parchearon la semana pasada. Microsoft se sumó el 25 de octubre con estas versiones:
- .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.
- PowerShell: 7.4, 7.5 y 7.6.
- Python: los paquetes
Brotliybrotlicffi, corregidos en las versiones 1.2.1 y 1.2.1.0. - Otros: Bun, Envoy e Istio también se actualizaron.
Microsoft clasifica el fallo como elevación de privilegios con CVSS v3.1 de 8.1. Lo considera crítico para .NET y Visual Studio, importante para PowerShell, y su evaluación de explotabilidad es «Exploitation More Likely».
¿Se puede explotar de verdad?
Sí, en laboratorio. Imperva demostró ejecución de código sobre la imagen oficial de Node.js 24.22.0 para Linux arm64, enviando los datos maliciosos tanto en una respuesta que la aplicación consume como en el cuerpo de una petición procesada por Express 5 o body-parser 2. La prueba requirió varios intentos y la versión corregida 24.22.1 rechazó las mismas entradas.
Hasta donde reportan las fuentes consultadas, no hay explotación activa confirmada ni inclusión en el catálogo KEV de CISA (verificado en informes del 22 y 23 de octubre). Aun así, ya existen pruebas de concepto públicas, de modo que conviene no esperar.
Quién está realmente expuesto
El ataque solo funciona si datos controlados por el atacante llegan al decodificador. Esto incluye cuerpos de peticiones HTTP comprimidos, respuestas obtenidas desde servidores no confiables y archivos comprimidos. La advertencia de Patch the Planet, de OpenAI, apunta en esa dirección. Un rastreador público de proyectos que incluyen su propia copia de Brotli todavía lista software sin parchear, como DuckDB, Apache Arrow, 7-Zip-zstd, p7zip y EDK II, aunque sus mantenedores aclaran que la lista es incompleta y que no toda configuración expone el código vulnerable.
Qué hacer ahora
- Actualizar Node.js a 22.23.4, 24.22.1 o 26.12.1 (o posteriores) y reiniciar los procesos: un proceso en ejecución conserva el decodificador antiguo.
- Aplicar las actualizaciones de Microsoft en servidores y estaciones de desarrollo con .NET, Visual Studio o PowerShell.
- Actualizar Brotli y brotlicffi en entornos Python a 1.2.1 / 1.2.1.0.
- Reconstruir imágenes de contenedor desde una base parcheada y verificar la versión real dentro del contenedor.
- Inventariar software que empaqueta su propia copia de Brotli y consultar al proveedor.
- Migrar desde versiones sin soporte: Node.js 20 y anteriores no recibirán corrección.
La lectura de CiberPlaneta
Node2Shell recuerda que una librería «invisible» de compresión puede estar en medio de casi cualquier flujo de datos: un fetch(), un middleware o un archivo descargado. Mientras el foco de la semana está puesto en PHP2Shell, este fallo exige el mismo inventario cuidadoso de dependencias y runtimes. Ante la duda, parchea primero lo que expone servicios a Internet.