JavaScript 开发人员故意搞砸了自己的流行的npm包,以表明某种观点

332 阅读4分钟

JavaScript 开发人员故意搞砸了自己的流行的npm包,以表明某种观点

最近有两个流行的开源软件包被恶意提交破坏,在使用这些软件的开发人员或者企业受到了影响,加剧了对开源软件供应链脆弱性的担忧。

npm软件包,faker.js和colors.js,并没有像已经知道的那样被外人劫持;而是它们的创造者在软件库中故意添加了代码,使它们发生故障。

三天前,开发者Marak Squires添加一个 "新的模块 "到colors.js中,该模块用于简化在开发者控制台打印彩色文本。新代码多次打印 "LIBERTY "这个词和一个ASCII-flag到开发者控制台,并进入一个无尽的循环。

六天前,用于为API测试生成虚假数据的faker.js也收到了一个意外的更新:它删除了代码,增加了提交信息 "endgame",并将ReadMe文件替换为 "Aaron Swartz到底发生了什么 "的问题。

Swartz, 因其主张和悲剧而成为互联网上的传奇人物,去世近十年前,他因从麻省理工学院的网络上下载数百万份JSTOR文件而被起诉。明天,2022年1月11日,将是他死亡的九周年。斯奎尔斯似乎更喜欢最近在Twitter上引用的一个超现实的阴谋论

Squires也许通过2021年4月25日的一篇博文更好地阐述了他的担忧--通过互联网档案馆的Wayback Machine保存下来--在这篇博文中,他描述了据称是为了使faker.js赚钱的尝试。

"没有人为Faker的开发付费,"Squires写道。"最近,我们开始通过Open Collective和Github Sponsors等服务获得赞助。这些捐款大多来自于其他开发者,而不是企业或公司。这些捐款帮助Faker的开发不至于完全停滞,但它们是不可持续的。

"我确实喜欢在Faker上工作,但我也不能免费工作。像我们大多数人一样,我有依赖我的人,我有账单要付。我不想放弃,我决定最好的行动方案是尝试将Faker项目货币化,以确保未来的可持续发展"。

试图支付租金

他声称,计划是在faker.js的基础上创建一个云服务。然而,他描述说,他发现另一家公司正在使用他的开源软件来创建一个相同的产品。The Register已经联系了他指定的公司询问此事,我们还没有收到回复。

2020年11月,斯奎尔斯在一个现已被删除的GitHub问题帖子中说,他 "不再打算用我的免费工作支持财富500强(和其他较小规模的公司)"。

这一事件让人想起2016年的 "left-pad "事件,当时开发者Azer Koçulu从npm上取消了他的250多个模块的发布。

开发人员将npm模块纳入他们的应用程序,这样他们就可以增加功能,而不需要亲自实现借用的代码。通过这样做,他们增加了依赖性--他们的应用程序所依赖的模块或库的功能--因此,当这些依赖性中断、被颠覆或消失时,会给许多应用程序和人们带来问题。

Faker.js被纳入2500多个其他npm包,每周下载量达240万次;colors.js被纳入近19000个其他npm包,每周有2300万次下载。

可以说,开发者社区注意到了这一中断,并再次大声问道,如何才能使创建和维护开源项目的过程更加持久。

最近运营npm注册表的GitHub暂停了Squires的账户。与此同时,他的仓库仍然可以公开访问。The Register已经要求GitHub解释其这样做的理由,但我们还没有收到回复。Npm也恢复了Squires对他的至少一个库所作的修改。

在一篇博文中,软件监控公司Sentry的工程总监、流行的Python网络应用程序框架Flask的创建者Armin Ronacher认为这一事件是开源社区需要支持的另一个迹象。他说,通过资助某些项目来提供帮助的努力并不总是奏效,因为许多基金会库被忽视了,因为它们不像其他项目那样引人注目。

"显然,我们需要解决开源项目的资金问题,我喜欢GitHub赞助的事情,"他写道。"但我认为我们需要找到一个更好的方法来评估库的[影响],而不仅仅是npm或其他软件包管理器上有多少人依赖这个。因为到目前为止,这还不是全部的情况。" ®

更新后添加了

"GitHub致力于确保npm注册表的健康和安全,"该组织告诉The Register。

"我们根据npm关于恶意软件的可接受使用政策,删除了恶意软件包,并暂停了该用户的账户,正如我们的开源条款中所述。我们还在这里发布了一个安全公告"。