【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

以反战为名,百万周下载量 node-ipc 包作者进行供应链投毒

  • 2022-03-16
  • 本文字数:1993 字

    阅读完需:约 7 分钟

以反战为名,百万周下载量node-ipc包作者进行供应链投毒

 近日,不少开发者在使用到 vue -cli 中的 node-ipc 模块时,这个依赖项会在桌面以及其他位置创建一个叫做“WITH-LOVE-FROM-AMERICA.txt”的文件,不过打开这个文件是空的。据悉,该 package 每周下载量达到了百万。另外,使用 Yarn 的开发者也受到了影响。 

以反战为名的供应链投毒?

 

开始有人以为只是个恶作剧,但事情并非如此简单。有开发者在对代码进行测试处理后发现,node-ipc 包的作者 RIAEvangelist 在投毒。他起初提交的是一段恶意攻击代码:如果主机的 IP 地址来自俄罗斯或白俄罗斯,该代码将对其文件进行攻击,将文件全部替换成 ❤该作者是个反战人士,还特意新建了一个 peacenotwar 仓库来宣传他的反战理念。


 攻击源代码地址:https://github.com/RIAEvangelist/node-ipc/blob/847047cf7f81ab08352038b2204f0e7633449580/dao/ssl-geospec.js

 

TC39 代表、Web 开发工程师贺师俊在知乎上分析称,源码经过压缩,并简单地将一些关键字符串进行了 base64 编码,目的是利用第三方服务探测用户 IP,针对俄罗斯和白俄罗斯 IP 尝试覆盖当前目录、父目录和根目录的所有文件。

 

虽然作者删除了该段代码,但贺师俊认为这仍然是一种恶劣的供应链投毒。“这里,具体的动机不重要,无论其动机多么良好(更不用说,很多人可能并不同意其政治倾向和道德立场),这样的行为都严重破坏了开源生态中的信任。”

 

OpenHarmony 项目群工作委员会执行总监、中国科学院软件研究所高级工程师罗未也表示,开源软件供应链安全是一个及其严酷的议题,如果说 log4j 还能看做难以避免的工程误差,这件事就存在违法嫌疑。

 

有开发者提供了该问题的解决方式:首先按照 readme 正常 install,构建结束后,用编辑器全局搜索'peacenotwar',将其全部删除;然后在项目的 node_models 目录下,将'peacenotwar'目录删除;之后将'项目/node_modules/node-ipc/node-ipc.js'这个文件中引用'peacenotwar'的代码注释掉,便可以正常启动项目。

 

此外,Vue-cli 昨天发布了新版本5.0.2,将 node-ipc 版本锁定到 v9.2.1,用户可以直接升级。据悉,受恶意代码受影响的 node-ipc 版本为 v10.1.3 ,已经被作者删除或被 NPM 撤下,而 WITH-LOVE-FROM-AMERICA.txt 文件是由 v11.0.0 版本引入的。

 

在此次事件中,有开发者认为Vue 团队在发布新版本方面做得还不够,Vue 团队应该在官方网站上添加关于该事件的弹出窗口,弃用所有受感染的 vue-cli 包,为其添加一条消息。另外还可以在发布新版本时添加一些警告,以便用户看到警告并自动升级。

 

脆弱的 Node.js 生态

 

这一事件再次显示了 JS/Node/NPM 生态的脆弱。

 

去年 10 月,NPM 官方仓库 ua-parser-js 被恶意劫持,多个版本被植入了挖矿脚本。这个库每周下载数百万次,被用于一千多个项目,包括 Facebook、微软、亚马逊、Instagram、谷歌、Slack、Mozilla、Discord、Elastic、Intuit、Reddit 等公司的项目。同年 2 月,NPM 遭遇供应链投毒攻击,其官方仓库被上传了radar-cms恶意包,借此窃取 K8s 集群凭证。

 

NPM 模块备受开发人员欢迎,这些模块间还普遍存在复杂的依赖关系,某个包通常安装另一个包作为依赖项,而开发人员对此却并不知情。依赖项的绝对数量也带来了更多的安全问题。只要破坏了开发人员普遍使用的流行包,恶意代码可以直接大规模地传播给受害者,而这完全可以通过依赖混淆、劫持弱凭据、利用漏洞访问目标代码或使用开发人员放弃的包的名称来完成。

 

另外,NPM 存储库 npmjs.com 不要求 NPM 包中的代码与链接的 GitHub 存储库中的代码相同。这意味着攻击者不需要破坏 GitHub 存储库,只要破坏 NPM 包即可。

 

贺师俊在知乎上表示,要解决或缓解这一问题,应该考虑在 JS 语言和 JS 运行时层面引入一些机制,比如说针对包级别的权限管理(deno 那样粗粒度的应用级别的权限管理并不足以解决供应链投毒问题)、在更多的 API 中引入类似 TrustedType 的机制等。“而这显然已经超出了库、框架或工程管控的层面。这也是为什么我一直说国内头部大厂应该要投入资源去参与语言标准、引擎和平台实现。”

 

罗未提出,开源软件可参照其他行业的处理方式,如建筑设计师要终生为建筑设计质量担责、银行批贷员要终生为发放的贷款担责等。

 

“开源软件,特别是重要的核心开源软件,往往远比一笔贷款或一个建筑对全球社会经济影响深远。开源软件作为一个具有风险的重型工程行业,必须匹配的行业风险管控体系,这是我们不得不面对的问题。”

 

结束语

 

“看一遍开源协议,要么 fork 要么忍着。”有开发人员对该事件评论道。前有 Node、React、pytorch、GitHub 等官网声明支援乌克兰,后有个人开发者进行供应链投毒,战争让大家对开源有了不同以往的认识。

 

开源组织应不应该旗帜鲜明地表达自己技术之外的立场,并利用自身影响力去支持某一方呢?这是一个仁者见仁、智者见智的问题,我们不做赘述。但这个问题实实在在地出现了,就成了整个开源行业应该考虑的问题:当开源开始“站队”时,开发者该如何自处?


2022-03-16 16:229349

评论 2 条评论

发布
用户头像
一切都在预示着自主的必要性
2022-03-26 11:41
回复
用户头像
白漂的一定要还的!
2022-03-21 09:05
回复
没有更多了
发现更多内容

【入门教程直播第三期】如何完成一次高质量的 OceanBase 数据迁移

OceanBase 数据库

数据库 学习 开源 课程 oceanbase

青岛等保测评机构有几家?咨询电话多少?在哪里?

行云管家

网络安全 等保 等级保护 等保测评 等保2.0

2022北京展会专题

InfoQ_caf7dbb9aa8a

2022北京-大数据-博览会

InfoQ_caf7dbb9aa8a

Zilliz 上榜甲子光年「2021 中国最具商业潜力的20 家数据智能 Cool Vendor」

Zilliz

在自己的服务器上部署hexo博客

为自己带盐

Hexo 28天写作 12月日更

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker配置介绍及发送流程、异常(XX Busy)问题分析

洛神灬殇

RocketMQ 消息队列 Apache RocketMQ 12月日更 System Busy/Broker busy

央行数字货币完成闭环测试 亮剑在即

CECBC

Camtasia有哪些基本功能

淋雨

Camtasia 录屏软件

netty系列之:一个价值上亿的网站速度优化方案

程序那些事

Java Netty nio 程序那些事 12月日更

OceanBase 源码解读(七):一文读懂数据库索引实现原理

OceanBase 数据库

开源 oceanbase 技术解析

MySql优化:一条SQL语句的执行过程是怎样的?

秋水

MySQL性能优化 内容合集 签约计划第二季

区块链技术何以成为中国数字化转型最新驱动力?

CECBC

2022第十五届北京国际物联网展览会

InfoQ_caf7dbb9aa8a

北京行动计划

Spark和Hadoop以及区别

编程江湖

大数据

注册了一个新域名(10/28)

赵新龙

28天写作

2022北京-AI人工智能-主题展

InfoQ_caf7dbb9aa8a

站在你领导的角度考虑问题

张老蔫

28天写作

万吨黄金做后盾!央行数字货币正式拉开序幕

CECBC

Linux一学就会之文件系统结构-硬链接和软链接

学神来啦

Linux 运维 链接 linux云计算 硬盘

30个类手写Spring核心原理之Ioc顶层架构设计(2)

Tom弹架构

Java spring 源码

2022世界物联网AIOTE博览会-北京开幕

InfoQ_caf7dbb9aa8a

智慧园区系统建设助力智慧城市信息化建设

a13823115807

智慧城市 智慧园区 智慧园区系统平台建设

浅析流媒体CDN与WEB CDN的业务差异

郑州埃文科技

CDN加速 IP网络 在线并发

数据库大赛50强之「中国人民大学」:培养工程性精英人才,共筑数据库美好未来

OceanBase 数据库

开源 新闻动态 oceanbase OceanBase 数据库大赛

练手练到阅文集团作家中心了,python crawlspider 二维抓取学习

梦想橡皮擦

12月日更

模块6作业

Asha

2022年企业采购多云管理软件就选行云管家!

行云管家

云计算 公有云 混合云 多云 云管理

模块六作业

panxiaochun

架构实战营

大数据开发之传输组件Sqoop的功能介绍

@零度

大数据 sqoop

架构实战营-模块六作业

无名

架构实战营 「架构实战营」

以反战为名,百万周下载量node-ipc包作者进行供应链投毒_开源_褚杏娟_InfoQ精选文章