GitHub安全團(tuán)隊(duì)在npm CLI使用的npm包“tar”和“@npmcli/arborist”中發(fā)現(xiàn)了幾個(gè)高危漏洞。
tar包每周平均有2000萬(wàn)次的下載量,而arborist每周的下載量超過(guò)30萬(wàn)次。
這些漏洞既影響Windows用戶,也影響基于unix的用戶,如果不打補(bǔ)丁,攻擊者就可以利用這些漏洞在安裝不受信任的npm包的系統(tǒng)上任意執(zhí)行代碼。
今年7月至8月間,安全研究人員和漏洞賞金獵人Robert Chen和Philip Papurt在開(kāi)源Node.js包、tar和@npmcli/arborist中發(fā)現(xiàn)了任意代碼執(zhí)行漏洞。
發(fā)現(xiàn)這些漏洞后,研究人員通過(guò)GitHub的漏洞賞金程序私下通知了npm。
在進(jìn)一步審查研究人員的報(bào)告后,GitHub安全團(tuán)隊(duì)在上述軟件包中發(fā)現(xiàn)了一些更嚴(yán)重的漏洞,影響基于Windows和unix的系統(tǒng)。
Node.js 包tar仍然是需要在安裝后解壓npm包的安裝程序的核心依賴項(xiàng)。該軟件包還被數(shù)千個(gè)其他開(kāi)源項(xiàng)目使用,因此每周大約有2000萬(wàn)次下載量。arborist包是npm CLI所依賴的核心依賴項(xiàng),用于管理node_modules樹。
對(duì)于使用npm CLI安裝不受信任的npm包或使用“tar”提取不受信任的包的開(kāi)發(fā)人員來(lái)說(shuō),這些ZIP滑位漏洞帶來(lái)了一個(gè)問(wèn)題。
默認(rèn)情況下,npm包以.tar.gz或.tgz文件的形式發(fā)布,它們是類似于zip的歸檔文件,因此需要通過(guò)安裝工具解壓。
理想情況下,提取這些歸檔文件的工具應(yīng)該確保歸檔中的任何惡意路徑不會(huì)覆蓋文件系統(tǒng)上的現(xiàn)有文件,特別是敏感文件。
但是,由于下面列出的漏洞,當(dāng)提取npm包時(shí),可以使用運(yùn)行npm install命令的用戶的權(quán)限覆蓋任意文件:
CVE-2021-32803
CVE-2021-32804
CVE-2021-37701
CVE-2021-37712
CVE-2021-37713
CVE-2021-39134
CVE-2021-39135
GitHub首席安全官M(fèi)ike Hanley解釋說(shuō):“CVE-2021-32804、CVE-2021-37713、CVE-2021-39134和CVE-2021-39135在處理惡意或不受信任的npm包安裝時(shí),會(huì)對(duì)npm CLI產(chǎn)生安全影響。”
其中一些問(wèn)題可能導(dǎo)致任意的代碼執(zhí)行,即使您正在使用—ignore-scripts來(lái)阻止包生命周期腳本的處理。
npm敦促用戶修復(fù)漏洞
9月8日,GitHub旗下的npm也在推特上敦促開(kāi)發(fā)者盡快修復(fù)這些漏洞:
建議操作:根據(jù)最新發(fā)現(xiàn)的" tar "和" @npmcli/arborist "漏洞,我們建議升級(jí)到最新版本的@nodejs 12 / 14 / 16或NPM 6 / 7,并更新您可能對(duì)" tar "的任何依賴。
開(kāi)發(fā)人員應(yīng)該盡快將tar依賴版本升級(jí)到4.4.19、5.0.11或6.1.10,并升級(jí)@npmcli/arborist版本2.8.2以修補(bǔ)漏洞。
對(duì)于npm CLI, 版本 v6.14.15、v7.21.0或更新版本包含修補(bǔ)程序。此外,根據(jù)GitHub的說(shuō)法,Node.js版本12、14或16都帶有固定的tar版本,可以安全地升級(jí)到這個(gè)版本。
開(kāi)源代碼已經(jīng)成為企業(yè)開(kāi)發(fā)不可或缺的一部分,但其中軟件包及代碼的安全性卻無(wú)法確定。據(jù)Synopsis稱,目前84%的代碼庫(kù)至少存在一個(gè)安全漏洞。由于開(kāi)源軟件依賴于第三方代碼鏈,安全團(tuán)隊(duì)通常很難獲得依賴性供應(yīng)鏈的全部可見(jiàn)性,而在那些不易察覺(jué)的地方的任何漏洞都可能導(dǎo)致整個(gè)網(wǎng)絡(luò)受到破壞。
任何企業(yè)都不想遭到網(wǎng)絡(luò)攻擊,但將不安全的代碼引入軟件會(huì)大大增加遭到網(wǎng)絡(luò)攻擊風(fēng)險(xiǎn)。建議企業(yè)在軟件開(kāi)發(fā)過(guò)程中或進(jìn)行DevsecOps建設(shè)時(shí),進(jìn)行靜態(tài)代碼安全檢測(cè)及開(kāi)源代碼安全測(cè)試,以確保自研代碼及開(kāi)源代碼安全,同時(shí)提高軟件安全性降低遭到網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。
參讀鏈接:
www.bleepingcomputer.com/news/securi…