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