CVE-2025-62595Koa.js是由Express.js团队设计的下一代Node.js Web框架,使用ES2017 async函数实现表达力强大的中间件机制。CVE-2025-62595是Koa.js框架back redirect(返回重定向)功能中存在的一个安全漏洞,该漏洞是对此前CVE-2025-8129修复方案的绕过。
该漏洞影响Koa.js 2.16.2至2.16.3之前版本,以及3.0.1至3.0.3之前版本。攻击者可以通过精心构造Referer请求头,绕过框架对重定向URL的安全检查机制。在特定条件下,Koa.js的错误实现会将某些特殊构造的URL误判为安全的相对路径,从而导致用户的浏览器被重定向到外部的、可能具有恶意目的的网站。
成功利用此漏洞的攻击者可以实施钓鱼攻击、社会工程学攻击或其他基于重定向的攻击活动,对受影响应用程序的用户构成安全威胁。该漏洞已在3.0.3版本中修复,用户应尽快升级到该版本或更高版本以消除安全隐患。CVSS 3.1评分为4.3分,属于中等严重等级,虽然需要用户交互且不涉及认证,但仍然对Web应用的安全性构成实质性威胁。
Koa.js框架提供了ctx.redirect('back')功能,该功能会读取HTTP请求头中的Referer字段,并将用户重定向回来源页面。然而,在CVE-2025-8129的修复中,开发团队对Referer URL进行了安全检查,试图阻止对外部域名的重定向。
CVE-2025-62595正是绕过了这一安全检查。漏洞的根本原因在于URL解析逻辑存在缺陷:当Referer头被设置为类似于`//evil.com/path`或`\\evil.com\path`这样的特殊格式时,Koa.js的URL验证逻辑会将其错误地识别为相对路径(protocol-relative URL),而不是绝对URL,从而绕过安全检查。
攻击者可以通过以下方式利用此漏洞:
1. 攻击者创建一个包含恶意链接的网页或钓鱼邮件,该链接指向目标Koa.js应用。
2. 受害者在浏览器中点击该链接,浏览器向目标应用发送请求,并在Referer头中携带攻击者控制的URL。
3. 目标Koa.js应用中的某个功能调用`ctx.redirect('back')`,将用户重定向到Referer头中指定的恶意URL。
4. 用户的浏览器被重定向到攻击者控制的钓鱼网站,可能被诱导输入敏感信息。
此漏洞利用的关键在于协议相对URL(protocol-relative URL)的处理。形如`//attacker.com`的URL在浏览器中会被解析为完整的绝对URL,但Koa.js的验证逻辑未能正确识别此类URL的外部性质,导致安全检查被绕过。