Node.js 高危漏洞警報(CVE-2025-23166):可導致遠程系統崩潰
Node.js團隊近日發布重要安全公告,針對24.x、23.x、22.x和20.x版本系列推出關鍵更新。這些補丁修復了從低危到高危的一系列安全漏洞。
異步加密操作可能導致進程崩潰(CVE-2025-23166)
最嚴重的是一個被評定為"高危"的漏洞,涉及異步加密操作中的錯誤處理不當問題。公告指出:"當在后臺線程執行時,C++方法SignTraits::DeriveBits()可能基于用戶提供的輸入錯誤地調用ThrowException(),導致Node.js進程崩潰。"這尤其令人擔憂,因為"此類加密操作通常應用于不受信任的輸入,因此攻擊者可能利用此機制遠程使Node.js運行時崩潰。"
該漏洞影響所有活躍版本系列的用戶:20.x、22.x、23.x和24.x。成功利用此漏洞可能導致Node.js進程崩潰,造成拒絕服務,進而使關鍵服務中斷。
llhttp中的HTTP頭部解析漏洞(CVE-2025-23167)
接下來是一個被評定為"中危"的漏洞,涉及Node.js使用的HTTP解析器llhttp中的HTTP頭部塊終止不當問題。公告稱:"Node.js 20的HTTP解析器存在缺陷,允許使用\r\n\rX而非要求的\r\n\r\n來終止HTTP/1頭部。"這種看似微小的不一致性具有重大影響:"這種不一致性可能導致請求走私,使攻擊者能夠繞過基于代理的訪問控制并提交未經授權的請求。"
該漏洞特別影響運行llhttp v9之前版本的Node.js 20.x用戶。繞過代理控制的能力可能導致未經授權的訪問,并可能暴露敏感信息或內部系統。該問題已通過將llhttp升級至版本9得到修復,新版本現在強制執行正確的頭部終止。
文件讀取操作中的指針損壞問題(CVE-2025-23165)
最后是一個被評定為"低危"的問題,涉及當第一個參數(args[0])為字符串時,node::fs::ReadFileUtf8函數中的指針損壞問題。公告詳細說明:"在Node.js中,由于uv_fs_s.file中的指針損壞,ReadFileUtf8內部綁定會泄漏內存:分配了UTF-16路徑緩沖區,但在設置文件描述符時被覆蓋。"其后果是"每次調用都會造成不可恢復的內存泄漏。"隨著時間的推移,"重復使用可能導致內存無限增長,最終造成拒絕服務。"
此內存泄漏影響Node.js v20和v22版本系列中依賴ReadFileUtf8的API。雖然評級為低危,但持續的內存泄漏最終會降低性能,并通過耗盡系統內存導致拒絕服務。
立即行動:下載并更新
為降低風險,建議用戶盡快更新至以下最新修補版本:
- Node.js v20.19.2
- Node.js v22.15.1
- Node.js v23.11.1
- Node.js v24.0.2