每周下載量超 300 萬次的 NPM 包存在嚴(yán)重漏洞,已影響眾多 Node.js 應(yīng)用
"pac-resolver" 是一個(gè)非常受歡迎的 NPM 軟件包,通過查詢可以發(fā)現(xiàn)該軟件包每周的下載量超過 300 萬次,在 GitHub 上有 28.5 萬個(gè)公共依賴倉庫。近日該軟件包開發(fā)者推出了一個(gè)漏洞修復(fù)補(bǔ)丁,以解決一個(gè)可能影響很多 Node.js 應(yīng)用程序的遠(yuǎn)程代碼執(zhí)行漏洞(RCE)。
開發(fā)人員 Tim Perry 本周披露了 pac-resolver 依賴關(guān)系中的一個(gè)高危漏洞,他指出,只要操作者試圖發(fā)送 HTTP 請(qǐng)求,它就可能允許本地網(wǎng)絡(luò)上的攻擊者在 Node.js 進(jìn)程中遠(yuǎn)程運(yùn)行惡意代碼。Note.js 是知名的 JavaScript 運(yùn)行時(shí)環(huán)境,可用于運(yùn)行基于 JavaScript 的網(wǎng)絡(luò)應(yīng)用。
該漏洞的 CVE ID 為 CVE-2021-23406,該漏洞與 pac-resolver 處理 PAC 文件的方式有關(guān)。PAC 或 Proxy-Auto Config 是指用 JavaScript 編寫的 PAC 文件,用于分發(fā)復(fù)雜的代理規(guī)則,指示 HTTP 客戶端對(duì)給定的主機(jī)使用哪個(gè)代理,這些文件在企業(yè)系統(tǒng)中被廣泛使用。它們從本地網(wǎng)絡(luò)服務(wù)器和遠(yuǎn)程服務(wù)器上分發(fā),通常是通過不安全的 HTTP 分發(fā)而不是 HTTPS。
雖然 PAC 標(biāo)準(zhǔn)最初于 1996 年作為 Netscape Navigator 2.0 的一部分推出,但至今仍在 Amazon Web Services(CDK)、Mailgun SDK 和 Google Firebase CLI 中得到廣泛運(yùn)用。
它影響到任何在 Node.js 應(yīng)用程序中依賴 Pac-Resolver 5.0.0 版本之前的開發(fā)者。如果開發(fā)人員做了以下三種配置,那么漏洞就會(huì)對(duì)你的項(xiàng)目產(chǎn)生影響:
- 明確使用 PAC 文件進(jìn)行代理配置
- 在啟用 WPAD 的系統(tǒng)上,讀取并使用 Node.js 中的操作系統(tǒng)代理配置
- 使用來自任何其他不受信任來源的代理配置(環(huán)境變量、配置文件、遠(yuǎn)程配置端點(diǎn)、命令行參數(shù))
在上述任何一種情況下,攻擊者都可以通過配置一個(gè)惡意的 PAC URL,并在使用代理配置發(fā)送 HTTP 請(qǐng)求時(shí)在你的計(jì)算機(jī)上遠(yuǎn)程運(yùn)行任意代碼。
目前該漏洞已在 pac-resolver v5.0.0 版本中被修復(fù)了。由于 pac-resolver 的下載量極大,并且廣泛應(yīng)用于各類項(xiàng)目,這意味著很多 Node.js 應(yīng)用程序的開發(fā)者都有可能受到該漏洞的影響,建議各位開發(fā)者仔細(xì)檢查一下自己的項(xiàng)目,并確保更新到 5.0.0 版本以修復(fù)該問題。