共计 1416 个字符,预计需要花费 4 分钟才能阅读完成。
原题目:
New npm timing attack could lead to supply chain attacks
原文链接:
https://www.bleepingcomputer….
据 Beepingcomputer 音讯,平安钻研人员发现了一种 npm 定时攻打,它会泄露公有软件包的名称,因而攻击者能够基于此公开公布歹意克隆软件包,以坑骗开发者应用它们。
该攻打的原理是利用在开发者搜寻公有软件包时与库中的软件包相匹配时返回“404 Not Found”谬误的渺小时间差。尽管响应工夫的差别只有几百毫秒,但这足以确定一个公有软件包是否存在,进而对包进行假冒。
企业为外部我的项目和某些软件产品创立公有软件包,以最大限度地缩小其开发团队陷入错别字攻打的危险,并窃密代码和性能。
企业让公有软件包始终处于私密状态是十分重要的,否则攻击者能够创立克隆或用有错别字的软件包以蛊惑企业员工下载并在软件我的项目中应用它。如果开发者和外部软件测试人员没有发现这一纰漏,产品中转终端用户从而造成供应链的平安危险。
在一份由 Aqua 威逼钻研团队出品的报告中指出,攻击者越来越关注软件供应链攻打,2021 年针对软件供应链的攻打流动数量比今年翻了 3 倍。
定时攻打详情
npm 蕴含了一个 registry API,它容许用户下载已存在的软件包,并查看包是否存在以及在特定范畴内接管所有包的信息。当应用 npm 镜像仓库来下载不存在或者曾经设为私密的软件包时,网站会返回一个 404 HTTP 的错误代码,这意味着无奈找到软件包。
在 npm 中对一个 API 申请响应 404 Not Found
Aqua 通过应用该 API 查看他们在 npm 上创立的公有软件包是否存在,并比拟 404 HTTP 谬误与 API 查看不存在的包的响应工夫,从而发现了 npm 定时攻打。
钻研人员通过查看 5 次某个软件包名称是否存在来进行测试。他们发现,npm 响应申请所需的均匀工夫存在差别,这使他们可能分辨出一个软件包是公有的还是不存在的。具体而言,当公有软件包存在时其均匀响应工夫是 648 毫秒,而当其不存在时响应工夫降落为 101 毫秒。
5 次申请的响应工夫
钻研人员认为这是因为 npm 自身的缓存机制及 API 架构导致了这种信息泄露的可行性。
黑客能够尝试“全盲”字典式攻打,或者在指标组织的公开软件包中总结命名法则,以推导出可能的公有软件包名称。此外,在线信息中可能蕴含包的历史信息,所以攻击者能够利用它们来确定哪些公开包可能在起初会转为私密。
在后一种状况下,应用克隆包的潜在危险是较为荫蔽的,因为一个已经公开的包的旧正本可能仍保留足够的性能,并仍旧在软件产品中发挥作用。
GitHub 将不会修复这一问题
Aqua 曾于 2022 年 3 月向 GitHub 报告这一 bug,但在 3 月 25 日时被告知因为架构限度将不会修复它。“因为架构所限,咱们无奈避免因为确定 npm 中是否存在特定公有软件包而产生的定时攻打”。
钻研人员指出企业能够采取预防性措施,如常常在 npm 中检索可疑软件包,这些包常会以反复或类似的名字来蛊惑开发人员。此外,因为 npm 不容许在公开的仓库中上传同名软件包,企业能够创立与公有包类似或反复名字的公开软件包来阻止歹意包的创立。
总而言之,保护软件供应链平安是一项简单且极具挑战的工作,须要企业时刻关注软件开发各个阶段的平安。Seal 软件供应链防火墙为用户提供软件开发生命周期全阶段的端到端全局可视化,并且能疾速辨认和定位平安危险,依据破绽重大等级评分确定修复优先级。