热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

又见古老的Typosquatting攻击:这次入侵Npm窃取开发者身份凭证

有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如typosquatting攻击——我们上次看到这种攻击是在去年6月份,这本身也是种

Image有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如typosquatting攻击——我们上次看到这种攻击是在去年6月份,这本身也是种很古老的攻击方式。

所谓的typosquatting,主要是通过用户的拼写错误诱导用户访问或下载某个伪装成合法工具的恶意程序——其核心只在于工具名或文件名和原版很像,比如app1e.com,这种类型的钓鱼就是typosquatting。最近 npm 就遭遇了这种攻击。

有人在 npm 上传了不少恶意包

npm的CTO CJ Silverio在博客上发表了一篇文章提到:7月19日-31日期间,名为hacktask的账户发动了typosquatting攻击,此账户发布了一系列package,名称和npm中比较流行的package类似。

这其实就是typosquatting攻击的精髓。而上面提到的npm其实是node.js的package管理工具。开发人员会封装一些常用功能的代码发布到Node.js上,这样其他的人员就可以复用类似功能的代码,而不必重新造轮子。

Silverio在博客中说,这些package的命名绝对是故意、恶意的,目的就是为了欺骗用户,并最终收集到用户数据。好在hacktask发布的所有package都已经从npm移除。安全研究人员暂时发现除了hacktask之外,npm中还没有其它同类typosquatting攻击的package。

这些恶意的package和下载数显示如下:

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

对于此事,Node.js社区建议:

如果你已经下载并已经安装了上面提到的这些package的话,你应该马上删除或替换掉你在命令行环境下存储的各种重要信息。

2330981097644.png

攻击并不高明

“过去,这样的事大多都是偶然的,我们也见过故意山寨现有库的名字来与原有开发者竞争的情况。但这次,package的命名完全是故意和恶意的,目的就是欺骗用户,从而从他们那里收集有用的信息,“Silverio说。

位于瑞典的开发人员Oscar Bolmsten在一个名为crossenv的package中发现了恶意代码,而人们真正想找的却是cross-env—— 一款当下很流行的用来设置环境变量的脚本。

“通过使用环境变量的方法将身份凭证递交给软件,这样的做法很普遍。所以这是一件很好的事情,”Silverio在接受电话采访时说道。

环境变量还用于存储用户名,密码,token,和连接一些应用程序,云服务,API访问权限的密码。

在攻击者发动的typosquatting攻击中,恶意代码会尝试复制受害者机器上设置的所有环境变量,并将其传输到攻击者控制的服务器npm.hacktask.net上。

crossenv使用的JSON配置文件运行了一个名为package-setup.js的脚本,它将现有的环境变量转换为字符串,然后通过POST请求发送数据。

WX20170803-183059@2x.png

根据Silverio所说,由hacktask提交的大约40个npm包已从npm删除,现在基本已经清理干净,我们扫描了每个npm package,来寻找恶意使用的安装代码,但是没有发现其他类似hacktask的情况。

Silverio对这次攻击的效果表示了怀疑,她说:“通过拼写错误来将恶意软件倒入注册表的手段并不高明,因为人们更倾向于使用搜索或者复制粘贴已发布的代码。

7月中旬以来,排除因为好奇的关系前往下载,hacktask上传的绝大部分package,每个下载量大约是40次,恶意的crossenv软件包的下载次数最多,为700次,但这里面大多数都被认为是触发了npm镜像服务器的自动下载。

Silverio估计在这段时期只有约50人下载了恶意的crossenv包,她说她还没有发现有开发者由于这次事件导致账户被黑的上报情况。

虽然hacktask的账户已经被封了,但其背后主谋却还未知是谁。

atsplat-typosquatting.jpg

这种攻击有办法预防吗?

当问到npm是否已采取相应的措施来防止其他用户名下的类似攻击时,Silverio表示这种攻击仍然可能无法立即检测到。

她说:“虽然我们在发布的过程中无法随时随刻的掌控一切,但我们建立了一个运行良好的系统”,Silverio称赞了npm社区的警惕性。

尽管如此,Silverio仍表示,npm正在研究如何识别有相似名字的npm package,用来防治今后的typosquatting攻击。npm也正在与安全公司Smyte一起检测发布过的垃圾信息。很明显,垃圾信息的发布者希望搜索引擎检索到README文件,来提高自己的网站排名。

2016年的kiwicon,开发者Jeff Andrews在关于Node.js的安全性的演讲上问了自己这样一个问题:“我使用Node.js或npm,但我怎么保证这么做是安全的呢?”他答道:“根本不能保证。”



推荐阅读
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
author-avatar
铁血aaaaaaaaaaaaa_295
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有