CVE-2026-33671Picomatch是一个JavaScript编写的全局匹配器。在4.0.4、3.0.2和2.3.2之前的版本中,存在正则表达式拒绝服务漏洞。当处理精心构造的extglob模式时,特别是涉及`+()`和`*()`等量词并结合嵌套或重叠条件时,会导致正则表达式编译出现灾难性回溯。攻击者可利用此漏洞通过不受信任的输入消耗大量CPU资源,阻塞Node.js事件循环,从而造成拒绝服务攻击。
该漏洞的核心在于Picomatch库在解析特定extglob语法时的正则表达式转换逻辑缺陷。当glob模式包含如`+()`(一个或多个)和`*()`(零个或多个)等量词,并且这些量词应用于复杂的嵌套结构或重叠的匹配分支时,生成的正则表达式在处理非匹配输入时会发生“灾难性回溯”。这意味着正则引擎会尝试指数级数量的匹配路径组合以确认失败。由于Node.js基于单线程事件循环,这种计算密集型操作会长时间霸占CPU资源,导致事件循环被阻塞,无法处理其他并发请求。攻击者只需发送一段精心设计的恶意模式字符串,即可使服务器资源耗尽,从而实现拒绝服务攻击。受影响场景主要是允许用户自定义文件匹配规则的应用,如文件上传过滤、路由匹配等。