IPBUF安全漏洞报告
English
CVE-2026-34166 CVSS 3.7 低危

CVE-2026-34166: LiquidJS内存限制绕过漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-34166
漏洞类型
拒绝服务
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
LiquidJS

相关标签

DoSLiquidJSMemory BypassCVE-2026-34166Template Engine

漏洞概述

LiquidJS是一个纯JavaScript模板引擎。在10.25.3版本之前,当启用memoryLimit选项时,其replace过滤器对内存使用的计算存在缺陷。代码仅计算原始字符串和替换内容的长度,但在模式多次出现时,实际输出的大小可能呈二次方增长。这允许攻击者通过控制模板内容绕过DoS防护机制,造成约2500倍的内存放大,从而导致服务器内存耗尽和拒绝服务。

技术细节

该漏洞的根源在于LiquidJS的replace过滤器在启用memoryLimit保护时的算法逻辑错误。当系统计算内存消耗时,仅使用了str.length + pattern.length + replacement.length的线性公式。然而,底层的执行逻辑是str.split(pattern).join(replacement)。如果攻击者构造了一个包含大量特定模式的输入字符串(例如重复字符),split操作会产生一个巨大的数组,随后的join操作生成的字符串长度可能远超预期。这种差异导致了内存消耗的二次方增长。攻击者无需认证即可利用此漏洞,只需发送包含恶意模板的请求,即可触发约2500倍的内存放大。由于内存限制检查被错误地通过,攻击者可以耗尽服务器内存,导致Node.js进程崩溃,从而实现拒绝服务攻击。

攻击链分析

STEP 1
侦察
识别使用LiquidJS作为模板引擎且启用了memoryLimit选项的Web应用程序。
STEP 2
武器化
构造包含大量重复字符模式的恶意Liquid模板,利用replace过滤器触发内存计算错误。
STEP 3
投递
将包含恶意payload的HTTP请求发送至服务器端的模板渲染接口。
STEP 4
利用
服务器解析模板,replace过滤器绕过内存限制检查,分配超出预期的内存资源(约2500倍放大)。
STEP 5
影响
服务器内存耗尽(OOM),导致Node.js进程崩溃或服务不可用(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-34166: LiquidJS Memory Limit Bypass // Requires LiquidJS < 10.25.3 const { Liquid } = require('liquidjs'); // Initialize engine with a memory limit (e.g., 10MB) const engine = new Liquid({ memoryLimit: 10 * 1024 * 1024 }); // Construct a template that triggers quadratic memory expansion // The 'repeat' filter creates a long string, and 'replace' processes it const templateStr = ` {% assign base = "a" %} {% assign large_str = base | repeat: 50000 %} {{ large_str | replace: "a", "a" }} `; engine.parseAndRender(templateStr) .then(() => console.log("Rendered successfully (unexpected)")) .catch(err => console.error("Error (likely OOM):", err.message));

影响范围

LiquidJS < 10.25.3

防御指南

临时缓解措施
如果无法立即升级,建议禁用LiquidJS的memoryLimit选项(虽然这会移除保护层,但避免了误判导致的隐患,需配合容器级内存限制使用),或者在应用层面对输入字符串的长度和替换操作的频率进行严格的预检查。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表