周下载量800万的npm库 ua-parser-js 被植入恶意代码

2,992 阅读2分钟

在刚过去的 1024 程序员节前两天,10月22号,前端世界发生了一件小小的风波。

ua-parser-js 被发现植入了恶意代码。会在后台下载恶意程序并运行。据分析,下载的恶意程序可能是用于挖矿。

ua-parser-js 是一个很出名的 npm 库,主要用于分析 useragent 来判断浏览器、引擎、操作系统、CPU、设备类型等信息。既可以在客户端使用也可以在nodejs中使用。相信做前端的同学经常会用到这个库。它的周下载量达到了近800万。

Github 的讨论来看。植入的过程如下:

  • 黑客盗取了包主要维护者的 npm 网站账户密码
  • 在 ua-parser-js 的代码中直接植入恶意代码。
  • 接连发了三个新版本,0.7.29,0.8.0,1.0.0。

主要恶意代码如下:

image.png

具体的代码差别可以见这里 my.diffend.io/npm/ua-pars…

这一恶意行为大约几小时以后被发现,随后包管理者立刻更新了新的小版本来试图覆盖恶意版本,并通知了 npm,但是似乎根据 npm 的规则,并不能立刻下架恶意版本,所以在被发现后的数个小时,恶意版本依然可以在npm下载到。

幸运的是,最终npm终于删掉了恶意版本。现在上面已经没有了。

如果你在这个周末依然像往常一样加班且添加了什么新包到自己的项目或者升级了包版本的话,建议去检查一下自己的包管理文件,看看有没有中招。如果已经中招,赶紧升级一下包依赖。并运行一下缓存清理,杀个毒吧。