允许为 NPM 存储库中的任何包发布更新的漏洞

GitHub 披露了其 NPM 包存储库基础设施中的两起事件。 2 月 XNUMX 日,作为 Bug Bounty 计划的一部分,第三方安全研究人员(Kajetan Grzybowski 和 Maciej Piechota)报告了 NPM 存储库中存在一个漏洞,该漏洞允许您使用您的帐户发布任何软件包的新版本,无权执行此类更新。

该漏洞是由于处理 NPM 请求的微服务代码中的权限检查不正确造成的。授权服务根据请求中传递的数据执行包权限检查,但将更新上传到存储库的另一个服务根据所上传包的元数据内容确定要发布的包。因此,攻击者可以请求发布他有权访问的包的更新,但在包本身中指定有关另一个包的信息,该包最终将被更新。

该问题在报告漏洞 6 小时后得到修复,但该漏洞在 NPM 中存在的时间比遥测日志覆盖的时间长。 GitHub 声称自 2020 年 XNUMX 月以来没有发现利用该漏洞进行攻击的痕迹,但不能保证该问题之前没有被利用过。

第二起事件发生在26月30日。在使用replicate.npmjs.com 服务的数据库进行技术工作期间,数据库中存在可供外部请求访问的机密数据被泄露,从而泄露了有关更改日志中提到的内部包名称的信息。有关此类名称的信息可用于对内部项目进行依赖攻击(XNUMX 月份,类似的攻击允许在 PayPal、微软、苹果、Netflix、Uber 和其他 XNUMX 家公司的服务器上执行代码)。

此外,由于大型项目存储库被劫持以及通过受损开发者帐户传播恶意代码的案例不断增加,GitHub 决定引入强制双因素身份验证。该更改将于 2022 年第一季度生效,并将适用于最受欢迎列表中包含的软件包的维护者和管理员。此外,据报道,基础设施的现代化将引入对新版本软件包的自动监控和分析,以便及早发现恶意更改。

让我们记住,根据 2020 年进行的一项研究,只有 9.27% 的软件包维护者使用双因素身份验证来保护访问,并且在 13.37% 的情况下,在注册新帐户时,开发人员试图重复使用出现在已知密码泄露。在密码安全审查期间,12% 的 NPM 帐户(13% 的软件包)由于使用可预测且简单的密码(例如“123456”)而被访问。其中有4个来自最受欢迎的前20个软件包的用户帐户,13个软件包每月下载量超过50万次的帐户,40个每月下载量超过10万次的帐户,以及282个每月下载量超过1万次的帐户。考虑到沿着依赖链加载模块,不受信任帐户的泄露可能会影响 NPM 中多达 52% 的模块。

来源: opennet.ru

添加评论