CVE-2026-39412LiquidJS是一款纯JavaScript实现的模板引擎,兼容Shopify和GitHub Pages。在10.25.4版本之前,该引擎存在安全漏洞,`sort_natural`过滤器未能正确执行`ownPropertyOnly`安全选项。攻击者利用这一缺陷,通过排序侧信道攻击,可以提取原型继承属性的值。对于依赖`ownPropertyOnly`作为安全隔离机制(如多租户模板系统)的应用程序,此漏洞可能导致敏感原型属性(如API密钥和令牌)的信息泄露,建议用户尽快升级至修复版本。
该漏洞的核心在于LiquidJS的`sort_natural`过滤器在实现安全策略时的逻辑缺陷。当开发者启用`ownPropertyOnly: true`选项时,旨在防止模板访问对象原型链上的属性,从而保护敏感的全局变量或内部状态。然而,在受影响版本中,`sort_natural`过滤器在进行排序比较时,未正确过滤掉原型上的属性,导致安全选项失效。攻击者可以精心构造包含特定数据的输入,触发排序操作。由于JavaScript的动态特性及排序算法的实现细节,排序过程可能会间接访问或比较原型上的属性,导致排序结果发生可预测的变化。通过观察这些变化(侧信道),攻击者能够还原出原型上的敏感数据,例如全局配置的API密钥或令牌。这种攻击方式巧妙地绕过了预期的安全边界,对依赖沙箱隔离的多租户系统构成了严重威胁,无需直接属性访问即可实现信息窃取。