微軟和北卡羅來納州立大學(xué)去年合作開展了一個(gè)學(xué)術(shù)研究項(xiàng)目,研究人員通過分析上傳到Node Package Manager (npm)的大約163萬個(gè)庫的元數(shù)據(jù),發(fā)現(xiàn)數(shù)千名 JavaScript 開發(fā)者正在使用域名過期的郵箱作為其 npm 帳戶,從而導(dǎo)致他們托管在 npm 的項(xiàng)目會(huì)輕易被劫持。
據(jù)稱,npm 上所有用戶的郵件地址都是公開的。通過請(qǐng)求個(gè)人資料頁面即可返回郵件地址:
npm 是最大的 JavaScript 軟件包倉庫。研究人員發(fā)現(xiàn)2818名項(xiàng)目維護(hù)者的帳戶仍在使用域名過期的郵箱地址,而部分過期的域名正在 GoDaddy 等網(wǎng)站上出售。因此研究人員認(rèn)為,攻擊者可通過購買已過期的域名,然后在郵件服務(wù)器上重新注冊(cè)這些維護(hù)者的地址,從而實(shí)現(xiàn)重置維護(hù)者的帳戶密碼并接管 npm 軟件包。
下面的圖片展示了一名開發(fā)者嘗試接管ajv-formats
軟件包(維護(hù)者是additiveamateur
)并成功“劫持”的過程:
0. 首先是獲取帳戶的注冊(cè)郵件地址:carlo[@]machina.bio
1. 購買已過期的域名:machina.bio
2. 通過域名接管了帳戶的郵件地址后,嘗試重置密碼:
此步驟遭遇了一些問題,但開發(fā)者通過聯(lián)系技術(shù)支持得到解決:
最后成功重置了ajv-formats
軟件包維護(hù)者的帳戶密碼:
登錄并成功接管項(xiàng)目:
研究人員表示,他們?cè)谘芯繄?bào)告發(fā)布前將其研究結(jié)果發(fā)送給了 npm 安全團(tuán)隊(duì),雖然對(duì)方?jīng)]有反饋,但在研究報(bào)告正式發(fā)布前,npm宣布了逐步為開發(fā)者帳戶強(qiáng)制執(zhí)行2FA(雙因素認(rèn)證)的計(jì)劃。
(舉報(bào))