资讯公告
  • 你的位置:
  • 首页
  • >
  • 资讯公告
  • >
  • 安全
  • >
  • 黑客入侵20个知名开发者帐户可能会破坏npm生态系统的一半
黑客入侵20个知名开发者帐户可能会破坏npm生态系统的一半
发布时间:2019-10-16 发布者:FebHost

npm.png


根据最近的一项学术研究,JavaScript库的npm生态系统比大多数开发人员想象的要更加交织在一起,并且整个过程是一堆巨大的卡牌,是不破坏数十万个项目的一个不错的选择。


由德国达姆施塔特技术大学的计算机科学系进行的这项研究分析了整个npm生态系统的依赖性图。


研究人员下载了截至2018年4月发布的所有npm软件包的元数据,并创建了一个巨型图形,其中包含676,539个节点和4,543,473个边缘(连接节点的线)。


此外,学者还分析了同一软件包的不同版本,查看了历史版本(676,539个软件包为5,386,239个版本),还查看了软件包维护者(199,327个npm帐户),以及影响软件包的已知安全漏洞(609个公共报告)。 。


他们的目标是了解如何破解一个或多个npm维护者帐户,或如何在npm生态系统中回荡一个或多个软件包中的漏洞;以及一次导致成千上万个npm项目内部发生安全事件所需的临界数量。


NPM软件包有太多依赖关系

根据Darmstadt团队的说法,这一临界点很容易实现,这主要是因为正常的npm JavaScript程序包具有异常大量的依赖关系-该程序包平均从39个不同的维护者中加载了79个第三方程序包。


对于平均仅依赖于其他20个维护者的代码的流行软件包来说,这个数字要低一些,但是研究团队发现,一些流行的npm软件包(600)依赖于100多个维护者编写的代码。


根据研究小组的说法,对于依赖项和第三方开发人员向上游程序包贡献代码的平均数量而言,这一高价值是JavaScript编程中“微程序包”趋势的副作用,该趋势将基本功能分为npm程序包,其中包括仅几行代码。


负面影响是npm程序包从数十个源中加载代码,如果不加监督,所有这些源都将成为第三方开发人员进行攻击的入口点。


只有20个帐户...只有20个帐户

但是,尽管某些npm软件包从太多的软件包和太多的开发人员中加载代码,但npm软件包存储库中又形成了另一种危险的趋势-将流行的npm软件包合并到几个维护者帐户下。


研究小组说:“ 391名有影响力的维护人员影响了10,000多个软件包,使它们成为攻击的主要目标。” “如果攻击者设法破坏了391名最有影响力的维护者中的任何一个的账户,社区将遭受严重的安全事件。”


此外,在最坏的情况下,多个维护者合谋,或者黑客获得了许多帐户的访问权限,Darmstadt团队表示,仅访问20个流行的npm维护者帐户即可部署恶意代码,从而影响超过一半的npm生态系统。


但是,黑客不一定需要入侵帐户。还可以在现有的npm软件包中查找安全漏洞。


考虑到平均将npm软件包平均加载到另外230个npm库中,即使在中等受欢迎的软件包中发现可利用的漏洞也可以使攻击者能够在数百个其他库中运行代码,其中一些库可能会用于关键业务或财务系统。


此外,攻击者真的不需要寻找新的漏洞。根据Darmstadt团队的扫描,所有程序包中有很大百分比(最多40%)依赖于具有至少一个公共漏洞的代码,这表明许多npm程序包以及所有面向用户的应用程序目前可能容易受到攻击。它们已被用来帮助创建。


通过保护一些帐户,程序包可能会更好

但是研究小组建议,可能有办法摆脱这种混乱局面。抵消npm生态系统中所有这些负面影响的最简单解决方案是审查开发人员帐户并审核流行的npm软件包,以确保代码安全且来自受信任的凭证来源。


这名德国学者声称,审核140个最受欢迎的帐户以及300个流行的npm库,应该可以将npm生态系统内部的供应链攻击风险降低一半。


Darmstadt团队的研究受到了过去对npm生态系统的供应链攻击的“启发”,例如:

2018年11月 -黑客将事件流npm程序包后门,以将恶意代码加载到BitPay Copay桌面和移动钱包应用程序内部,并窃取加密货币。

2018年7月 -黑客利用旨在窃取其他开发人员的npm凭据的恶意代码破坏了ESLint库。

2018年5月 -黑客试图在名为getcookies的流行npm包中隐藏后门。

2017年8月 -npm团队删除了从其他项目中窃取环境变量的38个JavaScript npm软件包,以收集对项目敏感的信息,例如密码或API密钥。

购物车