该开发人员推送了触发无限循环的损坏更新
一名开发人员似乎故意破坏了 GitHub 和软件注册表 npm 上的一对开源库——“faker.js”和“colors.js”。这两个库被成千上万的用户包含在项目中,而库的损坏也导致这些项目无法运转。这两个库目前似乎仍然受到错误代码的影响,但可以通过降级到旧版本(faker.js v5.5.3 和 colors.js v1.4.0)来临时解决这个问题。GitHub 已经发布了关于影响 colors.js 的问题的安全公告,但似乎没有发布针对 faker.js 的公告。
这两个库的开发者 Marak Squires 通过在 GitHub 上修订文件的方式向 colors.js 提交了恶意代码,添加了“新的 American flag 模块”,并推出了 faker.js 的 6.6.6 版本,触发了同样的破坏性事件。遭受破坏的版本导致应用程序无限输出奇怪的字母和符号,前三行写着“LIBERTY LIBERTY LIBERTY”。
更奇怪的是,faker.js 自述文件也被更改为“What really happened with Aaron Swartz?”Swartz 是一名杰出的开发人员,他协助建立了 Creative Commons、RSS 和 Reddit。 2011 年,Swartz 被指控从学术数据库 JSTOR 中窃取文件,目的是让人们可以免费访问这些文件,后来他在 2013 年自杀。Squires 提到 Swartz 可能是想让人们关注围绕 Swartz 死亡的阴谋论。
许多用户,包括一些使用亚马逊 Cloud Development Kit 的用户,通过 GitHub 的错误跟踪系统表达了他们对这个问题的担忧。由于 faker.js 在 npm 上每周的下载量接近 250 万,而 colors.js 每周的下载量约为 2240 万,因此破坏的影响可能是深远的。顺便说一下,faker.js 用于生成演示使用的假数据,而 colors.js 则用于给 JavaScript 控制台添加颜色。
Squires 在 GitHub 上发布了更新,以解决与损坏文件生成的错误文本相关的“zalgo 问题”。Squires 以一种讽刺的语气写道:“我们注意到 colors.js 的 v1.4.44-liberty-2 版本中有一个 zalgo 错误。我们现在正在努力解决这个问题,很快就会有解决方案。”
将损坏的更新推送到 faker.js 两天后,Squires 发了一条推文,表示自己存储了数百个项目的 GitHub 帐户已经被封。然而,从 faker.js 和 colors.js 的更新日志来看,他的帐户似乎已解封。Squires 在 1 月 4 日提交了 faker.js 的最新更新,在 1 月 6 日被封,直到 1 月 7 日才提交了 colors.js 的“liberty”版本。目前尚不清楚 Squires 的帐户是否再次被封。
然而,故事并没有就此结束。 一篇 Squires 于 2020 年 11 月发布在 GitHub 上的帖子被挖出来,他在帖子中写道自己不再想做免费的工作了。他说:“恕我直言,我不想再用我的免费工作来支持财富 500 强公司(和其他小型公司)。借此机会,向我发送一份年薪六位数的合同,或将该项目交给其他人处理。”
Squires 的大胆举动引起了人们对开源开发的道德和财务两难问题的关注,这可能是他行动的目的。大量网站、软件和应用程序依赖开源开发人员来创建基本工具和组件,所有这些都是免费的。与此同时,无偿开发人员需要不知疲倦地工作以修复其开源软件中的安全问题,例如 2014 年影响 OpenSSL 的“心脏出血漏洞”以及最近在 Log4j 中发现的 Log4Shell 漏洞,这些漏洞都需要志愿者们进行紧急修复。
资产发现公司 Lucidum 的首席执行官说:“当您用宜家的储物箱组装家具产品时,您是在从储物箱中取下某些东西然后拼装在一起的,哪怕它是一个坏的储物箱。同样的,若您开发产品时直接使用他人的软件,而不是花时间自己构建,您需要承担相应的风险。这两个受影响的软件包 colors.js 和 fakers.js 提醒人们,在未经测试的情况下使用他人的软件是有风险的。”
稿件来源:https://www.theverge.com/2022/1/9/22874949/developer-corrupts-open-source-libraries-projects-affected