下载量和 Vue 一样大的开源软件被作者恶意破坏,数千款应用受到牵连

本文主要是介绍下载量和 Vue 一样大的开源软件被作者恶意破坏,数千款应用受到牵连,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是「进击的Coder」的第 561 篇技术分享

编译:核子可乐、Tina

来源:InfoQ

阅读本文大概需要 9 分钟。

开源的黑暗面:faker.js 到底发生了什么?

流行开源包“colors”与“faker”的用户们最近刚刚遭遇一场意外,毫无征兆的破坏导致应用程序在使用这些包后开始输出无法理解的乱码数据。这背后的原因竟然是开源软件包的作者 Marak Squires 故意引入了一个无限循环,让数千个依赖于“colors”与“faker”包的应用程序全面失控。

colors.js 是一个用于处理颜色的 JavaScript 库,而 faker.js 是一个用于生成假数据的 JavaScript 库。在构建和测试应用程序时,假数据很有用,faker.js 可以为各个领域生成虚假数据,包括地址、商业、公司、日期、财务、图像或名称。

这两个包特别受开发者欢迎,其中单是 colors 包在 npm 上就拥有每周 2000 多万次下载量,依赖于它的项目近 19000 个。此外,faker 在 npm 上每周下载量也超过 280 万次,相关项目超 2500 个,faker 的受欢迎程度可媲美于 Vue。因为这些开源软件的应用特别广泛,所以这个事件影响也特别深远。

c0b214a6fc3f98505c4c6a75feff55e8.png

开源革命,还是开源暴动?

这两套高人气开源 npm 包“colors”(在 GitHub 上名为 colors.js)与“faker”(在 GitHub 上名为 faker.js)背后的开发人员故意在代码中引入了错误内容,相应提交进一步对依赖这些包的成千上万应用程序造成影响。

就在昨天,Amazon 云开发工具包(aws-cdk)等开源项目用户,突然发现自己的应用程序开始在控制台上疯狂输出乱码消息。

这些消息中包含大量“LIBERTY LIBERTY LIBERTY”(自由)字样,之后还跑着一大堆非 ASCII 字符:

28abe430fca846c9c5945a701fc883c5.png面对“faker”与“colors”项目倾泻出的垃圾数据,用户感到震惊错愕 (GitHub)

最初,用户怀疑这些项目使用的“colors”与“faker”包遭到了恶意入侵,类似于去年 coa、rc 和 ua-parser-js 等包被攻击者劫持的状况。但事实证明,令 colors 与 faker 陷入混乱的其实是由合法开发者故意提交的错误代码。

开发者 Marak Squires 向 colors.js 包的 v1.4.44-liberty-2 版本中添加了“新的美国国旗模块”,此项变更随后被推送至 GitHub 与 npm。

a0f21e4f30752d374c1218261fb1397e.pngcolors.js 恶作剧提交出自“Marak”之手 (GitHub)

新代码中引入的无限循环会没完没了地运行,任何使用“colors”的应用程序都会在控制台上无休止地输出由非 ASCII 字符序列组成的乱码。

同样的,faker 的恶作剧版本“6.6.6”也被发布到了 GitHub 和 npm 之上。这位开发者还语带嘲讽地表示,“我们注意到 v1.4.44-liberty-2 版本的 colors 中存在一项 Zalgo bug。”“我们正在努力解决这个问题,请大家静待解决方案的发布。”所谓 Zalgo 文本,指的就是因某些故障引发的非 ASCII 字符。

这位开发者的举动似乎是在故意报复,希望反抗那些长期依赖于免费和社区支持软件、但却从不向社区做出回馈的大型企业和其他利用开源项目进行商业化盈利的用户。

2020 年 11 月,Marak 就已经警告称不会再“无偿工作”来支持那些商业巨头,并强调这些业务实体面前只有两条路:要么选择项目分叉,要么以每年“六位数”的薪酬补偿开源开发人员。

b77ea8b04a14b070e364c1f466c95f54.png

这位开发者之前曾写道,“诸位,我不会再用自己的无偿工作来支持那些财富五百强(以及其他小型公司)了。言尽于此。”“所以现在只有两个选择,要么给我发一份年薪六位数的用工合同,要么赶紧分叉项目、找其他人接手。”

52e5fa47b444e34bebfbe2e936757474.png

有趣的是,我们发现“faker”项目在 GitHub repo 上的 README 页面(https://github.com/marak/Faker.js/)也被 Marak 改掉了,里面赫然出现了“Aaron Swartz 到底经历了什么?”的字样。

Swartz 是一位杰出的开发人员,他帮助建立了 Creative Commons、RSS 和 Reddit。他的贡献对几乎所有的 Web 开发人员都产生了深远的影响。2013 年,年仅 26 岁的 Swartz 在一场法律纠纷中自杀身亡。

为了让所有人都能免费访问信息,这位黑客主义者从麻省理工学院的校园网络 JSTOR 数据库中下载到数百万篇期刊文章。据称,他采用的方法是反复轮换自己的 IP 与 MAC 地址以绕过校方和 JSTOR 设置的技术屏蔽方案。但此番举动也导致 Swartz 面对违反《计算机欺诈与滥用法》的指控,一旦罪名成立,他最高可能被判处 35 年监禁。

事件引发轩然大波

Marak 的大胆举动旋即引发轩然大波,各界纷纷就此事发声。

部分开源软件社区成员赞扬了这位开发者的勇敢行为,但也有人对他的过激举动表示震惊。一位用户在推文中写道,“很明显,colors.js 的作者因为拿不到报酬而抓狂……所以他决定每当有用户加载他的包时都输出一面美国国旗……这是什么脑回路?”

也有人觉得这是“又一个开源开发者造成的流氓案件”,信息安全厂商 VessOnSecurity 则公开指责此举“不负责任”,并强调:“如果你不想有人用免费代码组织商业业务,那别发布这类代码不就好了?这种无差别打击的行为伤害到的不止是大企业,更是每一位使用开源代码的用户。此类行径只会打击用户的版本更新热情,让他们在每次升级时都提心吊胆。”

根据相关报道,GitHub 已经冻结了这位开发者的账户,而群众们对此也是议论纷纷:

9f314fd33895d9890d846c28bc12b969.png

NPM 已经将 faker.js 包回滚至先前版本,GitHub 则暂停了我对所有公共及私有项目的访问权限。那可是上百个项目,现在都访问不了了。#AaronSwartz  --@marak

软件工程师 Sergio Gómez 回应称,“删改自己的代码也违反到 GitHub 的服务条款了?这是赤裸裸的绑架!我们最好做好分散托管软件源代码的准备。”

另一位用户也发布推文称,“不知道究竟是怎么回事,但我自己所有的项目都托管在 GitLab 的私有实例上,以免遇上类似的状况。永远不要相信任何互联网服务商。”

一位名叫 Piero 的开发者则指出,“Marak 搞乱了 faker 和 colors、影响到无数项目,难道还指望着自己能不受一点牵连?”

需要提醒大家一点,Marak 的此次过激行为发生在不久前影响巨大的 Log4j 漏洞事件之后。作为一套重量级开源库,Log4j 在不同企业及商业实体开发的各类 Java 应用程序当中都有广泛使用。而 Log4shell 漏洞的曝光引发越来越多 CVE,不少开源维护者不得不在休假期间无偿帮助修复这些免费项目。

于是开源业界开始普遍担忧,认为大企业们已经习惯于“压榨”开源成果、不停消耗,但却没有给予足够的回报来支持这些志愿放弃空闲时间来维持关键项目的贡献者。面对网民和 Bug 赏金猎人们的指责之词,也有人愤然回击,强调 Log4j 的维护者们“已经在夜以继日地构建缓解方案,包括修复、撰写文档、提交 CVE 以及回复质询等等。”

有用户在推文中写道,“对于此次 colors.js/faker.js 作者破坏自有软件包的回应,恰恰说明很多企业开发者认为自己在道德上有权无偿享用开源开发者的劳动成果、且无需给出任何回报。”“虽然免费开源软件运动及其目标值得称赞,但它最终让许多非常有才华的人幻想破灭且变得贫穷,因为开源实际上并不是一种可行的商业模式。”

至于开源软件生态到底能不能长久存续,恐怕只有时间能给出答案。

与此同时,这里要提醒 colors 与 faker 两大 npm 项目用户务必使用安全的包版本。比较稳妥的方法是降级至上个版本的 colors(例如 1.4.0)与 faker(例如 5.5.3)。

参考链接:

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

cc4bf48adfb55d49c54492ad267a5df4.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

7e47d5526c864b9318a16edbb3d72f2e.png

扫码购买

fc23b51d17fd06c89beb6a2e6f8f5c81.png

好文和朋友一起看~

这篇关于下载量和 Vue 一样大的开源软件被作者恶意破坏,数千款应用受到牵连的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/223140

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/