【原创发现】Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞(CVE-2026-106446)安全风险通告
奇安信 CERT
2026年10月9日 11:20
北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
● 点击↑蓝字关注我们,获取更多安全风险通告
| 漏洞概述 | |||
| 漏洞名称 | Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞 | ||
| 漏洞编号 | QVD-2026-65364,CVE-2026-106446 | ||
| *公开时间* | 2026-10-06 | *影响量级* | 十万级 |
| 奇安信评级 | 高危 | CVSS 3.1分数 | 9.8 |
| 威胁类型 | 代码执行 | 利用可能性 | *高* |
| POC状态 | 已公开 | 在野利用状态 | 未发现 |
| EXP状态 | 已公开 | 技术细节状态 | 已公开 |
| 危害描述:攻击者无需认证即可绕过上游安全校验后在渲染进程中执行任意命令,导致服务器失陷;容器场景可导致容器被完全控制。 |
01
漏洞详情
>>>>
影响组件
Handlebars 是一款广泛使用的开源 JavaScript 语义模板引擎,支持服务端(Node.js)与浏览器端渲染,被大量 Web 应用、报表 / 邮件 / 通知模板系统所引用。
>>>>
漏洞描述
近日,奇安信CERT监测到Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞(CVE-2026-106446),该漏洞源于4.7.9 为修复 CVE-2026-33937(AST 类型混淆导致 JavaScript 注入)而引入 validateAstNode。但该校验器仅遍历节点的自有可枚举属性(Object.keys),而代码生成器使用普通属性访问,会沿原型链读取字段。攻击者将整个恶意 Program AST 挂载到传入 compile() 的对象的原型上,即可令校验器看到“空对象”而跳过,编译器却照常读取并执行恶意字段。目前该漏洞PoC与技术细节已公开。鉴于该漏洞影响范围较大,建议客户尽快做好自查及防护。
>>>>
利用条件
目标应用将攻击者可控对象经 Object.assign / Object.create / 深合并后传入 Handlebars.compile() / precompile()。
02
影响范围
>>>>
影响版本
4.0.0 <= handlebars.js <= 4.7.9
Handlebars.js <= 4.7.8 受 CVE-2026-33937 直接形态影响
>>>>
其他受影响组件
存在 Object.assign({}, userJson)、Object.create(userObj)、lodash.merge / defaultsDeep 等合并用户输入后再 compile 的应用。
03
复现情况
目前,奇安信CERT已成功复现Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞(CVE-2026-106446),截图如下:
04
处置建议
>>>>
安全更新
目前官方已有可更新版本,建议受影响用户升级至最新版本:
Handlebars.js >= 4.7.10
官方下载地址:
https://github.com/handlebars-lang/handlebars.js/releases/tag/v4.7.10
临时缓解措施:
-
入口拒绝非字符串;
-
上游修复方向:在 validateAstNode 中拒绝原型非 Object.prototype / null 的节点,使“校验遍历”与“编译器读取”一致:
-
避免原型污染:禁止对用户 JSON 使用 Object.assign / 深合并;JSON.parse 结果直接传递前做白名单校验。
-
架构措施:使用 handlebars/runtime + 预编译产物,移除运行时 compile。
05
参考资料
[1]https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-8r5x-fm3f-whwj
06
时间线
2026年10月09日,奇安信 CERT发布安全风险通告。
07
漏洞情报服务
「奇安信漏洞情报平台」重磅上线,诚邀您来体验:
奇安信 CERT
致力于第一时间为企业级用户提供权威漏洞情报和有效解决方案。
点击↓阅读原文,到ALPHA威胁分析平台订阅更多漏洞信息。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论