原题目:
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 软件供应链防火墙为用户提供软件开发生命周期全阶段的端到端全局可视化,并且能疾速辨认和定位平安危险,依据破绽重大等级评分确定修复优先级。