有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如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的话,你应该马上删除或替换掉你在命令行环境下存储的各种重要信息。

攻击并不高明

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

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

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

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

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

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

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

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

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

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

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

这种攻击有办法预防吗?

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

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

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

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

又见古老的Typosquatting攻击:这次入侵Npm窃取开发者身份凭证的更多相关文章

  1. 《2019年上半年Web应用安全报告》发布:90%以上攻击流量来源于扫描器,IP身份不再可信

    Web应用安全依然是互联网安全的最大威胁来源之一,除了传统的网页和APP,API和各种小程序也作为新的流量入口快速崛起,更多的流量入口和更易用的调用方式在提高web应用开发效率的同时也带来了更多和更复 ...

  2. 全球著名的渗透测试Linux简介

    注:如发现链接无法打开,请尝试代理登录链接 1. Kali Linux Kali Linux是基于Debian的Linux发行版, 设计用于数字取证和渗透测试.由Offensive Security ...

  3. 【NCRE】常见的网络入侵与攻击的基本方法

    本节内容来自<全国计算机等级考试三级教程--网络教程>2020版 实训任务五. 因为一直记不住几个常见的DOS攻击,这里记录一下,顺便找个好方法记住.跟CTF关联以后这部分知识确实感触颇深 ...

  4. 真实故事:网站遭遇DOS攻击

     网站遭遇DOS攻击 一个.事件背景 长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停.越是节假日,越可能出大问题,以下要讲述的就是一起遭受DOS攻击的案例. 春节长假刚过完,小李 ...

  5. cc攻击和ddos攻击

    DoS攻击.CC攻击的攻击方式和防御方法 DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of ...

  6. DDos、CC攻击与防御

    DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",那么什么又是拒绝服务(Denial of Service)呢? ...

  7. 前端学HTTP之web攻击技术

    前面的话 简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标.本文将详细介绍攻击web站点 ...

  8. Avast!:小型网站最易遭受的3种黑客攻击

    avast是捷克研发的杀毒软件,从网站上找到一篇avast关于网站安全的文章,觉得颇有意思,因此想到翻译过来与大家共享.有不对之处还望大家批评指正. 一个拥有上万访问者的小型网站管理员发来一份信,向我 ...

  9. 防止SQL注入攻击的一些方法小结

    SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施. 一. SQL注入攻击的简单示例. statement := &quo ...

随机推荐

  1. eclipse 升级note

    参考http://www.cnblogs.com/jiqingwu/archive/2013/05/26/eclipse_plugins_import.html. 最终决定采用 启动 eclipse. ...

  2. servlet 生命周期 与 初始化

    一. 生命周期 Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() 方法来处理客户端的请求. Servlet 通过调用 destroy() 方法终止( ...

  3. IT实习总结-上海的实习的日子

    在上海实习两个多月,从找工作,到面试,最后到创业公司工作,体会了一个人在外工作的那种工作时的压力与双休时的寂寞,有时甚至有点迷惘,可能这就是生活,每个人都会经历,在经历的过程中会有不同的味道. 说说我 ...

  4. swift class extension 与继承

    1.扩展中无法继承重写已有函数,不能添加函数. Extensions can add new functionality to a type, but they cannot override exi ...

  5. 導出Excel方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  6. MySQL系列(一)--数据类型

    如何选择优化的数据类型: 1.通常更小的更好 相同级别的数据类型,选择占据空间更小的数据类型.更小的数据类型通常更快,因为占用更少的磁盘.内存和CPU缓存,处理时需要的 CPU周期也更少,但是要确保需 ...

  7. 将Jar安装到本地仓库和Jar上传到私服

    举例 1. 依赖如下: <dependency> <groupId>org.quartz-scheduler.internal</groupId> <arti ...

  8. 获取汉字的拼音首字母--pinyin

    var pinyin = (function (){ var Pinyin = function (ops){ this.initialize(ops); }, options = { checkPo ...

  9. mysql group_concat函数详解

    group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] ) 1. --以id分组,把price字 ...

  10. iOS视频通话方案

    现在iPhone4平台上实时音视频对话已取得初步成果.其间查阅了很多资料,感谢这些信息的提供者.继往开来,我写下此文.我只列出要点,具体编码以及平台移植各位自己去努力吧.照着下面的步骤,您一定能做出来 ...