千万下载量开源软件托管给陌生人 植入恶意代码窃取用户密币
0x00 事件背景
2018年11月21日,名为 FallingSnow的用户在知名JavaScript应用库event-stream在github Issuse中发布了针对植入的恶意代码的疑问,表示event-stream中存在用于窃取用户数字钱包的恶意代码。
360-CERT从该Issuse中得知,大约三个月前,由于缺乏时间和兴趣,event-stream原作者@dominictarr将其开发交给另一位名为@Right9ctrl的程序员。
随后,Right9ctrl发布了包含新依赖关系的Event-Stream 3.3.6 – Flatmap-Stream0.1.1。 其中,Flatmap-Stream v0.1.1 正是是包含恶意代码的npm package。 据分析,该package中的恶意代码主要作用是:它将窃取用户的钱包信息,包括私钥,并将其发送到copayapi.host的8080端口上,目前npm官网已经下架处理。
在实际生产应用中,event-stream库属于一个跨平台的应用,影响面会比较广泛。
360-CERT建议相关用户,特别是互联网企业,应该针对自身IDC线上、研发、办公网环境进行安全评估。
0x01 影响范围
Event-Stream 3.3.6版本
这是一个非常受欢迎的JavaScript库,在npm.org存储库上每周下载量超过200万。
恶意依赖已经存在了2.5个月内未被发现。
9月1日至今已被下载2225w次
npm 已经将恶意的Flatmap-Stream进行下架处理,已经无法从npm中再进行相关的安装,以减小影响。
但已经安装的Event-Stream请及时处理,很有可能已经在遭受影响。
360CERT判断此次事件的影响范围大,危害等级高。建议广大用户及时根据修复建议进行修复和自查。
0x02 修复建议
可以通过如下方式对自己所使用的event-stream进行检测
$ npm ls event-stream flatmap-stream ... flatmap-stream@0.1.1 ...
可以对event-stream进行降级版本到3.3.4以缓解此事件带来的影响
降级方式如下
npm install event-stream@3.3.4
再通过上述命令可以检查是否降级成功
360CERT将在CERT官网随后给出收影响package的相关统计,敬请期待。
0x03 代码分析
根据flatmap-stream/package.json导出的main
"main": "index.min.js",
在这其中有一段index.js所没有的额外代码
这段代码的主要作用翻译如下
解密的n[0]
解密的n[1]
其中
恶意代码主要作用 通过重新覆盖bitcore-wallet-client/lib/credentials.js中getKeysFunc方法进行信息的发送
所使用的信息如下:
发送信息所使用的公钥
"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C\nDXUs/peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj\nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW+/BiGud7b77Fwfq372fUuEIk\n2P/pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762\nPDBMwQsCKQcpKDXw/6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz\nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl/cJ/x76To\n2wIDAQAB\n-----END PUBLIC KEY-----";
发送信息的地址(写死的域名和ip)
域名 copayapi.host IP 111.90.151.134
0x04 时间线
2018-11-21 @FallingSnow在项目Issue中提出问题
2018-11-27 360CERT发布预警报告
2018-11-27 360CERT发布分析报告
0x05 参考链接
黑客植入后门在流行的JavaScript库进行比特币资金窃取
Malicious code found in npm package event-stream downloaded 8 million times in the past 2.5 months | Snyk
I don’t know what to say. · Issue #116 · dominictarr/event-stream
add flat map · dominictarr/event-stream@e316336
npm-stat: event-stream
千万下载量开源软件托管给陌生人 植入恶意代码窃取用户密币相关推荐
- 走过19年,每年千万下载量,科学计算开源库SciPy的前世今生
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:机器之心 每年千万下载量,科学计算开源库 SciPy,你已经是个成熟的小伙伴了. ...
- 微软宣布12月15日关闭开源软件托管平台CodePlex
网易科技讯4月1日消息,据Venturebeat报道,微软今天宣布,将关闭开源软件托管平台CodePlex.微软2006年推出这项服务,并决定在今年12月15日将其关闭. 微软公司副总裁布莱恩·哈里( ...
- 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1
前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...
- Windows系统下基于开源软件的多物理场仿真
Windows系统下基于开源软件的多物理场仿真实践技术应用 随着计算机技术的发展,计算机仿真技术日益成为继实验和理论之后的第三种重要研究和设计手段.真实世界中遇到的问题往往是固体力学,流体力学,热,电 ...
- 技术-经济范式视角下的开源软件演进剖析(五)
点击上方"开源社"关注我们 | 编辑:杨紫琳 | 作者:刘博 | 转载自:华为开发者社区 | 设计:李静雯 如何破解网络外部性 以开源软件为代表的知识.信息经济下垄断与" ...
- 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3
4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...
- Linux下通过开源软件fail2ban进行远程登录防护
一.通过开源软件fail2ban实现防暴力破解: Fail2ban程序可以监视系统日志,匹配日志错误信息执行相应的屏蔽动作,可以通过发送e-mail通知系统管理员 fail2ban就是防暴力破 ...
- 技术-经济范式视角下的开源软件演进剖析(一)
点击上方"开源社"关注我们 | 作者:刘博 | 转载自:华为开发者社区 | 编辑:陈梅梅 | 设计:刘颖洁 | 责编:Corrie 以互联网为代表的信息技术的迅猛发展对整个经济体系 ...
- Windows系统下基于开源软件的多物理场仿真实践技术
目录 专题一:多物理场有限元方法 专题二:前处理 专题三:单物理场举例 专题四:多物理场耦合 专题五:编程进阶 随着计算机技术的发展,计算机仿真技术日益成为继实验和理论之后的第三种重要研究和设计手段. ...
最新文章
- Openstack组件部署 — Nova overview
- Quartz-JobListener解读
- 5G是很快,但也别忘了网络安全问题!
- java继承 子类重写父类方法
- 「干货」编程语言十大经典算法,你知道几个?
- 人工智能相关领域的国际顶尖会议介绍
- easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解
- 电子计算机工作的特征是什么,电子计算机的基本特征是什么?
- PHP极其强大的图片处理库Grafika详细教程(4):图形绘制
- IBM Bluemix 自然语言处理初识
- 摩托android one手机图片,Motorola One都说外观像iPhone,但实际却不一样!
- Python - 进程/线程相关整理
- vs2015安装python3.6.8,windows下安装caffe (cuda10.0,anaconda3,python3.6→python2.7,vs2015→vs2013)...
- Linux下mysql数据恢复
- PHP开发环境搭建:PHP集成环境XAMPP 的安装与配置
- 图解PC CPU发展史
- 跨境支付产品:现钞与现汇
- 大学英语B116-阅读理解
- vue中的prop验证
- 基于云的文档管理软件/文档管理系统(DMS)