CVE-2026-40931Node.js的compressing库在2.1.1和1.10.5之前的版本中存在路径穿越漏洞。该漏洞是由于对CVE-2026-24884的修复仅依赖字符串逻辑验证,未考虑实际文件系统状态。攻击者可利用预先存在的符号链接(目录投毒)绕过安全检查,导致任意文件写入风险。
该漏洞的核心在于`isPathWithinParent`工具函数存在逻辑缺陷。在受影响版本中,修复补丁仅通过字符串比较来验证解压路径是否位于目标目录内,即检查路径字符串是否以目标目录字符串开头。然而,这种纯逻辑验证忽略了文件系统的实际物理状态。攻击者可以利用“目录投毒”技术,在解压操作开始前,在解压目标目录中预先放置符号链接。由于符号链接在未解析的情况下看起来是合法的子路径,安全检查被绕过。当解压过程实际发生时,文件操作会跟随符号链接,导致文件被写入到预期目录之外的任意位置。这种“逻辑与物理”路径的差异使得攻击者无需用户交互和认证即可在本地实现任意文件写入,从而危及机密性、完整性和可用性。