⬡ 节点流学园

🎯 06-实践与视野

安全:不可信工作流与 pickle 风险

前沿安全picklesafetensors供应链

一句话定义

ComfyUI 的两个主要安全面是:模型文件(老式 .ckpt/.pt 是 Python pickle,加载即可能执行任意代码)与工作流(依赖 custom node 的 Python 代码,导入即运行其逻辑)——防线是"优先 safetensors、信得过的来源、Manager 的 security_level、最小权限运行"。

为什么重要

AI 模型社区是供应链攻击的优质目标:用户习惯"看到好看的图就下载、看到炫的工作流就导入",而两者都可能携带可执行代码。本页把风险边界讲清,让你"敢玩但不裸奔"。

前置知识

模型文件与目录组织(文件格式)、ComfyUI Manager:生态的包管理器(Manager)。

核心概念

风险面一 · pickle 模型文件:

  • .ckpt/.pt/.pth 序列化时可以嵌入任意 Python 对象(包括恶意代码),加载瞬间执行;
  • .safetensors 只存张量数据,格式上无法携带代码——这是推荐它的根本原因(模型文件与目录组织);
  • 部分生态工具提供 picklescan 检测,可对存量 .pt 做静态扫描,但扫描非保证。

风险面二 · 工作流与 custom node:

  • 工作流 JSON 本身是数据,但它引用的 custom node 是Python 代码,导入工作流 = 声明"我需要这些代码";
  • 更隐蔽的:custom node 的任何 Python import 在启动时执行;恶意包可在安装后持续运行;
  • Manager 的 security_level 决定"安装来源"的宽严(strict→normal→weak)。

风险面三 · 运行环境:

  • ComfyUI 默认只监听本机;--listen 对局域网开放后,任何能访问者都可提交任意工作流(工作流 JSON 与 API 自动化);
  • 管理员/root 权限运行 = 恶意代码同权限。

原理与机制

安全模型的核心是信任边界:

低危(纯数据):  safetensors 模型 / 纯官方节点工作流
中危(需审查):  来源明确的 .pt / 社区知名 custom node
高危(需隔离):  来路不明的 .pt、小站打包模型、低星新节点包
红线:           要求关闭杀软/管理员运行/"必须管理员才能跑"的安装包

隔离手段(按投入递增):专用低权限账户 → Docker/容器化部署 → 虚拟机(加载高危文件前)。

直观类比

模型文件像外来种子:safetensors 是" sterilized 种子"(只能长出植物),pickle 是"来路不明的种子包"(可能混着虫卵);工作流像外来菜谱:菜谱纸本身无害,但它说"先去隔壁神秘小店买专用调料"(custom node)——那家店的调料才是要审查的。

实例与案例

  • 下载 .safetensors 常规操作:风险低,但仍认准 HF 官方/Civitai 原作者页,校验文件大小(模型资源获取与社区)。
  • 必须用 .pt 的场景(少数老模型):先看来源(HF 官方 org/知名作者),社区有 picklescan 可扫;最高要求场景丢虚拟机。
  • 导入爆款工作流:看引用的节点包——是否知名(必装自定义节点包盘点 清单内)、Manager 里下载量与更新时间;陌生包先搜社区评价。
  • 服务器部署:工作流 JSON 与 API 自动化 的 API 服务务必加反向代理鉴权,或仅监听内网。

常见误区

  • "图片而已能有什么风险":PNG 本身安全,但"拖图还原工作流"会连带导入其节点依赖声明;来源不明的图别急着拖。
  • "safetensors 就绝对安全":格式安全 ≠ 内容无害——模型可携带不良偏见/NSFW 能力,属于内容合规问题(版权、许可与伦理:商用前的必修课)。
  • security_level 常年 weak:等于对任意安装行为放行;个人机 normal 起步,生产机 strict。
  • 混淆"内容风险"与"代码风险":NSFW 模型跑出限制内容是合规问题;恶意 .pt 执行代码是安全问题——两种风险两套防线。

自测题

  1. 为什么 safetensors "格式上"免疫代码注入?
  2. 导入陌生工作流前,对 custom node 的三查是什么?
  3. --listen 之后最大的安全变化是什么?对策?
  4. 以下排序风险等级:HF 官方 safetensors / 论坛直传 .pt / Civitai 高星节点包 / 小站打包全家桶
参考答案
  1. 其格式仅支持张量数据布局,没有 pickle 的对象反序列化机制,无代码执行入口。
  2. 是否在知名包清单内、下载量与维护时间、社区评价与仓库来源。
  3. API 变为无鉴权可提交任意工作流;对策=反代加鉴权/仅内网/防火墙白名单。
  4. HF 官方 safetensors < Civitai 高星节点包 < 论坛直传 .pt < 小站打包全家桶(后两者建议隔离环境)。

与其他知识点的关系

延伸阅读

  • picklescan 项目:github.com/facebookresearch/picklescan
  • Manager 安全设置文档:github.com/ltdrdata/ComfyUI-Manager

前置知识

模型文件与目录组织ComfyUI Manager:生态的包管理器

关联知识点

版权、许可与伦理:商用前的必修课故障排查手册:症状→原因→修法