知名 Node.js 組件存在代碼注入漏洞
日前,一個(gè)被大量下載的 Node.js 組件被發(fā)現(xiàn)其含有一個(gè)高危的代碼注入漏洞。
該漏洞被追蹤為 CVE-2021-21315,影響了「systeminformation」npm 組件的安全性,該組件每周的下載量約為 80 萬(wàn)次,自誕生以來(lái),至今已獲得近 3400 萬(wàn)次下載。
漏洞已被修復(fù)
簡(jiǎn)單來(lái)說(shuō),「systeminformation」是一個(gè)輕量級(jí)的 Node.js 組件,開(kāi)發(fā)者可以在項(xiàng)目中加入該組件,以檢索與 CPU、硬件、電池、網(wǎng)絡(luò)、服務(wù)和系統(tǒng)進(jìn)程相關(guān)的系統(tǒng)信息。
該組件的開(kāi)發(fā)者表示:"雖然 Node.js 自帶了一些基本的操作系統(tǒng)信息,但我一直想要獲得更多信息。因此我就寫了這個(gè)小型的組件。這個(gè)組件目前還在開(kāi)發(fā)中。它可以作為一個(gè)后端/服務(wù)器端的組件來(lái)使用的,肯定不會(huì)在瀏覽器內(nèi)工作"。
然而,「systeminformation」中代碼注入漏洞的存在意味著攻擊者可以通過(guò)在組件使用的未初始化參數(shù)內(nèi)小心翼翼地注入有效載荷來(lái)執(zhí)行系統(tǒng)命令。
下圖所示的是「systeminformation」在 5.3.1 版本的修復(fù),在調(diào)用進(jìn)一步的命令之前,會(huì)對(duì)參數(shù)進(jìn)行清理,以檢查它們是否為字符串?dāng)?shù)據(jù)類型,并額外檢查該參數(shù)在任何時(shí)候是否發(fā)生過(guò)原型污染。
「systeminformation」的用戶應(yīng)升級(jí)到 5.3.1 及以上版本,以解決其應(yīng)用程序中的 CVE-2021-21315 漏洞。
變通方法同樣可用
對(duì)于那些項(xiàng)目靈活性不高、無(wú)法升級(jí)到修復(fù)版本的開(kāi)發(fā)者,「systeminformation」項(xiàng)目的發(fā)布者在公告中也分享了一個(gè)可以采用的變通方法。
安全公告中提到:“作為替代升級(jí)的一種變通方法,一定要檢查或清理傳遞給 si.inetLatency()、si.inetChecksite()、si.services()、si.processLoad() 的服務(wù)參數(shù)。只允許字符串,拒絕任何數(shù)組。”
這同樣涉及清理參數(shù)中的任何違規(guī)字符,并正確驗(yàn)證它們是否屬于字符串?dāng)?shù)據(jù)類型。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:知名 Node.js 組件存在代碼注入漏洞
本文地址:https://www.oschina.net/news/131199/heavily-used-nodejs-package-has-a-code-injection-vulnerability