CVE-2026-33672Picomatch是一个JavaScript glob匹配器。在特定版本之前,由于POSIX_REGEX_SOURCE对象继承自Object.prototype,攻击者可利用特制的POSIX括号表达式(如[[:constructor:]])引用继承方法名。这些方法被隐式转换为字符串并注入生成的正则表达式,导致glob匹配行为错误,可能绕过基于文件名的过滤或访问控制逻辑。
该漏洞源于Picomatch库中`POSIX_REGEX_SOURCE`对象的实现机制。该对象默认继承自`Object.prototype`,因此包含了JavaScript对象原型上的所有方法(如constructor, toString等)。当用户传入包含POSIX字符类的glob模式(例如`[[:constructor:]]`)时,库未能正确过滤,直接将`constructor`等关键字作为正则表达式的一部分进行拼接。由于这些方法在被转换为字符串时通常返回函数源码(如`function Object() { [native code] }`),而非预期的字符类定义,导致生成的正则表达式逻辑发生改变。虽然攻击者无法直接执行远程代码(RCE),但这种不匹配会导致应用程序在文件过滤、验证或访问控制时产生逻辑错误,可能匹配到本应被排除的文件,从而造成安全隐患。