攻擊者使用NPM注(Node.js包管理注冊(cè)表)上的crossenv惡意軟件竊取開發(fā)人員的憑證,這起攻擊活動(dòng)在38個(gè)惡意NPM包被刪除后得以停止。
開發(fā)人員會(huì)定期添加JavaScript代碼至Node.js應(yīng)用程序,以實(shí)現(xiàn)最常用的功能,因此開發(fā)人員本身不必編寫代碼。
NPM首席技術(shù)官希杰·西爾韋里奧周三發(fā)布博文指出,7月19日至7月31日,用戶“hacktask”發(fā)布一系列與現(xiàn)存NPM包相似的域名實(shí)施“誤植域名”(Typosquatting)攻擊。
E安全百科:
1、NPM
全稱是 Node Package Manager,npm為JavaScript開發(fā)者提供了一個(gè)分享代碼的方式,同時(shí)也能夠?yàn)殚_發(fā)者提供一個(gè)在他們項(xiàng)目中重用代碼的方式。
2、“誤植域名”(Typosquatting)攻擊
Typosquatting也被稱為:URL劫持(URL hijacking),是一種域名搶注和品牌劫持形式,針對(duì)是在Web瀏覽器輸入網(wǎng)址時(shí)出現(xiàn)拼寫錯(cuò)誤的網(wǎng)絡(luò)用戶(例如將Google.com誤打成“Gooogle.com”)。
西爾韋里奧表示,在過去,這種攻擊較為偶然。他們很少看到有人故意誤植域名與現(xiàn)存包競(jìng)爭(zhēng)。而這次,包命名既為故意之舉,也是惡意行為,其意圖在于收集被騙用戶的數(shù)據(jù)。
瑞典開發(fā)人員奧斯卡·波爾姆斯頓在包中發(fā)現(xiàn)惡意軟件“crossenv”,其專門用來欺騙用戶搜索cross-env---設(shè)置環(huán)境變量的熱門腳本。
波爾姆斯頓在接受媒體電話采訪時(shí)表示,由于環(huán)境變量是將憑證傳遞至軟件的常用方式,因此環(huán)境變量是相當(dāng)不錯(cuò)的選擇。
除此之外,環(huán)境變量能用來存儲(chǔ)賬戶名稱、密碼、令牌和為應(yīng)用程序、云服務(wù)和API提供訪問權(quán)的密鑰。
這種情況下,crossenv惡意軟件試圖復(fù)制受害者設(shè)備上的任何環(huán)境變量集合,并將其傳輸至攻擊者在npm.hacktask.net控制的服務(wù)器。
Crossenv使用的JSON配置文件運(yùn)行名為package-setup.js的腳本,這個(gè)腳本允許將現(xiàn)有環(huán)境變量轉(zhuǎn)換成字符串,之后通過POST請(qǐng)求發(fā)送數(shù)據(jù)。
西爾韋里奧表示,hacktask提交的38個(gè)包已從npm移除。她指出,Lift Security公司掃描了具有相同包設(shè)置代碼的npm包,但未發(fā)現(xiàn)其它實(shí)例。
npm遭遇“誤植域名”攻擊長(zhǎng)達(dá)2周-E安全
西爾韋里奧對(duì)攻擊效果表示懷疑。她表示,誤植域名結(jié)果被證明不是將惡意軟件植入該注冊(cè)表的最有效方式,用戶趨向于搜索或復(fù)制粘貼發(fā)布的代碼。
39個(gè)與hacktask有關(guān)的npm包中,大多數(shù)自7月中旬以來下載量為40左右,排除因好奇心驅(qū)使的下載,而crossenv惡意包最大的下載量為700。但大多數(shù)這些包是npm鏡像服務(wù)器觸發(fā)的自動(dòng)下載。
babelcli: 42
cross-env.js: 43
crossenv: 679
d3.js: 72
fabric-js: 46
ffmepg: 44
gruntcli: 67
http-proxy.js: 41
jquery.js: 136
mariadb: 92
mongose: 196
mssql-node: 46
mssql.js: 48
mysqljs: 77
node-fabric: 87
node-opencv: 94
node-opensl: 40
node-openssl: 29
node-sqlite: 61
node-tkinter: 39
nodecaffe: 40
nodefabric: 44
nodeffmpeg: 39
nodemailer-js: 40
nodemailer.js: 39
nodemssql: 44
noderequest: 40
nodesass: 66
nodesqlite: 45
opencv.js: 40
openssl.js: 43
proxy.js: 43
shadowsock: 40
smb: 40
sqlite.js: 48
sqliter: 45
sqlserver: 50
tkinter: 45
西爾韋里奧預(yù)計(jì),crossenv惡意包暴露期間,約有50人下載。她未發(fā)現(xiàn)任何開發(fā)人員報(bào)告因這起事件引發(fā)的賬號(hào)盜用情況。
Hacktask賬號(hào)已被禁用,但該賬號(hào)的用戶身份尚未被揭開。
當(dāng)被問及npm是否采取措施防止其它人使用不同的賬號(hào)實(shí)施類似的攻擊,西爾韋里奧承認(rèn),這種攻擊可能不會(huì)立即被發(fā)現(xiàn)。
西爾韋里奧在博文中表示,npm公司正在調(diào)查識(shí)別包中名稱相似的問題,以防止未來發(fā)生誤植域名攻擊。npm還與安全公司Smyte合作檢測(cè)公布在注冊(cè)表中的垃圾包---很顯然,某人發(fā)布垃圾包,是希望搜索引擎將README文件編入索引,從而提升網(wǎng)站搜索排名。
開發(fā)人員杰夫·安德魯斯2016曾表示,他自己就在使用Node.js/npm,但如何保證安全?他給出的無法是“不能”!