不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环
编译:代码卫士
热门开源库 “colors” 和 “faker” 的用户发现使用这些库的应用程序打印垃圾数据并崩溃。是有人攻陷了NPM库?事实并没有这么简单。
“colors” 和 “faker” 库的作者 Marak Squires 故意引入一个无限循环,使依赖于这两个库的数千个项目无法运行。”colors”库单在npm 平台上的每周下载量就超过2000万次,依赖于它的项目近1.9万个;而 “faker” 库在npm平台上的每周下载量超过280万次,依赖超过2500个。
Marak 故意在”colors”(GitHub 上为 colors.js)和 “faker”(GitHub 上为 faker.js)库上引入恶意 commit,影响数千个依赖于这两个库的应用程序。热门开源项目如亚马逊的云开发包 (aws-cdk) 等用户惊讶地发现自己的应用程序在控制台上打印垃圾邮件。这些信息中包括文本 “LIBERTY LIBERTY LIBERTY”,随后是一个非ASCII字符的序列。
最初用户怀疑这些开源项目所使用的colors.js 和 faker.js 遭攻陷,类似于去年遭恶意劫持的coa、rc 和 ua-parser-js库。但实际上正是这两个库的作者提交了导致这些问题的代码。
Marak向colors.js库版本v1.4.44-liberty-2中添加了一个“新的美国国旗模块”,之后将其推送到 GitHub 和npm。
代码中引入的无限循环将无限制运行下去;一直在使用 “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年的刑期。
人们对 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”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。