在流行的用于构建可扩展 Node.js 应用的 NestJS 框架中,其组件 @nestjs/devtools-integration 包被发现存在严重安全漏洞。该漏洞编号为 CVE-2025-54782,CVSS v4 评分高达 9.4,攻击者仅需诱导开发者访问恶意网站,即可在其本地机器上执行任意代码。
Nest 官方通告指出:“由于沙箱隔离不当且缺乏跨源保护,任何恶意网站访问者均可在开发者本地机器上执行任意代码。”
漏洞源于 devtools 集成启动了一个本地开发 HTTP 服务器并暴露了多个接口,其中最危险的是 /inspector/graph/interact
端点,该接口接受包含代码的 JSON 输入,并使用不安全的 vm.runInNewContext
沙箱执行这些代码。
通告指出:“该沙箱实现与已废弃的 safe-eval 库极为相似……已知的多种沙箱逃逸技术可实现任意代码执行。”
此外,服务器的 CORS 配置也存在缺陷:
-
Access-Control-Allow-Origin
设置为固定域名,但未验证请求实际来源; -
未限制
Content-Type
,允许攻击者通过 HTML 表单或简单 JavaScript 发送text/plain
类型的 POST 请求。
这使得恶意网站能够绕过浏览器安全策略,利用沙箱缺陷直接在开发者机器上执行代码。
攻击流程示例:
-
开发者启动带有 devtools 集成的 NestJS 项目;
-
访问受损或恶意网站;
-
该网站向
http://localhost:<端口>/inspector/graph/interact
发送特制的 POST 请求; -
服务器信任请求并在不安全的沙箱中执行任意 JavaScript 代码;
-
攻击者获得开发者系统的远程控制权。
官方警告称:“由于沙箱极易被逃逸,且该端点接受未经严格校验的跨源 POST 请求,该漏洞允许任意代码执行。”
维护团队已迅速响应,采取以下措施:
-
用更安全的
@nyariv/sandboxjs
替换不安全的沙箱实现; -
增加严格的来源和内容类型验证;
-
引入开发工具连接的身份认证机制。
发表评论
您还未登录,请先登录。
登录