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.
Una campaña de criptominería dirigida a servicios de IA vulnerables utiliza el malware PoeLLM para convertir servidores comprometidos en escáneres y plataformas...
Leer artículo →Microsoft anunció que, a partir del próximo mes, agregará los archivos adjuntos .msix y .msixbundle a la lista de archivos adjuntos bloqueados en Outlook Web y...
Leer artículo →El cofundador de Empire Market, uno de los mayores mercados de la dark web antes de su cierre, ha sido condenado a 40 años de prisión por facilitar transaccione...
Leer artículo →