![]()
针对流行扫描工具Trivy的供应链攻击背后的威胁行为者,被怀疑正在进行后续攻击,导致大量npm包遭到破坏,其中包含一个此前未被记录的自传播蠕虫病毒,名为CanisterWorm。
该名称源于恶意软件使用ICP容器作为死信箱解析器的特点。ICP容器是指Internet Computer区块链上的防篡改智能合约。这一发展标志着首次公开记录的滥用ICP容器来获取命令控制服务器的案例,Aikido Security研究员Charlie Eriksen表示。
受影响的包列表如下:
- @EmilGroup范围内的28个包
- @opengov范围内的16个包
- @teale.io/eslint-config
- @airtm/uuid-base32
- @pypestream/floating-ui-dom
此事件发生在威胁行为者利用被破解的凭据发布恶意trivy、trivy-action和setup-trivy版本(包含凭据窃取器)后的一天内。一个名为TeamPCP的专注云端的网络犯罪组织被怀疑是这些攻击的幕后黑手。
涉及npm包的感染链通过利用postinstall钩子来执行加载器,然后部署Python后门,负责联系ICP容器死信箱以检索指向下一阶段有效载荷的URL。死信箱基础设施的去中心化特性使其具有弹性并抗拒关停努力。
"容器控制者可以随时交换URL,将新的二进制文件推送到所有感染的主机,而无需接触植入物,"Eriksen说。
持久性通过systemd用户服务建立,配置为如果因某种原因被终止,则在5秒延迟后自动启动Python后门,使用"Restart=always"指令。该systemd服务伪装成PostgreSQL工具("pgmon"),试图避免被发现。
如前所述,后门每50分钟使用伪造的浏览器User-Agent联系ICP容器一次,以明文形式获取URL。随后解析URL以获取并运行可执行文件。
"如果URL包含youtube[.]com,脚本会跳过它,"Eriksen解释道。"这是容器的休眠状态。攻击者通过将容器指向真实的二进制文件来激活植入物,通过切换回YouTube链接来解除激活。如果攻击者更新容器指向新URL,每台感染的机器在下次轮询时都会获取新的二进制文件。旧的二进制文件继续在后台运行,因为脚本从不杀死之前的进程。"
值得注意的是,Wiz也在木马化的Trivy二进制文件(版本0.69.4)中标记了类似的基于youtube[.]com的终止开关,该文件通过另一个Python投放器("sysmon.py")联系同一个ICP容器。截至撰写时,命令控制服务器返回的URL是一个rickroll YouTube视频。
The Hacker News发现ICP容器支持三种方法——get_latest_link、http_request、update_link——最后一种允许威胁行为者随时修改行为以提供实际有效载荷。
与此同时,这些包带有一个"deploy.js"文件,攻击者手动运行该文件,以程序化方式将恶意有效载荷传播到被盗npm令牌可以访问的每个包。这个蠕虫被评估为使用人工智能工具进行编码,不试图隐藏其功能。
"这不是由npm install触发的,"Aikido表示。"这是攻击者使用被盗令牌运行的独立工具,以最大化爆炸半径。"
更糟糕的是,在"@teale.io/eslint-config"版本1.8.11和1.8.12中检测到的CanisterWorm后续迭代已被发现能够自主传播,无需人工干预。
与攻击者必须使用被盗npm令牌执行以将恶意版本npm包推送到注册表的自包含脚本"deploy.js"不同,新变体在"index.js"中的findNpmTokens()函数内集成了此功能,该函数在postinstall阶段运行,从受害者机器收集npm身份验证令牌。
这里的主要区别是,postinstall脚本在安装持久后门后,尝试从开发者环境中定位每个npm令牌,并通过将"deploy.js"作为完全分离的后台进程启动,立即用这些令牌生成蠕虫。
有趣的是,威胁行为者据说已经将ICP后门有效载荷换成了虚拟测试字符串("hello123"),可能是为了确保整个攻击链按预期工作,然后再添加恶意软件。
"这是攻击从'被破坏的账户发布恶意软件'转向'恶意软件破坏更多账户并自我发布'的转折点,"Eriksen说。"每个安装此包并有可访问npm令牌的开发者或CI管道都成为无意的传播载体。他们的包被感染,下游用户安装这些包,如果其中任何人有令牌,循环就会重复。"
(这是一个正在发展的故事,请随时关注更多详情。)
Q&A
Q1:CanisterWorm蠕虫病毒是什么?它有什么特点?
A:CanisterWorm是一个自传播蠕虫病毒,它使用ICP容器(Internet Computer区块链上的防篡改智能合约)作为死信箱解析器来获取命令控制服务器。这是首次公开记录的滥用ICP容器进行恶意活动的案例,其去中心化特性使其难以被关停。
Q2:npm包感染链是如何工作的?
A:感染链通过postinstall钩子执行加载器,然后部署Python后门。该后门每50分钟联系ICP容器一次获取URL,随后解析URL来获取并运行可执行文件。持久性通过伪装成PostgreSQL工具的systemd用户服务建立,配置为自动重启。
Q3:CanisterWorm如何实现自我传播?
A:新版本的CanisterWorm在"index.js"中集成了findNpmTokens()函数,在postinstall阶段自动收集受害者机器的npm身份验证令牌。然后立即使用这些令牌启动"deploy.js"作为后台进程,将恶意软件传播到令牌可访问的所有包中,形成自我传播循环。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.