不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环

171c2e8356e336e5551e79f8ecdd3b63.gif 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

热门开源库 “colors” 和 “faker” 的用户发现使用这些库的应用程序打印垃圾数据并崩溃。是有人攻陷了NPM库?事实并没有这么简单。

db30fe763ae027a98a06a58b777ca5bd.png

“colors” 和 “faker” 库的作者 Marak Squires 故意引入一个无限循环,使依赖于这两个库的数千个项目无法运行。”colors”库单在npm 平台上的每周下载量就超过2000万次,依赖于它的项目近1.9万个;而 “faker” 库在npm平台上的每周下载量超过280万次,依赖超过2500个。

开源革命?

18fcedcef8bb12222711e486a2a5dc32.png

Marak 故意在”colors”(GitHub 上为 colors.js)和 “faker”(GitHub 上为 faker.js)库上引入恶意 commit,影响数千个依赖于这两个库的应用程序。热门开源项目如亚马逊的云开发包 (aws-cdk) 等用户惊讶地发现自己的应用程序在控制台上打印垃圾邮件。这些信息中包括文本 “LIBERTY LIBERTY LIBERTY”,随后是一个非ASCII字符的序列。

ad0618bd5c76e2830828c3c2ab0b115a.png

最初用户怀疑这些开源项目所使用的colors.js 和 faker.js 遭攻陷,类似于去年遭恶意劫持的coa、rc 和 ua-parser-js库。但实际上正是这两个库的作者提交了导致这些问题的代码。

Marak向colors.js库版本v1.4.44-liberty-2中添加了一个“新的美国国旗模块”,之后将其推送到 GitHub 和npm。

5da37354efcc6237eb3a24c3234eb694.png

代码中引入的无限循环将无限制运行下去;一直在使用 “colors” 的控制台上打印垃圾消息,非ASCII字符序列。作者以类似的方式在 GitHub 和 npm 上发布了劫持版本 faker 6.6.6。Marak 嘲笑道,“我们注意到 colors 的 v1.4.44-liberty-2 发布中存在一个 zalgo 漏洞。我们正在修复问题并很快推出解决方案,请知悉。” Zalgo 文本指的是包含非ASCII字符的看似存在问题的文本。

从Marak方面来看,似乎是为了对大企业和开源项目商业客户的报复:他认为这些企业和客户大幅度依赖于零成本且由社区驱动的软件,但却并不回馈社区。

2020年11月,Marak 曾提醒称自己将不再支持大企业使用自己的“免费工作“,企业实体应当考虑要么分叉这些项目,要么以”六位数“年薪对开发人员做出补偿,”出于敬意,我不再支持财富500强公司(和其它小公司)使用我的免费工作。没有什么可说的了。把它当作给我每年发六位数薪资的合约机会,或者分叉项目,让其他人继续付出“。

有意思的是,Marak 还修改了 “faker” GitHub 仓库的README 页面,并引用了Aaron Swartz 的话:“Aaron Swartz 到底出什么事了?“Swartz 是美国的一名程序员、创业者和有名的黑客主义者,他经过一场官司后,自缢身亡。为了让信息自由流通,Swartz 从MIT 校园网上的 JSTOR 数据库中下载了数百万份期刊文章,声称通过反复路由自己的IP和MAC地址,绕过了JSTOR和MIT设置的障碍。在此过程中,Swartz 可能触发了《计算机诈骗和滥用法案》,因而面临刑事指控并可能被判高达35年的刑期。

孰对孰错?

cbf0f4e78e334860316c7728911231d6.png

人们对 Marak 的大胆行为反应不一。

开源软件社区的一些成员盛赞了他的行为,而其他人却有不同想法。一名用户发文称,“很显然,’colors.js’的作者因没有酬劳而愤怒,因此决定在自己的库每次加载时打印美国国旗。这算怎么回事。“一些人称之为”又一起开源软件开发人员走上邪路事件“;不过InfoSec 专家 VesOnSecurity 认为这一行为“不负责任”,他指出,“如果你对企业免费使用自己的代码有意见,那就不要发布免费代码。自己劫持已被广泛使用的自己的东西,不仅伤害的是大企业,还伤害了所有使用它的人。它导致人们不更新,因为更新后可能会崩溃。”

据称,GitHub 已经暂停了Marak 的账户,而这一行为同样引发热议。

软件工程师 Sergio Gómez 指出,“从 GitHub 删除自己的代码违反了他们的服务条款?啥玩意儿啊。这是绑架行为。我们需要对免费软件源代码的托管去中心化。” 也有人表示,“虽然不知道发生了什么,但我在 GitLab 私有实例中托管了所有的项目,以防类似事件发生在自己身上。永远不要信任任何互联网服务提供商。开发人员 Piero 指出,”Marak 抛弃了 faker 和 colors,让很多项目变砖,然后期望啥也不发生?”

需要注意的是,前不久Log4j 讨论点燃互联网。

开源库 Log4j 广泛应用于Java应用程序中,包括由企业和商业实体开发的应用中。但在 Log4Shell 漏洞遭大规模利用不久后,由于涌现出大量CVE,Log4j 的维护人员在假期加班加点修复该项目。

这起事件引起大家关于大企业如何“利用”开源的担忧;大企业对开源的使用越来越多但却对没有报酬的志愿者未给到足够的回馈,这些志愿者牺牲了自己的个人时间维护这些关键项目。Log4j维护人员已经“连轴转推出缓解措施、修复方案、文档、CVE、回应询问等”,但网民和漏洞猎人仍然对他们穷追不舍。

一名用户指出,“人们对 colors.js/faker.js 作者劫持自己的软件包的反映,真正地说明了很多企业开发人员认为自己从道义上讲有权利使开源开发人员没有报酬的劳动,但他们却未给出任何回馈。”

只有时间才能回答开源软件未来的维护问题会如何发展。

“colors” 和 “faker” npm 项目用户应确保自己使用的是安全版本。如版本不安全,则可降级到更早版本,如 colors (1.4.0) 和 faker (5.5.3)。

你怎么看?欢迎在留言区分享看法。


推荐阅读

钱少事多,开源项目维护人员几乎集体出走

十几个NPM恶意包劫持 Discord 服务器

NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击

热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道

注意!恶意NPM包正在安装勒索软件和密码窃取木马

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

如何避免 npm 替换攻击?

原文链接

https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/

题图:Pixabay License

本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

e679223c4f3839707ec5770a1538cfb5.png

0be6e8119060fedb2cc7f681d1c4f3bb.png

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   b35cfa5d414be90e3691bb8c1be46092.gif 觉得不错,就点个 “在看” 或 "赞” 吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值