IPBUF安全漏洞报告
English
CVE-2026-33750 CVSS 6.5 中危

CVE-2026-33750 brace-expansion 拒绝服务漏洞

披露日期: 2026-03-27

漏洞信息

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

相关标签

拒绝服务DoS无限循环brace-expansionNode.jsReDoS

漏洞概述

brace-expansion库在处理特定模式的字符串时存在安全漏洞。当解析器遇到步长值为0的brace模式(例如`{1..2..0}`)时,会导致序列生成循环无限运行。这会使进程持续挂起并分配大量内存,最终引发拒绝服务。该漏洞影响多个旧版本分支,攻击者可通过诱导应用解析恶意字符串来利用此漏洞。官方已发布修复版本,建议用户尽快升级。

技术细节

该漏洞源于brace-expansion库在实现序列展开逻辑时的缺陷。根据源码分析,当库解析类似`{start..end..step}`的模式时,会使用循环来生成中间字符串。在受影响的版本中,代码未对`step`参数是否为0进行校验。当`step`为0时,循环计数器的值无法更新,导致循环终止条件永远无法满足,从而陷入死循环。由于Node.js的单线程特性,这种计算密集型的死循环会完全阻塞事件循环,导致服务无法响应其他请求。此外,随着循环运行,内存消耗会急剧增加,可能导致系统内存耗尽(OOM)。攻击者无需认证,只需控制传递给`expand()`函数的输入即可触发攻击。

攻击链分析

STEP 1
侦察
攻击者确认目标应用程序使用了受影响版本的brace-expansion库来处理用户输入。
STEP 2
构造载荷
攻击者构造包含零步长值的特殊字符串,例如'{1..100..0}'或'{a..z..0}'。
STEP 3
传递载荷
攻击者将恶意字符串通过Web表单、API参数或命令行参数传递给目标应用程序。
STEP 4
触发漏洞
应用程序调用brace-expansion库的expand()函数解析该字符串,导致进入无限循环。
STEP 5
达成影响
目标进程CPU占用率飙升至100%,内存持续增加,服务失去响应能力,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-33750 // This demonstrates the infinite loop vulnerability const expand = require('brace-expansion'); console.log('Starting PoC for CVE-2026-33750...'); // A pattern with a step of 0 causes the infinite loop const maliciousPattern = '{1..10..0}'; console.log(`Expanding pattern: ${maliciousPattern}`); try { // The following call will hang the process and consume memory const result = expand(maliciousPattern); console.log('Result:', result); } catch (e) { console.error('Error occurred:', e); }

影响范围

brace-expansion < 5.0.5
brace-expansion < 3.0.2
brace-expansion < 2.0.3
brace-expansion < 1.1.13

防御指南

临时缓解措施
若无法立即升级,应对传入expand()函数的输入进行严格的净化。使用正则表达式或其他逻辑检测并拒绝包含步长为0的模式(例如检查`..0}`的结构),防止恶意输入触发无限循环。

参考链接

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