聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士团队
专栏·供应链安全数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
越来越多的开发人员通过由数千软件应用和组织机构活跃使用的开源项目,发出自己的声音。项目维护人员在不提前告知的情况下,在项目最新版本中或选择增加有问题的代码,或插入不必要的具有破坏性的功能。当现有应用使用项目最新版本时,会突然拉取并运行新增加的代码。
一方面,开源软件因其可靠性、受社区支持以及有效性而越来越得到人们的认可;另一方面,因维护人员不断引发的自绑架事件为开源生态系统的整体可靠性蒙上了一层阴影。
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” 遭劫持推送恶意软件事件就是类似案例。
但不断发生开发人员自愿从互联网撤回代码或截止自己的项目来发声,使得软件用户重新评估当前的开源模式并公开讨论。虽然当前的抗议软件可能是围绕战争而发声的,但这并不意味着它将一直仅限于所选的趋势事件。开发人员发现了创造性的自我表达渠道,使之不仅限于传播预期功能——开发人员能够决定随意改变这一想法及代码。对于开源,它被人忽视的一个前提就是,开发人员一直可以随心所欲地这么做。
代码卫士试用地址:https://codesafe.qianxin.com/开源卫士试用地址:https://oss.qianxin.comhttps://www.bleepingcomputer.com/news/security/rise-in-npm-protestware-another-open-source-dev-calls-russia-out/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 “赞” 吧~
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论