CVE-2025-66456Elysia是一个TypeScript框架,用于请求验证、类型推断、OpenAPI文档和客户端-服务器通信。该框架在1.4.0至1.4.16版本中存在严重的原型污染漏洞,漏洞位于mergeDeep函数中。当合并两个具有相同键的标准模式验证结果时,由于合并顺序的问题,存在一个any类型作为独立守卫,这允许攻击者注入__proto__属性。攻击者可以通过精心构造的请求负载,利用此漏洞修改JavaScript对象的原型链。结合另一个安全公告GHSA-8vch-m3f4-q8jf,攻击者可以实现完整的远程代码执行(RCE),对使用该框架的应用程序造成严重安全威胁。
该漏洞根源在于Elysia框架的mergeDeep函数在处理对象合并时的逻辑缺陷。当框架合并两个schema验证结果时,如果两个结果包含相同的键,系统会调用mergeDeep进行深度合并。问题在于合并过程中存在一个特殊条件:当某个值是any类型作为独立守卫时,合并逻辑允许__proto__属性被添加到目标对象中。攻击者可以利用这个漏洞,通过在请求body中注入__proto__属性来污染对象的原型链。由于JavaScript原型链被污染,攻击者可以修改Object的默认行为,进一步结合其他漏洞(如GHSA-8vch-m3f4-q8jf)实现远程代码执行。攻击成功的关键在于利用合并顺序和any类型守卫的特定组合,这使得传统的输入验证无法阻止此类攻击。