源代码|以反战之名,向开源项目“投毒”?知名 NPM 包作者注入恶意代码,只为一个文件名
作者 | 张洁 责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
2021年 , 开源软件引发的安全性问题层出不穷 , 继影响广泛的Log4j2漏洞 , 还有因没有开源收入 , 著名开源npm包faker.js和colors.js项目作者Marak Squires主动恶意破坏自己的项目并“删库跑路”等事件 。 近期又有开发者向自己维护的项目源代码中“投毒” , 将恶意代码注入其中 , 当其他开发者使用该项目时 , 自己的计算机桌面会自动生成一个名为“WITH-LOVE-FROM-AMERICA.txt” , 打开乍一看啥都没有 , 但又细思极恐 。
在了解这位开发者究竟为何这么做时 , 其名曰“反战” 。
向多版本“投毒” , 开源开发者的蓄谋
这个故事要从名为node-ipc和Peacenotwar的两个npm包开始说起 。
node-ipc是npm中一个主流的开源包 , 平均每周下载次数高达100万次 。 它允许进程间通信 , 被广泛用于基于Java的项目中 , 在我们经常使用的Vue.js和Node.js等框架中也常能看到node-ipc的身影 。
时针回到3月8日这一天 , node-ipc背后的作者RIAEvangelist(Brandon Nozaki Miller)在这个项目中发布了一个Peacenotwar的npm包 。
所谓Peacenotwar , 正如RIAEvangelist对此模块撰写的描述那番:
这段代码是一个非破坏性的例子 , 说明为什么控制你的node模块很重要 。 它还可以作为一种非暴力抗议 , 以反对俄罗斯目前威胁世界的侵略行为 。 此模块将在您的用户桌面上添加一条和平消息 , 并且仅在它不存在时才会这样做 , 只是为了礼貌 。
事实上 , 据安全厂商Snyk后来的调查显示 , 这是一次蓄意而为的行动 , 并非RIAEvangelist一时兴起 。
因为在3月7日 , RIAEvangelist接连发布了node-ipc的10.1.1、10.1.2两个版本 。 在这两个版本中 , RIAEvangelist对代码进行了更新 , 还将源码进行了压缩 , 简单地将一些关键字符串进行了base64编码 , 由此也让部分开发者对他的所为可能会带来的一些可疑活动、可能滥用源代码和包行为表示担忧 。
此次更新的两个版本的代码被添加设置了一个计时器 , 一旦有代码经过计时器函数时 , 它们将在以下代码行中用作文件输入源 , 以擦除文件内容并将其替换为心形符号 。 除此以外 , 这段代码还会对来自俄罗斯或白俄罗斯的IP进行监测 。
本来很多人只是对RIAEvangelist的行为感到担心和不安 , 万万没想到 , 3月8日 , node-ipc 10.1.3版本发布了 , 且这个版本引入了Peacenotwar模块 。 四个小时后 , node-ipc 11.0.0版本发布 , 此时 , 开发者在基于node-ipc包构建项目时 , 桌面上会无缘无故出现一个名为“WITH-LOVE-FROM-AMERICA.txt”的文件 。
文章图片
刚开始 , 并没有太多人发现这个问题 , 因为在此之前 , Peacenotwar模块几乎无人下载 。
然而 , 直到3月15日 , Peacenotwar的下载量激增 。
想必很多人也能猜到 , 没错 , 在这一天中 , RIAEvangelist将Peacenotwar作为node-ipc的依赖项引入了 。 与此同时 , RIAEvangelist也发布了node-ipc 9.2.2补丁版本 , 它是node-ipc的最新的稳定分支 , 其中主流的前端框架vue cli使用了这一版本 。
此事一经发现 , 便在技术圈中引起了热议 。
文章图片
开源社区的信任再遭破坏
截至目前 , RIAEvangelist把“投毒”的代码删除了 。 vue cli项目中的node-ipc版本也回滚到了安全的9.2.1版本 。 最早有问题的node-ipc10.1.1和node-ipc10.1.2都已经废弃 。
除此之外 , RIAEvangelist还在GitHub的相关issue讨论中回复到:
1.运行该代码实际上是不可能的 , 它不构成威胁 , 但它看起来确实很吓人 。
2.我打算把这块不是战争的模块标记为抗议软件 , 只是为了明确说明它是这样的 。
其中 , RIAEvangelist维护着40多个其他npm包 , 下载量达数亿 。
文章图片
现实来看 , 开源生态耗费了无数开发者的时间与精力 , 才慢慢壮大起来 。 因自己的个人观点和做法 , 牵扯其背后的开源开发者们和普通用户 , 无疑之中严重破坏了开源生态的信任 , RIAEvangelist所带来的影响也是无法估计的 。
看了有关问题的讨论 , RIAEvangelist试图在扭曲事实 , 还说API Key是无效的 。 但经另一位开源开发者MidSpike实测后 , 这个API Key是有效的 。
文章图片
文章图片
脆弱的供应链 , 需要每一个社区成员守护
从彼时的Log4j2到现在的node-ipc , 这不禁让人担心一个问题 , 那就是开源软件供应链安全问题 , 越是庞大的项目在供应链安全方面越是脆弱 。
对此 , 有不少网友建议开发一种代码审查机制 。 如果审查机制建立 , 包含恶意代码的包将会进一步减少 , 同时开源社区的安全更有保障 。 除此以外 , 广大网民还需要有反恶意行为的意识 , 维护“绿色”开源 。
开源社理事长庄表伟直接表示:我们需要建立一种开源世界的反分裂共识 。
同时 , 开源安全扫描平台snyk中也给出了一些建议:“由于担心未来的代码更新可能会给用户带来风险 , 我们建议完全避免使用npm包 。 如果此npm包作为您正在构建的应用程序的一部分捆绑在您的项目中 , 那么我们建议您使用npm包管理器功能来完全覆盖被破坏的版本并将传递依赖关系固定为known good 。 ”以此来解决用户的担忧 。
这件事让多少用户痛恨RIAEvangelist , 破坏了多少人所建立的心血 。 一代人应该有一代人的担当 , 广大用户应该奉献自己的力量 , 守护好这个社区 。 如果开源社区不加以整治 , 未来又会有多少个这样的“包”呢?开源社区的成员还会越来越多吗?对于这件事 , 你有什么看法吗?
参考链接:
2.https://github.com/vuejs/vue-cli/issues/7054
3.https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-package-vulne rability/
END
《 新程序员001-004 》全面上市 , 对话世界级大师 , 报道中国IT行业创新创造
?滴滴6月或发布造车计划;英特尔顶级专家Mike Burrows跳槽AMD;Android 13开发者预览版2发布|极客头条
?俄罗斯 IT 存储空间告急 , 未来 2 月或将耗尽?
? 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨! 揭晓中国开发者真实现状
—点这里 ↓↓↓记得关注标星哦~—
一键三连 「分享」「点赞」「在看」
【源代码|以反战之名,向开源项目“投毒”?知名 NPM 包作者注入恶意代码,只为一个文件名】成就一亿技术人
推荐阅读
- 系列|【系统】一加8系终于推送ColorOS12正式版 8/8T/8Pro可以升了
- 版权|山东济南:和圣文刀 以文兴邦
- 图文|浩辰CAD看图王教你:使用镜像功能可以科学“偷懒”!
- 材料|松下计划2030年使EV电池镍含量减半,以应对供应危机
- 协同发展|珍岛集团深耕技术研发能力,以科技创新为中小企业提效
- 电子商务|Injectsense获得170万美元拨款 以开发比米粒还小的眼球植入物
- Samsung|三星发布Galaxy A73 以更高的价格带来更强的配置
- 电子商务|以冰鲜鱼充作活鱼 叮咚买菜致歉:报道属实 已暂停该站点运营
- 欧洲|英伟达 RTX 3090 欧洲降价,自去年 8 月以来首次跌破 2000 欧元
- nVIDIA|绕过CPU:英伟达与IBM致力推动GPU直连SSD以大幅提升性能