去年,微軟和北卡羅萊納州立大學(xué)的研究人員,分析了上傳到 npm 上的 1630101 個(gè)庫的元數(shù)據(jù)。結(jié)果發(fā)現(xiàn),數(shù)以千計(jì)的 JavaScript 開發(fā)者賬戶,正在使用域名已過期的電子郵件地址,意味著他們的項(xiàng)目很容易被劫持。在 2818 名項(xiàng)目維護(hù)者使用的電子郵件地址中,某些已過期的域名已掛在 GoDaddy 等網(wǎng)站上待售。
NPM 是“節(jié)點(diǎn)包管理器”(Node Package Manager)的縮寫
研究人員指出,別有用心的攻擊者可購(gòu)買這些域名,在其電子郵件服務(wù)器上重新注冊(cè)維護(hù)者的地址,然后重置維護(hù)者的賬戶密碼、以接管受害者的 npm 包。
這類攻擊得逞的隱患很大,因?yàn)?npm 門戶不會(huì)對(duì)賬戶所有者強(qiáng)制執(zhí)行 2FA 雙因素身份驗(yàn)證。意味著一旦被攻擊者重置密碼,他們就可肆意篡改相關(guān)軟件包。
共計(jì) 2818 個(gè)維護(hù)者賬戶在管理 8494 個(gè)包,其中平均有 2.43 個(gè)直接依賴項(xiàng),表明特定攻擊可波及數(shù)以萬計(jì)的其它下游項(xiàng)目。
所有者可能會(huì)覺察到其賬戶被劫持,但考慮到許多 npm 庫和賬戶要么長(zhǎng)期被冷落(高達(dá) 58.7% 未得到維護(hù))、要么就是已被遺棄(44.3%),情況并不容樂觀。
研究團(tuán)隊(duì)將它們的發(fā)現(xiàn)通報(bào)給了 npm 安全團(tuán)隊(duì),但并未說明對(duì)方給出了怎樣的回應(yīng)。
截止 The Record 發(fā)稿時(shí),發(fā)給 npm 上屬的 GitHub 的電子郵件,暫未看到退件回執(zhí)。
慶幸的是,在研究結(jié)果于 2021 年 12 月發(fā)布的前幾天,npm 已宣布一項(xiàng)新計(jì)劃,聲稱要逐漸讓開發(fā)者賬戶強(qiáng)制執(zhí)行雙因素身份驗(yàn)證。
該過程將分多個(gè)階段進(jìn)行,且本月初注冊(cè)的前百名維護(hù)者賬戶都已落實(shí) 2FA 方案。欲知詳情,還請(qǐng)翻閱《npm 供應(yīng)鏈中的薄弱環(huán)節(jié)》一文。
以下是研究團(tuán)隊(duì)的一些其它發(fā)現(xiàn):
● 33249 個(gè)軟件包(2.2%)使用了安裝腳本,或被濫用于執(zhí)行惡意命令、且違反 npm 的最佳安全實(shí)踐。
● 排名前 1% 的軟件包(14941 個(gè)),平均有 32.4 名維護(hù)者 —— 這為針對(duì)不活躍 / 疏于照顧的開發(fā)者賬戶進(jìn)行的攻擊敞開了大門。
● 389 個(gè)軟件包,平均有 40 名貢獻(xiàn)者 —— 這為意外植入的安全漏洞、或讓項(xiàng)目充斥潛在惡意代碼而留下了隱患。
● 前 1% 維護(hù)者,平均管理著 180.3 個(gè)軟件包;而直接依賴的包數(shù)量,平均為 4010 個(gè) —— 意味著某些開發(fā)者可能可能過勞,或沒有太多精力來徹底維護(hù)或?qū)彶檐浖淖兏?/p>
(舉報(bào))