CVE-2026-6321fast-uri 在其 normalize() 和 equal() 函数中存在逻辑缺陷,导致它在应用点段移除操作之前,错误地解码了百分比编码的路径分隔符和点段。这种处理顺序使得编码后的路径数据被当作真实的路径分隔符和父目录引用处理,从而导致不同的 URI 被规范化为相同的路径。攻击者可利用此漏洞绕过应用程序的基于路径的访问控制策略,使原本应被限制在允许前缀下的恶意路径被解析到未授权的位置。
该漏洞的核心在于 fast-uri 处理 URI 路径时的步骤顺序错误。符合规范的处理流程通常是在解码百分比编码之前先进行路径清理或规范化。然而,fast-uri 在受影响版本中,会优先将 `%2f`(斜杠)和 `%2e%2e`(双点)等编码字符解码为其实际字符,随后再执行点段移除。攻击者可以构造如 `http://example.com/allowed/%2e%2e/etc/passwd` 的 URL。当应用程序使用 fast-uri 对此 URL 进行规范化以验证其是否位于 `/allowed` 目录下时,解码后的 `..` 会导致路径跳出限制范围,从而成功绕过安全检查并访问敏感资源。