Handlebars corrige una vulnerabilidad crítica de ejecución de código en la versión 4.7.10
Un fallo crítico (CVSS 9.8) en la popular librería de plantillas Handlebars para JavaScript permite ejecutar código en el servidor cuando la aplicación pasa objetos AST en lugar de cadenas de texto a sus funciones de compilación. Está corregido en la versión 4.7.10.
Qué ha pasado
El equipo de Handlebars publicó el 5 de octubre la versión 4.7.10, que soluciona la vulnerabilidad CVE-2026-106446, calificada como crítica con una puntuación CVSS de 9.8 (vector de red, sin autenticación ni interacción del usuario).
El problema afecta a las funciones Handlebars.compile() y Handlebars.precompile(), que aceptan objetos AST (árboles de sintaxis ya analizados) además de plantillas en texto. En esos objetos solo se validaban algunos valores concretos (PathExpression, NumberLiteral y BooleanLiteral), lo que permite esquivar la validación que se había introducido en la versión 4.7.9 para corregir CVE-2026-33937.
Un atacante capaz de entregar un objeto en lugar de una cadena de plantilla puede colocar expresiones JavaScript en campos no comprobados, como Program.blockParams.length, la profundidad de un parámetro que no sea PathExpression, un StringLiteral.value que no sea texto o un PathExpression.original no textual. El compilador vuelca esos valores en el JavaScript generado, lo que deriva en ejecución de código en el proceso del servidor al renderizar la salida de compile, o allí donde se cargue la salida de precompile.
El aviso del fabricante incluye además otros endurecimientos de seguridad en la misma versión, entre ellos el escapado de <!-- y <script en la salida precompilada (GHSA-xw65-4hp5-5hc7) y la no confianza en propiedades especiales de los datos de contexto (GHSA-p8wg-vrv2-v86f).
A quién afecta
Están afectadas las versiones de Handlebars desde la 4.0.0 hasta la 4.7.10, según el aviso publicado en el repositorio del proyecto y los datos de NVD. La corrección llega en la versión 4.7.10.
- Aplicaciones Node.js y servicios backend que usan Handlebars para generar HTML, correos o documentos.
- Entornos en los que la plantilla o el AST puede proceder, directa o indirectamente, de una entrada externa (API, base de datos, CMS, plugins de terceros).
- No están afectadas las aplicaciones que solo pasan plantillas en forma de cadena de texto a compile() y precompile().
Estado de la explotación
CVE-2026-106446 no figura en el catálogo KEV de CISA, es decir, no consta explotación activa confirmada. La vulnerabilidad todavía no tiene puntuación EPSS, por lo que no hay una estimación de probabilidad de explotación a corto plazo.
Aun así, se trata de un fallo con la máxima franja de gravedad y de una librería muy extendida, con detalles técnicos ya públicos en el aviso y en el commit de corrección, lo que facilita el desarrollo de pruebas de concepto.
Qué hacer
La acción principal es actualizar la dependencia. Al ser una librería, suele aparecer de forma indirecta en muchos proyectos, por lo que conviene revisar también las dependencias transitivas.
- Actualizar Handlebars a la versión 4.7.10 en todas las aplicaciones y servicios.
- Localizar la librería en el inventario de software: ejecutar un análisis de dependencias (npm ls handlebars o equivalente) e incluir las dependencias de segundo nivel.
- Revisar el código para asegurarse de que a compile() y precompile() solo se les pasan plantillas en texto, nunca objetos AST construidos a partir de datos externos.
- Si la actualización no puede hacerse de inmediato, validar y aislar cualquier entrada que pueda acabar en el compilador de plantillas.
- Tener en cuenta el cambio de comportamiento señalado por el fabricante: {{#each}} ahora itera de forma perezosa sobre Map, Set y generadores, en lugar de copiarlos previamente a un array. Conviene probar las plantillas antes de desplegar.
Fuentes
Tecnologías afectadas
Vulnerabilidades (1)
| CVE | Severidad | Explotación activa | Publicada | Estado NVD |
|---|---|---|---|---|
| CVE-2026-106446 | Crítica (9.8) | — | 6/10/2026 | Recibida |
Redactado automáticamente a partir de datos de NVD, CISA KEV y avisos de fabricante. Verifique siempre las versiones afectadas y los parches en el aviso oficial del fabricante antes de actuar.