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