微軟和北卡羅萊納州立大學的研究人員在2021年分析了上傳到 npm 上的 1630101 個庫的後設資料。結果發現,數以千計的 JavaScript 開發者賬戶,正在使用域名已過期的電子郵件地址,意味著他們的專案很容易被劫持。在 2818 名專案維護者使用的電子郵件地址中,某些已過期的域名已掛在 GoDaddy 等網站上待售。

NPM 是“節點包管理器”(Node Package Manager)的縮寫

研究人員指出,別有用心的攻擊者可購買這些域名,在其電子郵件伺服器上重新註冊維護者的地址,然後重置維護者的賬戶密碼、以接管受害者的 npm 包。

這類攻擊得逞的隱患很大,因為 npm 門戶不會對賬戶所有者強制執行 2FA 雙因素身份驗證。意味著一旦被攻擊者重置密碼,他們就可肆意篡改相關軟體包。

共計 2818 個維護者賬戶在管理 8494 個包,其中平均有 2.43 個直接依賴項,表明特定攻擊可波及數以萬計的其它下游專案。

所有者可能會覺察到其賬戶被劫持,但考慮到許多 npm 庫和賬戶要麼長期被冷落(高達 58.7% 未得到維護)、要麼就是已被遺棄(44.3%),情況並不容樂觀。

研究團隊將它們的發現通報給了 npm 安全團隊,但並未說明對方給出了怎樣的回應。

截止 The Record 發稿時,發給 npm 上屬的 GitHub 的電子郵件,暫未看到退件回執。

慶幸的是,在研究結果於 2021 年 12 月釋出的前幾天,npm 已宣佈一項新計劃,聲稱要逐漸讓開發者賬戶強制執行雙因素身份驗證。

該過程將分多個階段進行,且本月初註冊的前百名維護者賬戶都已落實 2FA 方案。欲知詳情,還請翻閱《npm 供應鏈中的薄弱環節》一文。

以下是研究團隊的一些其它發現:

● 33249 個軟體包(2.2%)使用了安裝指令碼,或被濫用於執行惡意命令、且違反 npm 的最佳安全實踐。

● 排名前 1% 的軟體包(14941 個),平均有 32.4 名維護者 —— 這為針對不活躍 / 疏於照顧的開發者賬戶進行的攻擊敞開了大門。

● 389 個軟體包,平均有 40 名貢獻者 —— 這為意外植入的安全漏洞、或讓專案充斥潛在惡意程式碼而留下了隱患。

● 前 1% 維護者,平均管理著 180.3 個軟體包;而直接依賴的包數量,平均為 4010 個 —— 意味著某些開發者可能可能過勞,或沒有太多精力來徹底維護或審查軟體包的變更。

自 cnBeta.COM