微軟和北卡羅來納州立大學去年合作開展了一個,研究人員通過分析上傳到 的大約 163 萬個庫的後設資料,發現數千名 JavaScript 開發者正在使用域名過期的郵箱作為其 npm 帳戶,從而導致他們託管在 npm 的專案會輕易被劫持。
,npm 上所有使用者的郵件地址都是公開的。通過請求個人資料頁面即可返回郵件地址:
npm 是最大的 JavaScript 軟體包倉庫。研究人員發現 2818 名專案維護者的帳戶仍在使用域名過期的郵箱地址,而部分過期的域名正在 GoDaddy 等網站上出售。因此研究人員認為,攻擊者可通過購買已過期的域名,然後在郵件伺服器上重新註冊這些維護者的地址,從而實現重置維護者的帳戶密碼並接管 npm 軟體包。
下面的圖片展示了一名開發者嘗試接管軟體包(維護者是)併成功「劫持」的過程:
0. 首先是獲取帳戶的註冊郵件地址:carlo[@]machina.bio
1. 購買已過期的域名:machina.bio
2. 通過域名接管了帳戶的郵件地址後,嘗試重置密碼:
此步驟遭遇了一些問題,但開發者通過聯絡技術支援得到解決:
最後成功重置了軟體包維護者的帳戶密碼:
登入併成功接管專案:
研究人員表示,他們在研究報告發布前將其研究結果傳送給了 npm 安全團隊,雖然對方沒有反饋,但在研究報告正式釋出前,npm 了逐步為開發者帳戶強制執行 2FA(雙因素認證)的計劃。