CVE-2026-33941Handlebars 是一个流行的语义模板构建库。在 4.0.0 至 4.7.8 版本中,其 CLI 预编译器存在严重的安全缺陷。该组件在生成 JavaScript 输出时,直接将用户控制的模板文件名和 CLI 选项拼接到代码中,且未进行任何转义或清理。攻击者若能影响文件名或命令行参数,即可注入任意 JavaScript 代码。当生成的 bundle 在 Node.js 或浏览器环境加载时,恶意代码将被执行,导致系统面临高风险。
该漏洞的核心在于 Handlebars CLI 预编译器(`bin/handlebars` / `lib/precompiler.js`)的不安全字符串拼接操作。在正常流程中,预编译器会将模板文件编译为 JavaScript 函数以便后续调用。然而,受影响版本直接将用户提供的文件名以及部分命令行选项参数作为字符串字面量拼接到最终的 JavaScript 输出文件中,完全绕过了输入转义机制。攻击者可以利用这一点,构造包含 JavaScript 语法关键字(如单引号、双引号、分号、反引号等)的恶意文件名或参数值。例如,若文件名为 `"; malicious_func(); //`,预编译器生成的代码可能变成 `templates[""] = ...; malicious_func(); // ...`。由于攻击向量为本地且需要低权限,攻击者通常通过污染构建环境的输入源或诱导开发者运行特定命令来实施攻击。一旦生成的 bundle 被加载,注入的代码将在运行环境上下文中获得执行权限,造成严重的代码注入后果。