CVE-2026-33937Handlebars.js 在 4.0.0 到 4.7.8 版本中存在严重漏洞。由于 `Handlebars.compile()` 函数在处理预解析的 AST 对象时,未对 `NumberLiteral` 节点的 `value` 字段进行适当的净化和引号包裹,攻击者可通过构造特制的 AST 对象注入任意 JavaScript 代码。这可能导致服务器端远程代码执行,且无需用户交互。CVSS 评分 9.8,建议立即升级。
该漏洞源于 Handlebars 编译器处理 AST(抽象语法树)时的逻辑缺陷。`Handlebars.compile()` 函数不仅接受字符串模板,还接受预解析的 AST 对象。在生成 JavaScript 代码时,编译器直接将 `NumberLiteral` 类型节点的 `value` 值拼接到输出中,未进行任何转义或引号处理。攻击者若能控制传入 `compile()` 的参数,可构造一个包含恶意代码的 AST 对象(例如将 `value` 设置为 `1;require('child_process').exec('whoami');//`)。当编译后的模板函数被调用时,嵌入的恶意代码将在服务器上下文中执行,从而实现完全的系统控制。