CVE-2026-33938

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, the `@partial-block` special variable is stored in the template data context and is reachable and mutable from within a template via helpers that accept arbitrary objects. When a helper overwrites `@partial-block` with a crafted Handlebars AST, a subsequent invocation of `{{> @partial-block}}` compiles and executes that AST, enabling arbitrary JavaScript execution on the server. Version 4.7.9 fixes the issue. Some workarounds are available. First, use the runtime-only build (`require('handlebars/runtime')`). The `compile()` method is absent, eliminating the vulnerable fallback path. Second, audit registered helpers for any that write arbitrary values to context objects. Helpers should treat context data as read-only. Third, avoid registering helpers from third-party packages (such as `handlebars-helpers`) in contexts where templates or context data can be influenced by untrusted input.
Configurations

Configuration 1 (hide)

cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*

History

26 Oct 2026, 22:10

Type Values Removed Values Added
Summary
  • (es) Handlebars proporciona la potencia necesaria para permitir a los usuarios construir plantillas semánticas. En las versiones 4.0.0 a 4.7.8, la variable especial “@partial-block” se almacena en el contexto de datos de la plantilla y es accesible y mutable desde dentro de una plantilla a través de helpers que aceptan objetos arbitrarios. Cuando un helper sobrescribe “@partial-block” con un AST de Handlebars manipulado, una invocación posterior de “{{> @partial-block}}” compila y ejecuta ese AST, permitiendo la ejecución arbitraria de JavaScript en el servidor. La versión 4.7.9 corrige el problema. Hay algunas soluciones alternativas disponibles. Primero, use la compilación solo en tiempo de ejecución (“require(’handlebars/runtime’)”). El método “compile()” está ausente, eliminando la ruta de reserva vulnerable. Segundo, audite los helpers registrados en busca de cualquiera que escriba valores arbitrarios en objetos de contexto. Los helpers deben tratar los datos de contexto como de solo lectura. Tercero, evite registrar helpers de paquetes de terceros (como “handlebars-helpers”) en contextos donde las plantillas o los datos de contexto puedan ser influenciados por entradas no confiables.

Information

Published : 2026-03-27 21:17

Updated : 2026-10-26 22:10


NVD link : CVE-2026-33938

Mitre link : CVE-2026-33938

CVE.ORG link : CVE-2026-33938


JSON object : View

Products Affected

handlebarsjs

  • handlebars
CWE
CWE-94

Improper Control of Generation of Code ('Code Injection')

CWE-843

Access of Resource Using Incompatible Type ('Type Confusion')

CWE-917

Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection')