知名NPM包(faker.js与colors.js)作者删库、注入恶意代码

更新日期: 2022-01-11阅读: 1.6k标签: npm

这是继“Apache Log4j 2 漏洞”发生一月之后的今天,该漏洞还尚未彻底平息,不曾想又发生了一起令许多开发者“头秃”的开源事件:faker.js与colors.js开源库遭开发者恶意破坏, 成千上万个使用了流行开源npm包faker.js和colors.js的项目一夜之间突然“变砖”,不断输出满屏乱码,而“罪魁祸首”竟是项目作者Marak Squires故意为之。

尽管开源项目有着“众人拾柴火焰高”的特性,但也难防有人使坏。


faker.js 和 colors.js 的应用十分广泛,如 AWS CDK 等许多流行工具均在开发过程中使用了这两个库,一直以来也没有意外发生。据 faker.js 的 GitHub 页面显示,该库代码已被全部删除,所有 commit 信息都被改为「endgame」,且 Readme 部分也仅剩下项目作者 Marak Squires 留下的一句话:“What really happened with Aaron Swartz(到底发生了什么)?”

(注:Aaron Swartz 是一名出色的开发人员,曾建立 Creative Commons、RSS 和著名社交网站 Reddit,但在 2011 年被指控非法入侵 MIT 和学术数据库 JSTOR 以窃取文件,后于 2013 年自杀。)

在项目中如果使用了遭到破坏的版本,会导致应用程序无限输出奇怪的字母与符号。从第三行文本开始,上面会呈现“LIBERTY LIBERTY LIBERTY”。

尽管 color.js 看似已更新到新版本,但 faker.js 可能还需再等待一段时间,着急的朋友可尝试降级到先前的 5.5.3 版本。


此外 Bleeping Computer 发现这两个库的开发者(Marak Squires)向 colors.js 引入了恶意提交,添加了所谓的 American flag 模块,并推出了可触发同样破坏性事件的 6.6.6 版 faker.js 库。

由于 faker.js 在 npm 上的每周下载量接近 250 万、colors.js 亦有约 2240 万,本次破坏事件还是给开源项目敲响了安全警钟。深挖之后,有人将问题源头指向了 2020 年 11 月起在 GitHub 上发表的一篇帖子。


Squires 声称不想自己的努力再被财富 500 强(其已其它小企业)白嫖,并希望拿到一份年薪六位数的合同。或者分叉项目,并让其他人参与其中。

针对此次事件,诸多资深开发者也表达出了各自的看法。

  • 资讯安全专家 VessOnSecurity 认为:“这太不负责任了!如果你在发布免费代码时遇到问题,那就不要发布。你破坏自己被广泛使用的项目,不仅伤害了大企业,也伤害了所有使用它的人。这会导致人们害怕更新,因为新版本可能并不安全。”

  • 软件工程师 Sergio Gómez 则认为:“从 GitHub 删除他自己的代码居然违反了他们的服务条款?这是道德绑架!我想我们需要开始分散托管免费软件源码了。”

许多网友也对此各执一词。

  • @Mike_Walsh:“老实说,这人完全有权破坏自己的工作,尤其是当他利用自己的空闲时间维护这些项目,却没有看到一分红利时。为什么大公司就应该从别人的无偿劳动中赚到一大笔钱,甚至他们还声称这样做是‘出于对开源的热爱’?所以我觉得这样很公平,你对我好我会回报你,但如果你在背后捅了我一刀,也同理。”

  • @GT500:“就我的理解来看,我认为这个人忘记了开源的精神,只是贪婪罢了。如果他想要别人为他的软件付费,那他就不应该在开源许可下发布它。开源的倡导者花了几十年的时间试图让公司使用开源软件,试图说服他们这是免费的、应该使用它,且永远不必为此付费。而这个人的行为会导致什么?我们可能会回到公司只使用垃圾付费软件的黑暗时光,因为他们会觉得已经不能再信任开源项目了。”


链接: https://fly63.com/article/detial/11019

在5分钟内搭建企业内部私有npm仓库

下面通过三种方法来搭建公司私有npm仓库,每种方式都有自己的优势。启动并配置服务、设置注册地址、登录cnpm、包上传到私有仓库、查看预览包、通过verdaccio搭建....

使用webpack开发npm插件

webpack:解析js文件,无法解析的文件需要借助loader,npm插件发布(vue&webpack&单页面):npm init =>package.json,创建.vue文件 =>插件界面及功能,index.js =>入口文件

npm命令大全_整理NPM常用命令

NPM是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。这篇文章整理NPM常用的一些命令

npm 执行多个命令_如何用npm同时执行多条监听命令

直接通过&&连接多条命令,在npm run start的时候,发现只停留在第一个命令执行监听,后面的命令都没有执行。只能通过打开多个窗口分别执行多条命令,那么有没有办法实现一条npm命令执行多条监听呢?

npm和bower的关系和区别

npm和bower太像了,就像一对孪生兄弟…… npm的文件是package.json,包安装的目录是node_modules。 bower的文件是bower.json,包安装的目录是bower_components。使用命令也基本一致

npm run build根据不同参数打包不同环境url

这篇文章主要介绍了vue项目中Npm run build 根据环境传递参数方法来打包不同域名,使用npm run build --xxx,根据传递参数xxx来判定不同的环境,给出不同的域名配置,具体内容详情大家参考下:config文件夹下dev.env.js中修改代码、prod.env.js中修改代码 HOST为截取到的参数

npm安装模块时报错:no such file or directory

使用node.js和npm,在安装模块的时候报错npm WARN saveError ENOENT: no such file or directory, open ...的解决办法。这个原因就是因为项目没有进行初始化,缺少package.json文件造成的。需要package.json才能npm install。 可以npm init初始化生成一个package.json。

vue-cli 3.x 开发插件并发布到 npm

抽空写了一个 textarea,打算发布到 npm 的时候却遇到了问题,之前用 vue-cli 2.x 的时候,打包配置项非常透明,可以很容易的修改,但升级到 vue-cli 3.x 之后,反而一脸懵逼

前端npm 安装包,精选大全集合

如果您曾在 Node 或 JavaScript 前端开发中投入过时间和精力,那么您就知道 npm 中有数以十万计的模块可供您选择。挑选模块可能很难,但您只需要一些方法点来解决它。当您正在为如何抉择浪费时间,或者甚至不知道从哪里开始时,请使用本指南来帮助您。

关于 npm run eject 报错的问题

关于 npm run eject 报错的问题,昨天新开React的项目, 刚刚一上手就碰到问题,解决方法(前提你有git).出错的原因:应该是git没有安装好,或者代码没有提交上git

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!