5

开源模块维护者破坏代码,只为抗议乌克兰战争

  • 浏览次数 33100
  • 喜欢 0
  • 评分 12345

Hackernews 编译,转载请注明出处:

一个广泛应用于 Windows、 Linux 和 Mac 环境的开源模块的维护者最近破坏了它的功能,以抗议乌克兰的战争,大众再次将注意力集中在与软件代码依赖相关的潜在的严重安全问题上。

Node-ipc 是一个用于进程间通信的 JavaScript 模块,数百万开发者在开发软件时使用这个模块。最近,该模块的作者 Brandon Nozaki Miller 在软件中插入了代码,用于删除定位于俄罗斯和白俄罗斯的开发者系统的所有文件。

后来,他迅速从 npm JavaScript 注册表中删除了包含雨刷代码的模块版本,但随后又发布了另一个名为“ peacenotwar”的模块,并使其成为 node-ipc 的依赖项。因此,下载了 node-ipc 的开发人员最终在桌面目录中放置了一个与乌克兰战争相关的消息传递文件。所有版本统计起来,node-ipc 模块平均每周的下载量超过一百万次。

应用程序安全供应商Snyk 本周调查了这起事件,并将其描述为破坏全球开源社区的行为的一个例子。“这起安全事件涉及一名维护人员破坏磁盘文件的破坏性行为,以及他们试图隐藏和重申以花式蓄意破坏的企图,”Snyk的开发商宣传总监 Liran Tal 在博客中说。“虽然这是一种出于抗议动机的攻击,但它突显了软件供应链面临的一个更大的问题: 代码关联的依赖关系可能会对您的安全产生巨大影响。”

Node-ipc 事件是近几个月来第二起说明企业使用开放源码和第三方组件构建软件之后面临的严重风险的事件。

今年1月,Marak Squires——两个广泛使用的开源库—— colors.js 和 faker.js 的维护者——故意在模块中引入代码,导致依赖它们的应用程序多次打印输出“ liberty”一词,后面还跟着胡言乱语。Sonatype负责维护 Maven 中央 Java 包存储库并调查 Squires 事件,据称,‘ colors’有超过33亿次的下载量,在超过19000个项目中使用,而‘faker’则有超过2.72亿次的下载量和大约2500个依赖项目。因此,成千上万的应用程序受到了 Squires 的行动的影响,Sonatype 推测这可能是 Squires 对他认为的大公司和商业项目免费从他的工作中获益的一种抗议形式。

危险的干预

Snyk 对最新 node-ipc 事件的分析表明,Miller,使用了 RIAEvangelist 这个名字,在2021年3月7日的几个小时内发布了包含破坏性代码(10.1.1和10.1.2)的两个 node-ipc 版本。被破坏的模块在被移除之前,可以在 npm JavaScript 注册表上下载,下载不到24小时就被删除了。尽管如此,与 node-ipc 相关的大量下载使得至少一些在代码中使用该模块的开发人员受到了影响,Tal 在 Dark Reading 的评论中说。

他说: “破坏性的10.1.1和10.1.2版本已经从 npmjs 的注册表中删除了,我们没来得及为它们收集任何下载数据。”但是,node-ipc 的10.x 版本分支每周大约有3,000次下载,因此可以有把握地假定,包含的雨刮器代码的下载量也是这样的数量。

一天后,也就是3月8日,米勒在 NPM 上发布了这个peacenotwar包。他说,这个模块既是对俄罗斯入侵乌克兰的抗议,也是一个“非破坏性”的例子,正说明开发人员需要对节点模块实施更多控制。这应该作为一个有益的例子,说明团队应该使用显式依赖版本,”Miller 在一个 GitHub 线程中说。“升级与否永远是我们来决定。”

Tal 表示,peacenotwar 模块最初只有几十到几百次下载,但是,当它被添加为主流 node-ipc 分支的一个依赖项,下载量就超过了4万次。“不过请记住,这个模块的破坏性较小,但对终端用户来说仍然相当令人担忧。”

在一份声明中,Sonatype 首席技术官 Brian Fox 说,最近的事件表明了开发人员在选择使用开源模块时应该审查维护人员。他建议开发人员应该只从基金会支持的项目中选择代码,而不是从个人项目中选择代码。选择一个只有一个维护人员的项目意味着要完全信任一个开发人员。他指出,由基金会支持的开源项目往往更可控,这使得单个开发人员很难以一己之力改变代码。

Tal说,之前的研究表明,关联的依赖关系与每个被添加到正在构建的软件中的模块显著息息相关。他指出,2019年的一项研究显示,由于可传递的依赖关系,开发人员平均安装一个 npm 包就隐式信任其他80个包。他表示: “一些非常受欢迎的软件包可以达到10万多个其他软件包,这使得它们成为主要的攻击目标。”

供应链安全问题已经增加,应该是任何开发者,创业者,或企业的头等大事,Tal说。安全问题与维护者的声誉、许可证、安全漏洞和项目的可维护性都有关。“开发人员应该仔细检查开源组件的总体健康评分,其中包括上述所有标准,或许还不止。”

消息来源:DarkReading,译者:Zoeppo;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc ” 并附上原文