警惕!AI 组件 ComfyUI 易被黑产盯上
随着近几年大模型的迅猛发展,以及安全对抗技术的持续迭代升级,黑产团伙逐渐将攻击目标从传统服务转移到了 AI 相关服务。
近日,百度安全团队捕获到了一起针对大模型相关组件 ComfyUI 的攻击事件,经过深入分析,该事件背后团伙已实际针对国内不少公网 ComfyUI 进行了入侵。本文将事件调查细节同步,以期促进整个 AI 行业威胁态势感知的进步。
百度安全在此建议大家及时排查,同时也将持续进行大模型基础设施的安全威胁狩猎,分享团队在大模型浪潮下的威胁感知与攻防技术思考,与整个行业共同建设大模型生态安全。
概述
关于 ComfyUI
ComfyUI 是一款基于节点流程的 Stable Diffusion 操作界面,专为图像生成任务设计。它通过将深度学习模型的工作流程简化为图形化节点,使用户操作更加直观和易于理解。
ComfyUI 提供了高度的可视化和扩展性,用户可以通过拖放操作来构建和调整图像生成流程,无需编写代码。作为大模型图像生成领域的最热门框架之一,其在 GitHub 斩获了接近 7W Star,备受开发者喜爱,根据网络空间测绘数据,全网共有近 2700 例 ComfyUI 服务,其中不乏无需密码直接访问的案例。
ComfyUI 后台支持加载用户指定的模型文件,同时用户可以方便地管理模型。但给用户带来便利的同时,也存在一些安全隐患。

以下是对该事件的详细分析:
01
投毒活动流程
本次事件攻击者主要利用了 ComfyUI 控制台无身份鉴权的配置错误问题进入控制后台,并通过 ComfyUI-Manager 插件中的远程下载功能从 Hugging Face 及其镜像站等相关模型仓库拉取投毒模型(.pth 后缀的文件),使得开发者在使用 ComfyUI 加载投毒模型时会因自身的 pickle 反序列化逻辑触发恶意的 Loader,进而执行恶意 Bash 脚本,脚本会从攻击者的服务器上拉取 C2 木马进行远程控制,C2 域名为 cloudflare.com 提供给普通用户使用的隧道服务(用户可以无需外部域名和 ip 就可以把内网的服务映射到外部),攻击者滥用该服务,达成隐蔽控制的目的。

据 CVE 官方披露,ComfyUI 历史存在多种漏洞类型,包括:任意文件读取漏洞、远程代码执行漏洞、存储 XSS 漏洞等。相关漏洞已分配如下 CVE 编号:CVE-2024-10099、CVE-2024-21574、CVE-2024-21575、CVE-2024-21576、CVE-2024-21577。本次事件主要利用的 ComfyUI 默认无身份鉴权机制的"特性",从而直接访问 ComfyUI 后台。但该“特性”官方并不认为是安全漏洞,归因为用户错误配置,在使用上官方始终认为使用者应自行注意,不要将 ComfyUI 对公网暴露或应该通过沙箱环境运行,以确保 ComfyUI 安全。
(参考https://github.com/comfyanonymous/ComfyUI/discussions/5165)。
02
样本分析
未授权 ComfyUI & ComfyUI-Manager 插件后台访问
ComfyUI-Manager 插件可提供模型管理功能(远端下载、模型使用管理等),ComfyUI-Manager 界面功能如下:

攻击者进入 ComfyUI 后台后,首先利用该插件从https://0x0.st/8TX8.pth下载了恶意的模型文件,并加载。

其中该域名 0x0.st 为公开匿名文件分享的服务,任意人都可以上传文件到该网站,供其他人下载。

在上面加载恶意的 pth 模型文件后,攻击者的木马并没有成功上线。几个小时后攻击者再次从https://hf-mirror.com/DSfsdasgaa/shell/blob/main/kcp.pth下载恶意 pth 文件并加载。

该恶意模型下载地址为https://huggingface.co/DSfsdasgaa/shell/tree/main的镜像文件地址。该大模型仓库同时还存在 ws.pth、wsc.pth。

针对该 Hugging face 上的投毒用户 DSfsdasgaa 进行分析,该用户仅发布了这一个恶意模型库,无其他行为痕迹,且账号信息中未写任何描述,非常符合一个异常用户的特征。

8TX8.pth、kcp.pth、wsc.pth 等模型文件分析
大模型里的 pth 是包含了模型参数和状态的 pickle 文件,pickle 文件为 python 对象序列化后的文件。当大模型加载模型文件时,模型加载器会对文件进行反序列化操作,若该文件为恶意的 pth 文件,就会触发其中预先设置的恶意代码,进而导致命令执行漏洞。本次攻击中,攻击者主要使用了 8TX8.pth、kcp.pth,这两个恶意的模型文件,都是类似功能,我们分析其中一个 8TX8.pth。

通过 opcode 解析:

我们可以看出该文件被反序列化加载后会通过 system 执行以下命令。

上述命令为从 194.34.254.219:10404/slk 下载 sh 脚本,进行执行。
其他 pth 文件
ws.pth 文件对应的执行命令为:


wsc.pth: 该文件执行的内容和 slk 样本脚本内容一致


slk 分析
上面利用恶意的 pth 文件所执行命令都是下载的一个 sh 脚本,其中拓展关联的 ws.pth,在分析时已经失效,未获取后续样本。
8TX8.pth(194.34.254.219:10404/slk)
从 0x0.st/8TX8.pth 下载的 8TX8 下载的 slk 文件,远端下载地址 194.34.254.219:10404/slk,slk 文件的 bash 脚本内容:

该 sh 脚本为 vshell 默认生成的上线脚本, 脚本的主要功能如下:
从当前会话 SHELL 中加载 PATH 环境变量获取可执行文件路径
通过 touch 指令创建 /usr/local/bin、/usr/libexec、/usr/bin 三个目录的可写入情况
根据电脑 32/64 位情况从 http://194.34.254.219:10404/?h=194.34.254.219&p=10404&t=kcp&a=l64&stage=false&encode=false 地址下载文件并命名为 c8dfdc4akcp 执行。
但因为网络环境原因,后续攻击者无法成功下载该文件,导致了攻击者进行了多次的恶意利用,但最终由于网络环境原因,都未成功进行后续攻击。
kcp.pth、ws.pth(194.34.254.219:10410/slk)
从 Hugging face 下载 pth 里面对应的远程命令为,远端下载地址 194.34.254.219:10410/slk,slk 文件主要是一个 bash 脚本,内容如下:

该脚本是攻击者根据 vshell 默认生成的上线脚本中,把其中的原 vshell 获取木马的下载地址,替换为攻击者放在 huggungface 上的 vshell 木马。该 sh 脚本的主要功能如下:
从当前会话 SHELL 中加载 PATH 环境变量获取可执行文件路径
通过 touch 指令创建 /usr/local/bin、/usr/libexec、/usr/bin 三个目录的可写入情况
根据电脑 32/64 位情况从 huggingface.co/DSfsdasgaa/shell/resolve/main/ws_linux_amd64 地址下载 ws_linux_amd64 文件并执行。
但因为网络环境原因,后续攻击者无法成功下载该文件,导致了攻击者进行了多次的恶意利用,但最终由于网络环境原因,都未成功进行后续攻击。
ws_linux_amd64 样本分析
针对上述 C2 木马进行分析,简要信息如下:

ws_linux_amd64,该可执行文件是经过了 upx 壳压缩,脱壳后为 golang 编写的程序。

同时该 golang 样本把自身的部分 golang 的符号进行了抹除,来干扰分析人员进行分析。根据内存中 dump 出 c2 配置,可以确定该样本为曾经国内公开 c2 平台 vshell(https://github.com/veo/vshell,该项目目前已删库)所生成的样本。

从木马的配置文件可以看出该样本链接的远程 c2 地址为:molecular-mazda-forests-shop.trycloudflare.com:80,通信协议为 websocket。该 c2 域名为 cloudflare.com 提供普通用户使用的隧道服务,用户可以无需外部域名和 ip 就可以把内网的服务映射到外部。攻击者滥用该服务,搭建 c2 服务器来进行远程控制。
截止分析时,该 c2 地址已失效,其完整的 ws 链接地址为:ws://molecular-mazda-forests-shop.trycloudflare.com:80/w
03
vshell 介绍
vshell 是一款利用 Golang 语言研发的和 Cobalt Strike 相同功能的 C2 远程控制平台、木马下发平台。

04
处置建议
如果你正在使用 ComfyUI 且可能已经被投毒控制,建议尽快采取以下处置措施:
1、排查 ComfyUI 默认端口 8188 是否存在对互联网直接暴露且可未授权访问的情况。
2、排查安装有该后门模型的主机,及时做好木马清理。
3、断开与攻击源的连接:立即断开与可疑 IOC 的连接,以防止攻击者继续操纵和控制终端;然后需要立即删除相关恶意模型 &木马文件并清理系统。
4、修改密码和加强身份验证:攻击者可能会利用该工具获取了终端上保存的用户名和密码等敏感信息,因此,需要及时修改其密码,并加强身份验证措施,例如使用双重认证等措施。
5、加强软件下载的安全管理:建议需要加强对开源工具安全的管理和控制,例如在下载前注意审查该开源工具的源码、检查其依赖项、建立安全审查和评估机制等,以减少投毒事件的风险。
同时,对于使用 ComfyUI 组件的用户,我们建议从以下几个方面进行安全加固,以避免受到其它可能的攻击:
1、启用身份验证:使用 ComfyUI 插件开启身份验证:https://github.com/liusida/ComfyUI-Login。
2、配置访问控制:设置IP 白名单或端口访问限制,避免在公网上直接暴露 ComfyUI 服务端口。
3、定期更新版本:关注官方更新动态,定期更新 ComfyUI 服务版本
附录 IOC

评论