CVE-2025-66202CVE-2025-66202是Astro web框架中的一个身份验证绕过漏洞。Astro是一个流行的用于构建网站的web框架,广泛应用于现代Web开发。该漏洞源于中间件对URL路径的验证检查存在缺陷,允许攻击者通过双重URL编码技术绕过基于路径的身份验证机制。具体来说,当Astro中间件检查请求路径是否匹配受保护路由时,如果使用单次解码进行比较,攻击者可以通过发送双重编码的URL(如/admin%252Fdashboard)来绕过检查。这是因为第一次解码后变成%2Fadmin%2Fdashboard,第二次解码才变成/admin/dashboard,而中间件可能只执行了一次解码,导致绕过成功。虽然原始漏洞CVE-2025-64765已在v5.15.8中修复,但该修复不充分,仍存在双重编码绕过风险。攻击者无需任何认证即可利用此漏洞访问受保护的路由,可能导致敏感数据泄露或未授权操作。
该漏洞的核心问题在于Astro中间件的身份验证检查机制。当开发者使用基于路径的检查来保护某些路由时,中间件会验证请求的pathname是否匹配受保护的路径模式。然而,由于URL编码的特性,相同的路径可以有多种表示方式。正规路径:/admin/dashboard一次编码:%2Fadmin%2Fdashboard二次编码:%252Fadmin%252Fdashboard当攻击者发送双重编码的URL请求时,中间件可能只执行一次URL解码操作。例如,如果中间件检查pathname === '/admin/dashboard',但实际接收到的是'%2Fadmin%2Fdashboard'(单次编码),那么直接比较会失败。但如果中间件使用decodeURIComponent()进行一次解码后比较,'%2Fadmin%2Fdashboard'会变成'/admin/dashboard',这样就能通过检查。攻击者利用这个逻辑差异,通过发送双重编码的URL('%252Fadmin%252Fdashboard'),经过一次解码后变成'%2Fadmin%2Fdashboard',这个字符串不匹配'/admin/dashboard',从而绕过验证。修复方案需要对URL进行递归解码,直到URL不再变化,确保最终解码结果与预期路径完全匹配。