编译:代码卫士
专栏·供应链安全
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
本周,GitHub 披露了于10月至本月期间发现并修复的两个位于 npm 注册表中的漏洞。第一个漏洞可导致攻击者在 npmjs.com 的 “replica” 服务器上暴露npm 私有库的名称,第二个漏洞可导致攻击者在未授权情况下发布任意已有 npm 包的新版本。这两个漏洞暴露了开源软件供应链的软肋。
第一个漏洞位于 “reloica” 服务器上,该服务器主要供第三方服务使用;第二个漏洞是由授权检查不当造成的。
01
Npm 私有包名称遭泄露
GitHub 指出,第一个漏洞是 npmjs 复制服务器上的数据泄露漏洞,是由“常规维护“问题造成的。泄露发生在维护窗口期间,被泄露的数据是npm私有包的名称,而非这些私有包的内容。
GitHub 的首席安全官 Mike Hanley 在博客文章中表示,“在维护 驱动replicate.npmjs.com 上公共 npm 拷贝的数据库期间,创建的记录可暴露私有包的名称。由于公共变更内容中发布的记录,它可导致replicate.npmjs.com 的消费者识别出私有包的名称。其它任何信息如这些私有包的内容,在任何时候都无法访问。“
值得注意的是,虽然私有包的内容未被暴露,但了解私有包的名称就足以使威胁行动者以自动化方式执行针对性依赖混淆和 typosquatting 攻击,这一情况曾经多次发生。
导致数据泄露的是在10月20日前创建的看似 “@owner/package” 的域内npm私有库。GitHub 指出,这类库的名称是在“协调世界时 (UTC) 10月21日13:12:10 至10月29日 15:51:00 期间“被泄露的。
GitHub 在10月26日发现了此次数据泄露事件,截至29日,所有包含私有包名称的记录均已从 npm 的拷贝数据库中删除。尽管如此,GitHub 仍然提醒称 replicate.npmjs.com 服务由第三方消费,因此第三方可能复制了这些数据或者“可能复制了别处的数据“。
为阻止此类问题再次发生,GitHub 已经更改了生成公开拷贝数据库的流程,应该能够消除再次泄露私有包名称的隐患。
02
未授权发布新版本
此次GitHub 还披露了一个严重漏洞,可“使攻击者在未经正确授权的情况下利用某个账户发布任意已有 npm 包的新版本“。该漏洞是因为授权检查不当以及多种负责处理npm注册表请求的微服务之间的数据验证不当造成的。
Hanley 指出,“在这个架构中,授权服务基于在请求URL路径中传递的信息,正确地验证了包的用户授权。然而,执行对注册表数据底层更新的服务负责判断基于已上传包文件的内容,应该发布哪个包。这种差异造成一种可能性:本来发布已有包新版本的请求授权给了某个包但实际上是由另外一个包执行的,从而可能造成未授权的新版本发布。我们通过同时确保发布服务和授权服务的一致性缓解了这个问题,确保授权和发布使用的包是一样的。“
这两个漏洞是由研究员 Kajetan Grzybowski 和 Maciej Piechota 通过 GitHub 的安全漏洞奖励计划报告的。
截至目前似乎并未出现漏洞遭利用的证据。该漏洞存在于npm 注册表中。GitHub 表示,存在的时间范围超过了遥测数据能够判断是否遭恶意利用的范围,不过指出至少从2020年9月起,该漏洞并未见遭恶意利用,“我们迅速验证了漏洞报告,开展事件响应流程,并在收到报告的6个小时内修复了该漏洞”。
03
从2022年起要求双因素认证
不久前,多款热门的 npm 库 “ua-parser-js”、”coa”和 “rc” 遭劫持,用于旨在通过木马和密币挖矿机感染开源软件客户的攻击活动中。
这些攻击被指因攻陷这些npm库的维护人员账户而引发。这些流行库的维护人员并未对帐户启用双因素认证机制。设法劫持维护人员账户的攻击者可以发布这些合法包的新版本并在其中植入恶意软件。
为此,为了避免类似事件再次频发,GitHub 计划将在2022年第一季度的某个时候要求 npm 维护人员启用双因素认证机制。
推荐阅读
在线阅读版:《2021中国软件供应链安全分析报告》全文
对话奇安信代码安全丨十年砥砺前行 迎来软件供应链安全的风口
“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用
GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞
流行的 NPM 包依赖关系中存在远程代码执行缺陷
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
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/npm-fixes-private-package-names-leak-serious-authorization-bug/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。