现在已推出针对 Node.js 25.x、24.x、22.x 和 20.x 版本系列的更新,以解决以下问题:
本次安全更新包含以下依赖项更新,以解决公开存在的漏洞:
Node.js 的缓冲区分配逻辑存在缺陷,当使用vm带有超时选项的模块时,如果分配操作被中断,则可能暴露未初始化的内存。在特定的时间条件下,使用 buffer.setBuffersBuffer.alloc或其他TypedArray类似方法分配的缓冲区Uint8Array可能包含先前操作遗留的数据,从而导致进程内密钥(例如令牌或密码)泄露或数据损坏。
虽然漏洞利用通常需要精确的时间控制或进程内代码执行,但当不受信任的输入影响工作负载和超时时,它也可能变得可远程利用,从而导致潜在的机密性和完整性影响。
影响:
感谢 Nikita Skovoroda 报告并修复此漏洞。
Node.js 权限模型的一个缺陷允许攻击者利用精心构造的相对符号链接路径绕过--allow-fs-read权限--allow-fs-write 限制。通过链接目录和符号链接,即使脚本仅被授予当前目录的访问权限,也能绕过允许的路径并读取敏感文件。这破坏了预期的隔离保证,使用户能够任意读写文件,从而可能导致系统被入侵。
影响:
感谢 natann 报告此漏洞,也感谢 RafaelGSS 修复了它。
HTTP/2 HEADERS 包含过大或无效数据的格式错误帧 HPACK 会导致 Node.js 崩溃,因为它会触发未处理的 TLSSocket错误 ECONNRESET。进程不会安全地关闭连接,而是直接崩溃,从而导致远程拒绝服务攻击。这主要影响那些没有为安全套接字附加显式错误处理程序的应用程序,例如:
jsserver.on('secureConnection', socket => {
socket.on('error', err => {
console.log(err);
});
});
影响:
感谢 dantt 报告此漏洞,也感谢 RafaelGSS 修复了它。
我们发现 Node.js 错误处理机制存在一个漏洞,async_hooks.createHook()启用该机制后,“超出最大调用堆栈大小”错误将无法捕获。process.on('uncaughtException')进程不会到达指定位置,而是直接终止,导致崩溃无法恢复。依赖于AsyncLocalStorage(v22, v20) 或async_hooks.createHook()(v24, v22, v20) 的应用程序在特定条件下容易受到由深度递归触发的拒绝服务攻击。
影响:
感谢 Andrew MacPherson (AndrewMohawk) 发现此漏洞,感谢 aaron_vercel 报告此漏洞,感谢 mcollina 修复此漏洞。
Node.js 的 OpenSSL 集成存在内存泄漏问题,当将X.509证书字段转换为 UTF-8 编码而未释放已分配的缓冲区时,就会发生这种情况。当应用程序调用 get_certificate_fields() 方法时socket.getPeerCertificate(true),每个证书字段都会造成内存泄漏,导致远程客户端通过重复建立 TLS 连接不断增加内存占用。随着时间的推移,这可能导致资源耗尽和拒绝服务攻击。
影响:
感谢 giant_anteater 报告此漏洞,也感谢 RafaelGSS 修复了此漏洞。
Node.js 权限模型的一个缺陷允许 Unix 域套接字 (UDS) 连接在--permission启用时绕过网络限制。即使未启用--allow-net该缺陷,攻击者控制的输入(例如 URL 或 socketPath 选项)也可以通过 net、tls 或 undici/fetch 连接到任意本地套接字。这破坏了权限模型的预期安全边界,并允许访问特权本地服务,可能导致权限提升、数据泄露或本地代码执行。
目前,网络权限(--allow-net)仍处于实验阶段。
影响:
感谢 mufeedvh 报告此漏洞,也感谢 RafaelGSS 修复了此漏洞。
Node.js TLS 错误处理机制存在缺陷,远程攻击者可以利用该缺陷在 TLS 服务器使用过程中导致服务器崩溃或资源耗尽 pskCallback。ALPNCallback这些回调函数抛出的同步异常会绕过标准的 TLS 错误处理路径(tlsClientError 和 error),导致进程立即终止或静默的文件描述符泄漏,最终造成拒绝服务攻击。由于这些回调函数会在 TLS 握手期间处理攻击者控制的输入,因此远程客户端可以反复触发此问题。
影响:
感谢 0xmaxhax 报告此漏洞,也感谢 mcollina 修复了此漏洞。
futimes()Node.js 权限模型的一个缺陷允许即使进程只有读取权限,也可以更改文件的访问和修改时间戳。
与此不同utimes(),futimes()它不会应用预期的写入权限检查,这意味着在只读目录中可以修改文件元数据。这种行为可能被用于篡改时间戳,从而掩盖活动,降低日志的可靠性。
影响:
感谢oriotie报告此漏洞,也感谢RafaelGSS修复了它。
Node.js 项目将于 2025 年 12 月 15 日星期一或之后不久发布 25.x、24.x、22.x 和 20.x 版本系列的新版本,以解决以下问题:
影响
Node.js 25.x 系列版本存在 3 个高危漏洞和 1 个低危漏洞。Node.js 24.x 系列版本存在 3 个高危漏洞、1 个低危漏洞和 1 个中危漏洞。Node.js 22.x 系列版本存在 3 个高危漏洞、1 个低危漏洞和 1 个中危漏洞。Node.js 20.x 系列版本存在 3 个高危漏洞、1 个低危漏洞和 1 个中危漏洞。
需要注意的是,当发布安全更新时,已停止支持的版本始终会受到影响。为确保系统安全,请使用我们发布计划中列出的最新版本 。
发布时间
版本将于 2025 年 12 月 15 日星期一或之后不久发布。

