CVE-2026-41311LiquidJS是一个纯JavaScript模板引擎,兼容Shopify和GitHub Pages。在10.25.7版本之前,由于对模板中{% layout %}和{% block %}的处理逻辑存在缺陷,攻击者可以通过构造循环引用导致无限递归。该漏洞会迅速消耗服务器内存(约4GB),导致Node.js进程因内存溢出而崩溃,从而实现拒绝服务攻击。任何能够提交Liquid模板的用户均可利用此漏洞。
该漏洞源于LiquidJS在解析模板布局和块时的递归渲染机制缺乏循环检测。当攻击者构造一个包含{% layout %}和{% block %}标签的恶意模板,并使它们形成相互引用或自引用(例如layout引用自身)时,模板引擎在渲染过程中会进入无限递归循环。由于没有有效的递归深度限制,每次函数调用都会占用堆栈空间,导致内存消耗呈指数级增长。当内存占用达到Node.js的限制(通常为4GB)时,进程将抛出“FATAL ERROR: JavaScript heap out of memory”错误并强制终止。这种攻击无需用户交互或认证,且仅影响可用性。