【已复现】漏洞通告 | Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞(CVE-2026-106446)
安全实验室
安全实验室
中成信息
2026年10月21日 15:42
福建
去阅读
1
漏洞描述
Handlebars.js是一款广泛使用的JavaScript模板引擎,常用于Node.js服务端渲染。其核心接口compile() 与 precompile()同时兼容模板字符串与预解析的AST对象作为输入。
4.7.9版本曾为修复CVE-2026-33937(AST 类型混淆注入)而引入了validateAstNode安全校验函数。但该函数存在致命的校验盲区:它仅通过 Object.keys() 遍历并检查节点的“自有可枚举属性”;而底层编译器在生成代码时,使用的是普通属性访问,会沿着“原型链”向上读取字段。
这种检查与使用的脱节构成了原型链绕过的核心。攻击者只需将恶意的Program AST挂载到传入对象的原型(Prototype)上:validateAstNode遍历自有属性时,看到一个“干净的空对象”从而放行;但随后编译器在生成代码时,顺着原型链读取到了恶意字段,并将其原样拼接进底层的 JavaScript 代码中。最终在模板渲染时,恶意代码在服务器进程上下文中被触发,导致远程代码执行(RCE)。
2
影响范围
4.0.0 <= handlebars.js <= 4.7.9
Handlebars.js <= 4.7.8 受 CVE-2026-33937 直接形态影响
3
漏洞详情
| 漏洞详情 | |||
| 漏洞编号 | CVE-2026-106446 | ||
| 漏洞名称 | Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞 | ||
| 评级 | 高危 | CVSS 3.1分数 | 9.8 |
| 威胁类型 | 代码执行 | 利用情况 | 更可能被利用 |
| 公开状态 | POC、EXP已公开 | 在野利用 | 未发现 |
| 危害描述:攻击者可通过该漏洞绕过安全校验,在服务端执行任意代码,导致服务器失陷,容器化场景下可能进一步控制宿主机。 | |||
| 参考链接: https://github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-8r5x-fm3f-whwj |
4
漏洞复现
中成信息安全实验室已复现Handlebars.js validateAstNode 原型链绕过远程代码执行漏洞,验证如下。
5
修复建议
立即升级 Handlebars.js 至 4.7.10 或更高版本,这是最根本的修复方式。
若无法立即升级,可采取以下临时缓解措施:
- 严格限制输入类型:仅允许传入字符串模板,禁止直接传入对象或AST节点。
- 避免原型链操作:禁止使用Object.assign、Object.create或深合并(如 lodash.merge)处理用户输入后再传入compile()。
- 代码层加固:对模板输入做白名单校验,或使用JSON.parse(JSON.stringify(obj))切断原型链。
- 运行时防护:Node.js进程以非root用户运行,限制容器权限,监控异常子进程和网络行为。
关于我们
漳州中成信息科技有限公司是一家专注于网络安全实战防护的创新型服务提供商。我们深刻理解网络安全的核心在于攻防对抗的持续较量,并以此独特视角为基石,致力于为客户构建动态、主动、智能化的纵深防御体系。区别于传统的被动防御,我们坚信“未知攻,焉知防”。公司汇聚了顶尖的渗透测试专家(红队)、应急处置精英(蓝队)及经验丰富的安全服务工程师,形成了一支具备完整攻防对抗能力的专业团队。我们的渗透测试团队模拟真实攻击者的思维与手段,深入挖掘系统、应用及网络中的深层次漏洞与风险点;应急处置团队则能在安全事件发生时快速响应、精准定位、有效遏制损失并溯源根因;安服工程师团队则致力于将攻防对抗中获得的宝贵经验转化为常态化的安全策略、加固措施与运营流程。
点击名片
关注我们
扫描官网二维码
了解更多
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论