过去的6个月中,在开发者最常下载的java script包库npm中发现了1300多个恶意包。这种恶意组件数量的快速增长也反映出了npm正在成为恶意软件的传播平台。
开源安全和管理公司WhiteSource最新研究发现,恶意npm包数量的不断增加使人感到很不安,这些包主要是被用作网络应用的组件。任何使用该恶意代码块的应用程序都可能使其用户遭到数据盗窃、加密劫持以及僵尸网络等攻击。
该公司表示,在发现的恶意软件包中,有14%是为了窃取证书等敏感信息,而近82%的软件包则是在侦查用户的信息,攻击者采用主动或被动的方式来收集目标的相关信息。
研究人员在周三的报告中说,由于npm包每周的下载量超过了200亿次,因此这些恶意代码会被安装在全球无数的软件和应用程序的网络组件中,攻击者可以利用它们获得大量的资产。据WhiteSource称,平均每个月有32,000个新的npm软件包版本发布(每天17,000个),有整整68%的开发者依赖它来创建在线功能。
研究人员说,这种水平的攻击活动可以使威胁者发起一系列的软件供应链攻击。因此,WhiteSource调查了npm中的恶意攻击活动,在2021年发现了1300多个恶意包,这些恶意包之后被删除,但是在被删除之前,可能就已经被引入了大量的应用程序内。
他们在报告中写道,攻击者正在集中精力利用npm恶意包来达到自己的攻击目的,在这些供应链攻击中,攻击者通过感染现有的组件将他们的攻击转移到上游,随之这些组件被分发到下游并很可能已经被安装了数百万次。
研究人员指出,由于每月都有众多npm软件包被发布,一些恶意软件包也很容易成为漏网之鱼。
为什么要攻击npm?
据WhiteSource报道,java script是目前最常用的编程语言,全球约有1640万java script开发人员。
研究人员说,正是由于它在互联网应用程序和系统中的广泛应用,使得java script生态系统成为攻击者的目标。研究人员说,Npm本身就是最受欢迎的软件包管理器和注册中心之一,其中包含了180多万个活跃的软件包,平均每个软件包有12.3个版本。
像Npm这样的软件包注册处还存储了软件包、与之相关的元数据以及安装它们所需的参数配置,这些都可能成为攻击载体。所以特别是当需要跟踪软件包的版本时,也就使得IT部门很难跟上。
此外,尽管npm和其他注册机构在java script的开发过程中发挥着不可或缺的作用,但他们所执行的相关安全标准是最低的,因为它们其中大多数都是由开源社区维护和验证的,这也就使得攻击者的攻击时机已经成熟。
事实上,攻击者肯定已经注意到了利用npm进行攻击的可能性,而且在去年的几次攻击中还对用户的注册表进行了攻击。
1月,攻击者利用npm传播CursedGrabber恶意软件,该软件可以窃取Discord令牌,从而实现对用户账户和服务器的攻击。然后在7月,研究人员发现了一个恶意的npm包,该npm包通过使用Chrome的账户恢复工具来窃取密码。
12月,攻击者再次使用npm针对Discord进行攻击。通过在软件包管理器中隐藏恶意代码,获取Discord令牌,接管那些毫无防备的用户的账户和服务器。
常见的恶意软件、攻击目标以及影响
WhiteSource的研究人员在报告中提到了他们观察到的隐藏在恶意npm包中的一些常见的恶意软件,其主要的功能是进行凭证窃取并运行僵尸网络。
WhiteSource在调查中发现的一些恶意包及其功能主要包括以下内容:
mos-ass-loader和css-resources-loader,它们可以实现远程代码执行(RCE)攻击。
circle-admin-web-app和browser-warning-ui,它们可以选择恶意的外部包进行下载。
@grubhubprod_cookbook,它主要从事依赖性混淆。
H98dx,一个在安装时运行的远程shell可执行文件,可以感染机器。
Azure-web-pubsub-express,它可以收集主机的信息。
研究人员还描述了他们在10月份观察到的供应链攻击,该攻击使用了一个流行的npm库,ua-parser-js,该库用于解析用户代理字符串来识别用户的浏览器、操作系统、设备和其他属性。他们说,该库每周有超过700万次的下载。
研究人员解释说,攻击者使用ua-parser-js来利用软件供应链来获得敏感数据。
研究人员写道:"攻击者在接管了开发者的npm账户后,将恶意代码插入到了三个版本的ua-parser-js文件内。同时发布了这个包的三个新版本,试图让用户下载它们。"
该软件包未受感染的版本是0.7.28,但攻击者发布了相同的0.7.29、0.8.0和1.0.0软件包,每个包都含有恶意代码,并且在安装时被激活。
研究人员补充说,该软件包的作者迅速做出回应,通过发布0.7.30、0.8.1和1.0.1三个版本来缓解攻击,并试图将那些在无意中安装恶意软件包的人数降到最低。
研究人员发现,开发人员在周末下载npm包时应非常警惕,因为周末是攻击者发布恶意包最多的时间段。这可能是因为有较少人在工作,因此他们的活动更容易不被注意到。