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

编译:代码卫士

热门开源库 “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)

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

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

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

  1. Radix Icons - 一组优雅细腻的免费开源线性图标库

    一组漂亮的图标库,不仅可以用于开发应用,在PPT / 报告 / 海报中使用这些图标,也会让成品锦上添花,值得收藏留用. 关于 Radix Icons Radix Icons 是一组基于 15×15 像 ...

  2. 搭建私有npm私库(使用verdaccio)

    一.为什么要搭建npm私库 原因: 1)公司内部开发的私有包,统一管理,方便开发和使用: 2)安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便使用: 3)加速 ...

  3. Visual Studio中断NPM套件库服务

    微软在VS代码1.7版本中断了npm套件库的服务之后,推出了VS代码1.7.1版本. VS代码1.7版本提供的自动类型获取(ATA)功能,旨在监视开发人员的package.json文件,并自动将所有依 ...

  4. NPM酷库:dotenv,从文件加载环境变量

    NPM酷库,每天两分钟,了解一个流行NPM库.· 我们经常需要Node.js程序运行时加载不同的配置,比如开发环境和生产环境的数据数据库配置就可能不一样,使用 process.env.DB_HOST ...

  5. NPM酷库:dateformat 时间字符串格式化

    NPM酷库,每天两分钟,了解一个流行NPM库. JavaScript中Date内置对象的toString() 方法可以将时间对象转换为字符串,但是转换后的格式是这个样子的: Thu Feb 01 20 ...

  6. 前端人员如何在linux服务器上搭建npm私有库

    为什么要搭建npm私有库? 为了方便下载时,公共包走npmjs,私有包走内部服务器. npm包下载的速度较慢,搭建npm私有库之后,会先操作私有库中是否有缓存,有缓存直接走缓存,而不用重新再去请求一遍 ...

  7. npm 私有库开源组件_苹果的ResearchKit,npm私有模块以及更多开源新闻

    npm 私有库开源组件 在本周的开源新闻摘要中,我们介绍了Apple ResearchKit的发布,npm私有模块的发布,Docker新闻以及更多开源新闻. 2015年4月11日至17日的开源新闻摘要 ...

  8. DELPHI PROTOBUF免费的开源支持库fundamentals5

    DELPHI PROTOBUF免费的开源支持库fundamentals5 1.源码URL: https://github.com/fundamentalslib/fundamentals5 2.编译P ...

  9. NPM酷库:uuid,生成随机ID

    NPM酷库,每天两分钟,了解一个流行NPM库. 在中心化应用中,数据记录的ID往往是数据库生成的自增ID,但是在分布式应用中,就会存在一些问题: 保存数据之前就需要给数据标识ID 数据规模超级大,中央 ...

最新文章

  1. COCO 2019挑战赛,旷视研究院拿下三项计算机识别冠军 | ICCV 2019
  2. 探索Elasticsearch集群API
  3. wxWidgets 编译 ICON 资源
  4. (Java常用类)日期时间类
  5. KDD 2020捷报 | 第四范式斩获KDD Cup全球冠军 AutoML挑战赛圆满落幕
  6. 14.查看信息深入讲解
  7. Django - 中间件
  8. Datax-web 使用Python3 执行脚本
  9. 设置eclipse的Maven插件引入依赖jar包后自动下载并关联相应的源码(转)
  10. java分割两个时间段不在同月份
  11. NOSQL schema创建原则
  12. python怎么打印路径,python 打印路径的几种结果
  13. Java使用ffmpeg将视频转为Mp4格式
  14. Android 使用数据库操作应用加锁、未加锁,列表展示效果
  15. 换页符'\f'的问题
  16. 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
  17. 新能源与自动驾驶汽车市场
  18. javascript(五)--jquery
  19. carbondate mysql_CarbonData集成Hive、Spark
  20. 数值策划的自我修养(一):任务流程的修改

热门文章

  1. Apache服务器之------虚拟主机多功能配置
  2. 我装上去了 php editor打不开
  3. Android用开源优势超Windows Mobile
  4. 【动画】当我们在读写Socket时,我们究竟在读写什么?
  5. --num 与 num-- 的区别
  6. 【Swift】iOS UICollectionView 计算 Cell 大小的陷阱
  7. getCacheDir()和getFilesDir()方法区别
  8. Core Data 学习笔记(二)被管理对象模型
  9. 栈的增长方向(ZZ)
  10. .net与java之争