对 NPM 的攻击,允许您确定包在私有存储库中的存在

NPM 中已发现一个缺陷,允许您检测封闭存储库中是否存在软件包。 该问题是由于向无权访问存储库的第三方请求现有包和不存在包时的响应时间不同造成的。 如果无法访问私有存储库中的任何包,registry.npmjs.org 服务器会返回代码为“404”的错误,但如果存在具有所请求名称的包,则会明显延迟地发出错误。 攻击者可以使用此功能通过使用字典搜索包名称来确定包是否存在。

确定私有存储库中的包名称可能是执行依赖项混合攻击所必需的,该攻击操纵公共和内部存储库中依赖项名称的交集。 了解企业存储库中存在哪些内部 NPM 软件包后,攻击者可以将具有相同名称和较新版本号的软件包放入公共 NPM 存储库中。 如果在组装过程中,内部库未在设置中显式链接到其存储库,则 npm 包管理器将认为公共存储库具有更高的优先级,并将下载攻击者准备的包。

GitHub 在 XNUMX 月份收到了有关该问题的通知,但以架构限制为由,拒绝增加针对攻击的保护措施。 建议使用私有存储库的公司定期检查公共存储库中是否出现重叠名称,或者代表他们创建存根,其名称与私有存储库中的包名称重复,以便攻击者无法将其包放置在具有重叠名称的位置。

来源: opennet.ru

添加评论