首页 网络安全 正文
  • 本文约2292字,阅读需11分钟
  • 234
  • 0

Vitest API 服务器导致远程代码执行CVE-2025-24964

摘要

栋科技漏洞库关注到Vitest API 服务器正在监听时访问恶意网站会导致远程代码执行,漏洞追踪为CVE-2025-24964,漏洞CVSS评分9.7。

Vitest是一个由Vite驱动的测试框架,旨在将自己定位为 Vite 项目的首选测试框架,即使对于不使用 Vite 的项目也是一个可靠的替代方案。

Vite 天然支持常见的 Web 模式,同时支持 glob 导入和 SSR 等功能,而且拥有许多插件和集成框架,从而慢慢形成一个活跃的生态社区。

一、基本情况

Vitest与应用使用相同配置(通过 vite.config.js ),在开发、构建和测试中共享相同转换流水线提供可扩展的插件AP与Vite进行一流集成。

Vitest 从一开始的时候,就考虑了与 Vite协同工作,因此,充分利用Vite在开发体验方面的改进,比如说即时的热模块重载( HMR )等。

Vitest API 服务器导致远程代码执行CVE-2025-24964

栋科技漏洞库关注到Vitest API 服务器正在监听时访问恶意网站会导致远程代码执行,漏洞追踪为CVE-2025-24964,漏洞CVSS评分9.7。

二、漏洞分析

CVE-2025-24964是Vitest API 服务器某些受影响版本中,当使用Vitest API服务器时访问恶意网站可能遭受远程任意代码执行攻击的漏洞。

CVE-2025-24964漏洞具体分析来说,就是当Vitest 启动时,如果启用`api`选项(Vitest UI会启用它),就会启动一个 WebSocket 服务器。

该WebSocket服务器没有检查Origin标头,也没有任何授权机制,如此的设定,则可能导致受到跨站WebSocket劫持CSWSH攻击的影响。


毕竟,WebSocket服务器具有`saveTestFile` API的权限,不仅可以编辑测试文件,以及`rerun` API,甚至还可以用于重新运行等测试操作。

因此来说,攻击者可通过在测试文件中注入代码,使用`saveTestFile` API保存文件,然后通过调用`rerun` API运行该文件来执行任意代码。

该漏洞可能导致使用Vitest serve API的用户遭受远程代码执行攻击,漏洞已在版本1.6.1、2.1.9和3.0.5中得到修复,建议受影响用户升级。

三、漏洞分析

1、api启用选项(Vitest UI启用)时Vitest启动的Websocket服务器

vitest/packages/vitest/src/api/setup.ts

Lines 32 to 46 in 9a581e1

 server.httpServer?.on('upgrade', (request, socket, head) => { 
   if (!request.url) { 
     return 
   } 

   const { pathname } = new URL(request.url, 'http://localhost') 
   if (pathname !== API_PATH) { 
     return 
   } 

   wss.handleUpgrade(request, socket, head, (ws) => { 
     wss.emit('connection', ws, request) 
     setupClient(ws) 
   }) 
 }) 

2、该Websocket服务器具有可以编辑可以重新运行测试的saveTestFile测试文件和API的API。

rerun攻击者可以通过API在测试文件中注入代码saveTestFile,然后通过调用rerunAPI运行该文件来执行任意代码。

vitest/packages/vitest/src/api/setup.ts

Lines 32 to 46 in 9a581e1

 server.httpServer?.on('upgrade', (request, socket, head) => { 
   if (!request.url) { 
     return 
   } 

   const { pathname } = new URL(request.url, 'http://localhost') 
   if (pathname !== API_PATH) { 
     return 
   } 

   wss.handleUpgrade(request, socket, head, (ws) => { 
     wss.emit('connection', ws, request) 
     setupClient(ws) 
   }) 
 }) 

四、POC概念验证

1、打开vitest UI。

2、访问具有以下脚本的恶意网站。

3、如果在env var中具有calc可执行文件PATH(如果在Windows上运行,则可能拥有它),则该应用程序将被执行。

抱歉访问受限,免费注册为本站会员即可正常访问

五、影响范围

1.0.0 <= Vitest <= 0.0.125,<=1.6.0

2.0.0 <= Vitest <= 2.1.8

3.0.0 <= Vitest <= 3.0.4

六、修复建议

1.6.1 < Vitest < 2.0.0

2.1.9 < Vitest < 3.0.0

Vitest >=3.0.5

七、参考链接

文章回复-路羽博客.png此处内容已隐藏,评论后刷新即可查看!

评论
更换验证码
友情链接