蠕虫式垃圾攻击:6.7万个虚假npm包淹没注册表
网络安全研究人员发现,自2024年初以来,npm注册表遭遇大规模垃圾攻击,数千个虚假软件包被注入生态系统,这很可能是一场以经济利益为动机的行动。
Endor Labs研究人员Cris Staicu和Kiran Raj在周二发布的报告中指出:“这些软件包在较长时间内被系统性地发布,用垃圾包淹没了npm注册表,并在生态系统中存活了近两年。”
根据首次发现该活动的SourceCodeRED安全研究员Paul McCarty的说法,这场协同攻击迄今已发布多达67,579个软件包。其最终目标相当不寻常——旨在用随机软件包淹没npm注册表,而非专注于数据盗窃或其他恶意行为。
这种蠕虫式传播机制以及对新创建软件包使用依赖印尼名称和食物术语的独特命名方案,使其获得了"IndonesianFoods Worm"的绰号。这些虚假软件包伪装成Next.js项目。
McCarty表示:“这种威胁特别令人担忧的是,攻击者花时间制作了一个npm蠕虫,而不是单一攻击。更糟糕的是,这些威胁行为者已经策划了两年多。”
表明持续协同努力的一些迹象包括一致的命名模式,以及这些软件包是从十几个npm账户组成的小型网络发布的事实。
该蠕虫位于每个软件包中的单个JavaScript文件(如"auto.js"或"publishScript.js")内,在用户使用"node auto.js"等命令手动运行脚本之前保持休眠状态。换句话说,它不会在安装期间或作为"postinstall"钩子的一部分自动执行。
Endor Labs安全研究负责人Henrik Plate告诉The Hacker News:“目前尚不清楚为什么会有人手动运行JavaScript文件,但超过43,000个软件包的存在表明要么有多个受害者执行了脚本——无论是意外还是出于好奇——要么攻击者自己运行它以淹没注册表。”
“有效负载的休眠设计旨在逃避自动检测,通过要求手动执行而不是’自动运行’,攻击者降低了被安全扫描器和沙箱系统标记的机会。”
手动执行会导致脚本在无限循环中启动一系列操作,包括从"package.json"文件中移除<“private”: true>。此设置通常用于防止私有仓库的意外发布。然后它继续使用内部字典创建随机软件包名称,并为其分配随机版本号以绕过npm的重复版本检测。
在最后阶段,垃圾软件包使用"npm publish"命令上传到npm。整个过程在无限循环中重复,导致每7到10秒推送一个新软件包。这相当于每分钟约12个软件包,每小时720个,或每天17,000个。
McCarty说:“这用垃圾包淹没了npm注册表,浪费了基础设施资源,污染了搜索结果,并在开发人员意外安装这些恶意软件包时创建了供应链风险。”
根据Endor Labs的说法,该活动是Phylum(现为Veracode的一部分)和Sonatype在2024年4月首次记录的攻击的一部分,涉及发布数千个垃圾软件包,通过滥用Tea协议进行"大规模自动加密耕种活动"。
研究人员说:“使该活动特别阴险的是其蠕虫式传播机制。对’package.json’文件的分析显示,这些垃圾软件包并非孤立存在;它们相互引用作为依赖项,创建了一个自我复制的网络。”
因此,当用户安装其中一个垃圾软件包时,会导致npm获取整个依赖树,随着更多依赖项呈指数级获取,注册表带宽受到压力。
Endor Labs表示,一些攻击者控制的软件包,如arts-dao和gula-dao,包含一个tea.yaml文件,列出了五个不同的TEA账户。Tea协议是一个去中心化框架,允许开源开发人员因其软件贡献而获得奖励。
这可能表明威胁行为者正在使用此活动作为货币化载体,通过人为夸大其影响分数来赚取TEA代币。目前尚不清楚谁在幕后操纵,但源代码和基础设施线索表明可能是来自印度尼西亚的某人。
该应用安全公司还标记了第二个变体,该变体采用不同的软件包命名方案,包括随机英语单词(例如,able_crocodile-notthedevs)。
这些发现也凸显了安全扫描器中的安全盲点,这些扫描器已知通过监控生命周期钩子或检测可疑系统调用来标记在安装期间执行恶意代码的软件包。
Endor Labs说:“在这种情况下,他们什么也没发现,因为在安装时没有什么可发现的。当前活动中标记的软件包数量之多表明,安全扫描器将来必须分析这些信号。”
软件供应链安全公司Sonatype的首席安全研究员Garrett Calpouzos将IndonesianFoods描述为大规模运行的自发布蠕虫,在此过程中压倒了安全数据系统。
Calpouzos说:“技术复杂性不一定更高——有趣的是,这些软件包甚至似乎没有试图渗透开发人员机器——但自动化和规模正在以惊人的速度升级。”
“这些攻击的每一波都以略微新的方式武器化npm的开放性。这一次可能不会窃取凭据或注入代码,但它仍然使生态系统紧张,并证明破坏世界上最大的软件供应链是多么微不足道。虽然动机尚不清楚,但影响是惊人的。”
当联系评论时,GitHub发言人表示,公司已从npm中删除了有问题的软件包,并致力于检测、分析并删除违反其政策的软件包和账户。
该发言人补充说:“我们已根据GitHub的可接受使用政策禁用了恶意npm软件包,该政策禁止发布直接支持导致技术危害的非法主动攻击或恶意软件活动的内容。”
“我们采用手动审查和大规模检测,使用机器学习并不断演进以减轻平台的恶意使用。我们还鼓励客户和社区成员报告滥用和垃圾邮件。”