IPBUF安全漏洞报告
English
CVE-2026-33285 CVSS 7.5 高危

CVE-2026-33285 LiquidJS内存限制绕过致拒绝服务漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

拒绝服务DoSLiquidJS资源耗尽Node.js

漏洞概述

LiquidJS 是一个兼容 Shopify/GitHub Pages 的纯 JavaScript 模板引擎。在 10.25.1 版本之前,其 `memoryLimit` 安全机制存在严重缺陷,允许通过反向范围表达式(如 `(100000000..1)`)完全绕过。攻击者利用该漏洞可强制分配无限内存,若结合字符串扁平化操作(如 `replace` 过滤器),将触发 V8 致命错误导致 Node.js 进程崩溃,从而实现无需认证的远程拒绝服务攻击。

技术细节

该漏洞源于 LiquidJS 的 `memoryLimit` 安全机制未能正确处理反向范围表达式。在受影响版本中,系统仅对正向范围进行资源限制,而攻击者构造类似 `(100000000..1)` 的反向范围时,可成功绕过该限制,强制 Node.js 进程分配超出预期的内存空间。当这种未受限制的内存分配与 `replace` 等字符串扁平化过滤器结合使用时,V8 引擎无法处理巨大的内存请求,从而抛出致命错误(Fatal Error)并终止进程。由于攻击向量为网络(AV:N),且无需用户交互(UI:N)和权限(PR:N),远程攻击者仅需发送一个包含恶意模版语法的 HTTP 请求,即可导致目标服务彻底瘫痪,对业务连续性造成严重影响。

攻击链分析

STEP 1
步骤1:构造Payload
攻击者构造包含反向范围表达式(如 (100000000..1))和字符串处理过滤器(如 replace)的恶意 Liquid 模板代码。
STEP 2
步骤2:发送请求
攻击者将包含恶意 Payload 的数据通过 HTTP 请求发送至运行了受影响版本 LiquidJS 的服务器。
STEP 3
步骤3:绕过限制
服务器端 LiquidJS 引擎解析模板,由于漏洞存在,反向范围表达式成功绕过了 memoryLimit 的安全检查。
STEP 4
步骤4:耗尽资源
系统尝试分配巨大的内存空间以处理范围和字符串操作,导致 V8 引擎触发 OOM 或 Fatal Error。
STEP 5
步骤5:服务崩溃
Node.js 进程崩溃,导致应用程序拒绝服务,无法响应后续请求。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
{%- comment -%} PoC for CVE-2026-33285 {%- endcomment -%} {%- assign huge_range = (100000000..1) -%} {{ huge_range | replace: '0', '0' }}

影响范围

LiquidJS < 10.25.1

防御指南

临时缓解措施
如果无法立即升级,建议对用户提交的模板内容进行严格的输入验证,限制字符长度;或者在沙箱环境中运行 LiquidJS,限制进程的内存使用量,以防止主机崩溃。

参考链接

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