ComfyUI-Manager-RCE(CVE-2025-67303)复现

0 阅读3分钟

简介

ComfyUI是一款基于节点式工作流的Stable Diffusion专业图形界面,是开源AI绘画领域的核心项目之一。ComfyUI-Manager是ComfyUI的官方扩展管理器,负责管理自定义节点、模型和更新的安装。

v3.38版本之前,ComfyUI-Manager的数据与配置目录存储在user/default/ComfyUI-Manager/下,该目录通过ComfyUI的/userdata/Web API暴露,没有任何访问限制。攻击者可以通过该API直接读取和覆写config.ini文件,将security_level设置为weak以禁用安全限制。结合/api/manager/reboot接口重启服务和/customnode/install/git_url接口安装恶意自定义节点,攻击者可以在服务器上实现远程代码执行。该漏洞已在ComfyUI-Manager v3.38版本中通过引入"系统用户保护API"得到修复,所有配置数据被迁移至受保护的__manager目录,该目录无法通过/userdata/API访问。

环境搭建

版本:3.37

cd vulhub/comfyui/CVE-2025-67303
docker-compose up -d

访问:http://ip:8188

image-20260513164741423.png

复现

git http服务

需要evil-git-server.py开启一个git http服务,或者在GitHub上传文件

python evil-git-server.py

image-20260513190207562.png

url:http://10.223.201.136:9999/evil-node-wc1tdl

覆盖config.ini

需要通过 /customnode/install/git_url接口安装自定义节点,安装过程中节点内的恶意代码会立即执行,完成RCE

但一般/customnode/install/git_url接口受安全限制保护,直接尝试安装自定义节点会返回403

image-20260513190952361.png

此时绕过403需要将安全等级降到 weak,而攻击者可以直接通过 **/userdata/**路径读取 config.ini

image-20260513192611804.png

/userdata/ComfyUI-Manager/config.ini路径中 **"/userdata/"**之后的斜杠 **"/"**需要url编码,即:/userdata/ComfyUI-Manager%2Fconfig.ini

否则返回404

image-20260513193117051.png

在同样的路径下,使用POST方法覆盖掉原来的 config.ini,将配置中"security_level = normal"的"normal"修改为"weak"

image-20260513193801538.png

重启配置生效

此时配置还未生效,需要重启

通过 /manager/reboot路径重启image-20260513200047082.png

没有任何回显,一经发送立即执行,等待到重启成功后再发送安装自定义节点数据包

安装自定义节点

通过 /customnode/install/git_url接口安装自定义节点

image-20260513194944359.png

在开启的服务记录中可以看到安装记录

image-20260513195120812.png

回到docker中验证

image-20260513195305857.png

防御

临时防御

  • 升级ComfyUI-Manager插件:立即升级到v3.40+版本
  • 版本验证:确认当前使用的ComfyUI-Manager版本为非v3.37

修复

  1. 修复config.ini读取逻辑缺陷
  2. 删除weak级别无条件放行的漏洞逻辑
  3. 强化接口参数过滤机制
  4. 完善权限校验流程

长期防御

  1. 最小权限原则:ComfyUI服务应以最低必要权限运行
  2. 网络隔离:生产环境应限制ComfyUI实例的外网访问
  3. 定期更新:建立插件和核心组件的定期更新机制
  4. 安全审计:对自定义节点和插件进行安全代码审查

借鉴:CVE-2025-67303(ComfyUI RCE)漏洞学习(代码层面深度分析)