NPM流行包再起波澜:维护人员对俄罗斯用户发特定消息,谁来保证开源可信?
编译:代码卫士团队
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
项目维护人员在不提前告知的情况下,在项目最新版本中或选择增加有问题的代码,或插入不必要的具有破坏性的功能。当现有应用使用项目最新版本时,会突然拉取并运行新增加的代码。
一方面,开源软件因其可靠性、受社区支持以及有效性而越来越得到人们的认可;另一方面,因维护人员不断引发的自绑架事件为开源生态系统的整体可靠性蒙上了一层阴影。
2022年以来的第三款“抗议软件”
3月17日,俄罗斯开发人员Viktor Mukhachev 即 Yaffle 在其热门npm库 “event-source-polyfill” 中插入一段有意思的代码。Polyfill 程序包旨在可能不支持它的 web 浏览器上实现现有的 JavaScript 特性。这样,Polyfill 包就可以将 Mozilla 的 “EventSource” API 扩展到可能缺少这一概念的其它浏览器中。
正因如此,Polyfill 包被超过13.5万个 GitHub 仓库使用,npm 的每周下载量超过60万次。
然而,”event-source-polyfill” 1.0.26 版本中引入一个变化,意味着通过该库构建的应用将在启动15秒后,向俄罗斯用户发送反战信息。
截止本文发稿时,新版本仍然存在于npm和GitHub 上,距离它上线已过去4周的时间。这是2022年以来开源开发人员利用广泛使用的软件对公共事件表达自身观点的第三起大型抗议时间。
实际上,就在 “event-source-polyfill” 转向抗议软件的同一时间,其它几大流行的程序包也纷纷跟进。
Chackmarx 公司分析指出,“es5-ext”和”styled-components” 只是冰山一角:周下载量超过数百万的真实 npm 程序包变身抗议软件。
2016年,时年28岁的 Azer Koculu 从 npm 注册表中撤回热门的 “left-pad” 库,对互联网造成重大影响,迫使 npm 的CTO Laurie Voss 不得不恢复遭删除的 left-pad 版本。
2022年1月份,“colors” 和 “faker” 库遭维护人员劫持,导致使用这些依赖关系的数千个生产应用遭破坏。
上个月,”node-ipc” 的开发人员删除了他认为是俄罗斯或白俄罗斯用户在硬盘上的所有数据。
不过,”event-source-polyfill” 事件更为温和一些,它和和平抗议有关。该事件并未删除任何数据或破坏应用,而是督促俄罗斯结束对乌克兰的“不合理侵略”并提示俄罗斯公民寻找可靠的新闻来源。Yaffle 在该库中写道,“乌克兰人民遍布各地,准备好保卫自己的国家——91%的乌克兰人完全支持总统弗拉基米尔·泽连斯基及其对俄罗斯的响应。全世界都在谴责这起不合理的侵略并决定对俄罗斯发起前所未有的制裁。每过一天,公民的感受就会越深。”该开发人员表示,为了防止俄罗斯对传播信息的控制,用户应当警惕“单边”新闻,而应该寻找可靠的新闻来源如BBC的Tor 网站。最后,在呼吁俄罗斯总统普京结束这场“无意义的”战争后,新增加的代码将用户指向已经超过120万名人员签名的Change.org 请愿书。
劫持引发信任问题
对于很多人来说,这种自劫持行为看似是英雄主义行为,但对于一些人而言他们的做法超越了道德底线,并且为所有人带来了必须考虑的问题:开源库的可信性和可靠性。
具体而言,人们对”colors”库遭劫持的褒贬不一,有人对维护人员点赞,反对使用开源却不提供资助的大企业。相比而言,具有破坏性的 “node-ipc” 版本发布却招来开发人员的强烈批评,有人认为它是对整个开源社区可信性的“巨大损害”。
而“event-source-polyfill”则可能引发不同的反应。
一名HackerNews 用户评论称,“弹出消息是战争正在发生并建议下载Tor 浏览器(绕过普京的审查)的内容。对于一些人而言,它是恶意软件;但对于俄罗斯的一些人来说,可能是有价值的信息,能起到作用的信息。”另一名用户则表示,虽然干扰项目既定的预期目的的代码变更可能被称之为“劫持”,但 “event-source-polyfill” 的情况却并非如此:“对于我而言,‘劫持‘ 说明这一行为的意图是脱离项目的最初目的。这一行为看似和项目的原始意图互不相关,因此它并非光明正大,但并非劫持。”
GitHub 上掀起了进一步的辩论,人们担心在极端情况下新引入的部分代码可能破坏生产应用。出于谨慎考虑,某些用户已经将版本退回至安全版本1.0.25。另外也可以克隆 (fork) 现有开源项目的可信版本并选择自己维护这些版本,而不是不差别地使用最新的官方发布版本。
重新定义开源
开源软件是提倡“开放开发流程”、简化许可并更好地让用户和开发人员社区进行同行审议,通过积极参与改进软件安全。
开源注册表如 npm、PyPI 和 RubyGems 设置了一种方法,将准入门槛降至最低。这些注册表允许任何人发布软件包,供专业人员等使用。
虽然传统上,版本控制平台如 GitHub 等和软件开发以及源代码之间存在关联,但没有成本的注册表如npm 为寻求交付并相互使用成品应用的开发人员简化了托管和分发流程。但是,和向公众开放的任意系统一样,软件仓库能够并通常遭恶意人员的滥用。
传统的npm安全事件围绕 typosquatted 包如威胁行动者为了诱骗开发人员安装 Electron 而发布的 “electron” 程序包。如开发人员在控制台错误拼写了 “electron”,则可能收到攻击者的恶意软件包。
2021年,依赖混淆事件成为软件供应链攻击的新型攻击向量。大型安全事件还涉及合法开发人员的账户遭劫持,攻击者发布带有恶意代码的库。2018年发生的“event-stream” 和 ESLint 攻陷事件以及今年发生的 “ua-parser-js”、”coa” 和 “rc” 遭劫持推送恶意软件事件就是类似案例。
但不断发生开发人员自愿从互联网撤回代码或截止自己的项目来发声,使得软件用户重新评估当前的开源模式并公开讨论。虽然当前的抗议软件可能是围绕战争而发声的,但这并不意味着它将一直仅限于所选的趋势事件。开发人员发现了创造性的自我表达渠道,使之不仅限于传播预期功能——开发人员能够决定随意改变这一想法及代码。对于开源,它被人忽视的一个前提就是,开发人员一直可以随心所欲地这么做。
热门Ruby 库中存在严重的命令注入漏洞
PHP包管理器PEAR 中爆多个缺陷可发动供应链攻击,已潜伏15年
FIN7 正在转向密码重置和软件供应链攻击
从主流安全开发框架看软件供应链安全保障的落地
速修复!这个严重的Zlib内存损坏漏洞已存在17年!
攻击者“完全自动化”发动NPM供应链攻击
Pwn2Own大赛回顾:利用开源服务中的严重漏洞,攻陷西部数据My Cloud PR4100
Node-ipc 热门包作者投毒“社死‘’,谁来保护开源软件供应链安全?
因供应商遭不明网络攻击,丰田汽车宣布停产
Linux Netfilter 防火墙模块爆新漏洞,攻击者可获取root权限
丰田汽车顶级供应商 Denso 疑遭勒索攻击,被威胁泄露商业机密
漏洞Dirty COW:影响Linux系统以及安卓设备
第三方支付处理厂商软件有漏洞,日本美容零售商Acro 10万支付卡信息遭攻击
Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器
谷歌宣布 Linux Kernel、Kubernetes 0day 漏洞奖励加倍
Apache Cassandra 开源数据库软件修复高危RCE漏洞2021年软件供应链攻击数量激增300%+
热门开源CMS平台 Umbraco 中存在多个安全漏洞,可使账户遭接管
详细分析开源软件项目 Ajax.NET Professional 中的RCE 漏洞(CVE-2021-23758)
SAP 严重漏洞可导致供应链攻击
Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持
Apache 软件基金会:顶级项目仍使用老旧软件,补丁作用被削弱
美国商务部发布软件物料清单 (SBOM) 的最小元素(上)
美国商务部发布软件物料清单 (SBOM) 的最小元素(中)
美国商务部发布软件物料清单 (SBOM) 的最小元素(下)
NIST 发布关于使用“行政令-关键软件”的安全措施指南
NIST 按行政令关于加强软件供应链安全的要求,给出“关键软件”的定义及所含11类软件SolarWinds 攻击者再次发动供应链攻击
美国“加强软件供应链安全实践的指南” (SSDF V1.1草案) 解读来了
软件供应链安全现状分析与对策建议
“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞
流行的 NPM 包依赖关系中存在远程代码执行缺陷
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制
找到软件供应链的薄弱链条
GitHub谈软件供应链安全及其重要性
揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司开源软件漏洞安全风险分析
开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析
集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市
热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码
GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥
因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
彪马PUMA源代码被盗,称客户数据不受影响
https://www.bleepingcomputer.com/news/security/rise-in-npm-protestware-another-open-source-dev-calls-russia-out/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。