Node.js 项目发布安全更新,修复多项漏洞。官方特别提醒,CVE-2025-59466 漏洞在启用特定异步追踪机制时,可能导致栈溢出错误无法被正常处理,从而引发进程异常退出,造成拒绝服务(DoS)风险,影响范围涵盖 React、Next.js 或引入应用性能监控工具(APM)的服务。
Node.js 安全公告指出,当启用 async_hooks 相关追踪机制时,若发生调用栈耗尽,错误可能无法进入常规异常处理流程,甚至连 uncaughtException 这类未捕获异常事件也可能不会触发,导致程序直接崩溃。如果应用程序存在由外部输入驱动递归深度的逻辑,例如处理高度嵌套的 JSON 数据,就可能被单个请求触发栈溢出,致使服务整体中断或反复重启。
Node.js 明确指出常见的触发场景:React 服务端组件与 Next.js 经常使用 AsyncLocalStorage 来保存同一请求或渲染流程的上下文信息,使数据能够在多个异步步骤间持续传递。而在 Node.js 20 和 22 等版本中,AsyncLocalStorage 基于 async_hooks 实现,因此更容易满足该漏洞的触发条件。此外,许多 APM 工具也通过 AsyncLocalStorage 或直接调用 async_hooks.createHook 来串联跨异步边界的追踪信息,导致大量应用因引入监控功能而被动启用了相关机制。
由于从 Node.js 24 开始,AsyncLocalStorage 改为基于 V8 引擎的 AsyncContextFrame 实现,不再内部启用 async_hooks.createHook,因此仅使用 AsyncLocalStorage 的 React 和 Next.js 应用通常不会触发该漏洞。但若 APM 或依赖包直接调用了 async_hooks.createHook,栈溢出仍可能变得无法捕获,进而引发崩溃,因此本次安全更新同样覆盖 24.x 和 25.x 版本。
本次安全更新还修复了其他中高危问题。Node.js 针对 25.x、24.x、22.x 和 20.x 版本共修复了 3 项高危、4 项中危和 1 项低危漏洞,并同步升级依赖组件 c-ares 至 1.34.6,同时将 undici 更新至 6.23.0 或 7.18.0,以修复已公开的安全漏洞。官方提醒,已停止支持的版本在安全更新期间通常也被视为受影响,但实际建议用户优先使用仍受官方支持的版本。
在高危漏洞中,包括使用 vm 模块的 timeout 选项时,缓冲区分配可能因竞争条件导致内存未清零,使 Buffer.alloc 或 Uint8Array 等类型数组暴露之前残留的数据,带来敏感信息泄露或数据损坏风险,编号为 CVE-2025-55131。此外,CVE-2025-55130 涉及 Node.js 权限模型可被特制的符号链接路径绕过,从而突破文件读写限制。本批高危漏洞还包括 HTTP/2 服务器在收到畸形的 HEADERS 帧时,可能触发未妥善处理的 TLSSocket 错误,导致进程崩溃,形成远程拒绝服务攻击,编号为 CVE-2025-59465。