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