fuente: https://securityonline.info/handlebars-js-vulnerability-rce-poc/
Los responsables del mantenimiento de Handlebars.js han corregido dos fallos críticos que podían permitir la ejecución remota de código. Cada vulnerabilidad de Handlebars.js permitía a un atacante ejecutar código JavaScript arbitrario en un servidor Node.js. Tanto los detalles técnicos como el código de prueba de concepto del exploit ya son públicos, y la biblioteca registra más de 172 millones de descargas mensuales.
Por qué es importante
Handlebars.js es un motor de plantillas ampliamente utilizado para JavaScript. El paquete npm registra más de 172,6 millones de descargas mensuales, según datos del propio proyecto. Este alcance convierte cualquier fallo del lado del servidor en una preocupación generalizada.
Es fundamental destacar que tanto la documentación como el código del exploit son públicos. Los dos avisos de GitHub, GHSA-p8wg-vrv2-v86f y GHSA-8r5x-fm3f-whwj, documentan cada error en detalle. Dado que los detalles son públicos, los responsables de la seguridad deben considerar la aplicación de los parches como una prioridad. Aun así, los avisos no reportan ninguna explotación en la práctica.
Cómo funcionan los ataques Omisión de la lista de bloqueo (CVE-2026-106445)
La primera vulnerabilidad tiene una puntuación CVSS de 9.2. Handlebars mantiene una lista de bloqueo diseñada para impedir el acceso a propiedades peligrosas como el constructor. Sin embargo, esta comprobación puede omitirse. El aviso explica que Handlebars “puede exponer el constructor de la función a pesar de su lista de bloqueo de acceso a prototipos”.
En resumen, una búsqueda llega a una propiedad que la lista de bloqueo nunca evalúa. Esta ruta devuelve el constructor de la función, que un atacante puede usar para compilar y ejecutar código. El fallo se produce cuando una aplicación renderiza una plantilla controlada con la opción allowProtoMethodsByDefault activada.
Confusión de tipos AST (CVE-2026-106446)
La segunda vulnerabilidad de Handlebars.js tiene una puntuación de 9.8. Afecta a las funciones compile() y precompile(), que aceptan un árbol de plantillas preanalizado, así como una cadena de texto. La validación añadida en la versión 4.7.9 solo comprueba algunos nodos del árbol.
Como resultado, el compilador escribe otros valores en el código generado sin verificarlos. Según el aviso, un objeto no confiable “puede contener JavaScript arbitrario”. Un desencadenante común es pasar un campo del cuerpo de una solicitud JSON directamente a la función compile(). Este problema elude una corrección anterior identificada como CVE-2026-33937. Las aplicaciones que solo pasan cadenas de plantilla no se ven afectadas.
Versiones afectadas
Ambas vulnerabilidades afectan al mismo rango de versiones:
Afectadas: Handlebars 4.0.0 a 4.7.9 Corregido: Handlebars 4.7.10
Parche y medidas de mitigación
Actualice a Handlebars 4.7.10 sin demora. Esta versión cierra ambas vías de inyección y resuelve cada vulnerabilidad de Handlebars.js. Dado que los detalles y la prueba de concepto son públicos, el parche es la única solución definitiva.
Si no puede actualizar de inmediato, aplique las soluciones alternativas del proveedor. Primero, nunca establezca allowProtoMethodsByDefault en true para plantillas no confiables. Luego, verifique que cualquier valor pasado a compile() sea una cadena, no un objeto. Finalmente, utilice la compilación solo en tiempo de ejecución en servidores donde las plantillas se precompilan durante la compilación.
En el primer día de Pwn2Own Ireland 2026, investigadores de seguridad lograron explotar 32 vulnerabilidades zero-day únicas, obteniendo recompensas por un total...
Leer artículo →Google ha publicado Chrome 155 en el canal Estable con 247 correcciones de seguridad. Esta actualización corrige cuatro vulnerabilidades críticas de uso de memo...
Leer artículo →Altman advierte sobre más incidentes A medida que la IA generativa adquiere capacidades de agencia para realizar tareas por sí sola, el riesgo de que los modelo...
Leer artículo →