开源NPM包fakerjs和colors.js的项目一夜之间突然“变砖”

整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

还记得去年底的订单吗?当时,开源项目一开始只有 3 人赞助的事实震惊了很多人,甚至有人感慨地说“这就是开源的丑陋一面”:当项目进展顺利时,一切都是美好的; 一旦项目出了问题,现在大家都在抱怨项目背后的无偿维护者。

Apache Log4j 2 漏洞发生已经一个多月了,还没有完全平息。没想到,上周又发生了一起开源事件,让不少开发者“光头”:上千个使用流行的开源NPM包faker.js和colors.js的项目一夜之间突然“变砖”,不断输出的画面满是乱码,而“罪魁祸首”实际上是项目作者 Marak Squires 故意为之。

程序故障?项目作者故意“恶作剧”

很多 JavaScript 和 Node.js 开发人员应该熟悉 faker.js 和 colors.js 这两个库:

从每周的下载数据可以看出,faker.js和colors.js被广泛使用,AWS CDK等很多流行工具在开发过程中都使用了这两个库,并没有出现过意外。所以在周末,一位 AWS CDK 用户惊恐地看到他们的应用程序不断在控制台上打印乱码:“这是怎么回事?”

根据用户分享的截图,乱码包括“LIBERTY LIBERTY LIBERTY”和一系列非ASCII字符:

用户认为这是“由于 faker.js 导致的奇怪输出”,结果证明 Ta 是对的。根据 faker.js 的 GitHub 页面程序文字乱码是什么问题,库代码已被完全删除,所有提交信息已更改为“endgame”,而自述文件部分仅由项目作者 Marak Squires 留下:“Aaron Swartz 到底发生了什么(什么亚伦·斯沃茨到底发生了什么)?”

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

不仅如此,有心人应该已经在上面faker.js下载图表中发现了奇怪的最新版本号“6.6.6”——你要知道,这和国内普遍的认知不同,在圣经中连续使用三个“6”代表魔鬼的象征,代表以撒旦为首的邪恶势力,因此西方国家常将三个“666”视为魔鬼、撒旦等不吉利的象征。

colors.js 库也发生了类似的事情:Marak Squires 在 v1.4.44-liberty-2 中的 colors.js 库中添加了一个“新的美国国旗模块”,并将其发布到 GitHub 和 NPM ,并且代码中引入了无限循环,这样所有使用colors.js的程序都会在控制台中无休止地打印各种非ASCII字符。

随后,Marak Squires 还故意嘲讽:“我们注意到在 v1.4.44-liberty-2 版本的colors.js 中存在Zalgo 漏洞,请相信我们正在努力解决这个问题,很快就会有解决方案的。”

(注:Zalgo文本原本是指用Unicode组合字符在字母上添加各种符号生成的一种数字文本,常用于恐怖场景让人毛骨悚然。这里指的是非ASCII字符的乱码。 )

靠“开源项目”做“很多公司”?一切似乎都是从“钱”开始的

Marak Squires 的这次操作,打破了很多关于 NPM 库被破坏的猜想,但也让更多人不解:两个不错的开源项目,为什么 Marak Squires 突然要自己销毁呢?

问题似乎始于 2020 年 9 月 Marak Squires 的一场火灾。当时,Marak Squires 租用的房子发生火灾,几乎所有财产都被烧毁。无奈之下,Marak Squires 在 Twitter 上发帖寻求帮助:

“我在一场公寓火灾中失去了一切,几乎无家可归,无法访问我的大部分账户,我所有的贵金属都不见了。如果有人可以给 paypal@marak.com 一点钱来帮助我免于在街上被冻死,哈哈。”

在那之后,也许是因为帮助的数量不足以支撑 Marak Squires 的生活,近十天后程序文字乱码是什么问题,他在 GitHub 上谴责了大公司使用开源项目而不回馈的行为:

“恕我直言,我不会再用我的免费工作来支持财富 500 强公司(和其他小公司)了。没什么好说的。抓住这个机会,你可以付给我一份六位数的薪水合同,或者分叉项目,让其他人去做。”

从这两个事件中,我们似乎可以窥见Marak Squires毫无征兆地“自毁”项目的原因:靠“开源项目”做“很多企业”,一切似乎都是“钱”造成的”。

幸运的是,据 The Verge 报道,colors.js 已更新为普通版本。faker.js虽然还没有修复,但是可以降级到之前的5.5.3版本解决问题。GitHub 似乎为此暂停了 Marak Squires 的 GitHub 帐户:

开源开发者应该如何表现?

毫无疑问,这次事件再次引起了人们对开源开发者现状的关注,这可能是 Marak Squires 这次的目标:现实中,大量的网站、软件和应用程序依赖免费的开源项目来创建基础工具。和组件,但与 Apache Log4j 2 一样,对于这些开源项目背后的维护者的财务困境知之甚少。

针对这一事件,不少资深开发者也发表了自己的看法。

对此,不少网友也持不同意见。

从开源到开源。或许对于很多开源开发者来说,最终目的不是钱,而是更希望人们参与到项目维护中,回馈社区。那么在您看来,您认为这个矛盾应该如何缓解,开源开发者又该如何应对呢?

《新程序员003》正式上线

50多位技术专家合着

面向云原生和数字开发人员的技术精选书籍

内容的现有发展趋势和方法论结构

华为、阿里巴巴、字节跳动、网易、快手、微软、

亚马逊、英特尔、西门子、施耐德等30多家知名企业

云原生和数字化的第一手经验

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论