有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如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. A/B宣言

    作者:Dunne & Raby A B 肯定的  批判的 解决问题的 发现问题的 设计即流程 设计即方法 给出答案 问问题 为行业中服务 为社会服务 说明世界是怎样的 说明世界可能是怎样的 科 ...

  2. Laravel 使用中间件进行权限控制

    Laravel 使用中间件进行权限控制 飞凡的陀螺 关注 2018.01.24 17:45 字数 264 阅读 1138评论 0喜欢 1 先看 文档Laravel 中间件提供了一种方便的机制来过滤进入 ...

  3. 模拟登陆request-session

    #人人网的模拟登录 import requests import urllib from lxml import etree #获取session对象 session = requests.Sessi ...

  4. lua 函数练习

    --逻辑表达式 --1+2+3+...+n function fun1(n) ,n do sum = sum + i end return sum end -- 计算奇数和 function fun2 ...

  5. java线程池 多线程 搜索包含关键字的文件路径

    package org.jimmy.searchfile20180807.main; public class ThreadMain implements Runnable{ private int ...

  6. js 发送短信验证码倒计时

    html <input type="button" id="btn" value="免费获取验证码" onclick="se ...

  7. 关于动态添加的html元素绑定的事件不生效的解决办法

    1.可以通过行内添加事件的方法,比如onclick="fn()"; 在js中写好方法名对应的方法就可以了,如果绑定方法的元素太多 2.jquery的on事件绑定 //on事件可以给 ...

  8. [Luogu] P4910 帕秋莉的手环

    题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和 ...

  9. 笔试算法题(15):-1到N中包含1的数字的个数 & 连续和为N的序列

    出题:输入一个整数N,求从1到N这N个整数的十进制表示中‘1’出现的次数: 分析: 从左向右处理string表示的数字:当前数字长度为n,判断最左边一位数字字符: 如果是0,则直接递归下一位: 如果是 ...

  10. mysql常用命令用法

    Mysql帮助文档地址:http://dev.mysql.com/doc/ 1.创建数据库: create database database_name; 2.选择数据库: use database_ ...