攻击者使用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,但如何保证安全?他给出的无法是“不能”!