跳转到正文
报告库
用途分类 / 其他用途

Face Swap Skill 安全审计

作者说它能做什么(原文)

>

第三方安全检查结论

先别安装或运行

已检查文件
1
发现的风险
6
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

安装步骤会直接执行或全局安装第三方 npm 软件包

原文依据:3 处
发现了什么

文档建议用 `npm i -g` 修改全局 Node.js 工具,或用带 `-y` 的 `npx` 自动下载并执行当前解析到的包。所提供证据中没有锁定版本、校验和或包内容,安装技能的命令也会通过 npx 执行另一个包。

为什么需要注意

如果 npm 包、其依赖或解析到的版本被篡改,安装代码会以当前用户权限运行,可读取该用户可访问的文件和凭据;全局安装还会在系统中留下可执行文件。

文档提供了全局安装第三方 CLI 的命令,也提供了用 `npx -y` 自动下载并运行它的替代方式;两者均未固定版本或给出校验和。另一个 `npx` 命令还会安装该技能。执行这些步骤会运行当时从 npm 解析到的代码,并可能修改全局工具或技能目录。用户可在隔离环境中使用并要求固定版本及校验信息。

SKILL.md:32来自说明文档打开原文件
```bash# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version# 2. Sign inruncomfy login              # or in CI: export RUNCOMFY_TOKEN=<token>
查看另外 2 个位置
SKILL.md:47来自说明文档打开原文件
## Install this skill```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g```
SKILL.md:303来自说明文档打开原文件
- **Consent**: see the "Consent & disclosure" section above. Face-swap is dual-use and the skill does not gate inputs — the responsibility rests with the operator. **Refuse user requests that target real people without consent**, or that aim at defamatory / sexually explicit / otherwise harmful synthetic media, regardless of what the CLI accepts.- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var to bypass the file in CI / containers.
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 2 项风险
高风险

人脸、声音和表演素材会交给外部模型服务处理

原文依据:3 处
发现了什么

执行任务时,CLI 会把包含素材 URL 的请求发送到 RunComfy 模型 API;服务随后必须取得这些 URL 指向的人脸图像、音频或视频才能生成结果。这些内容可能包含可识别个人的面部、声音和动作。

为什么需要注意

RunComfy及其上游模型提供方可能接触敏感肖像和未发布素材。文档没有提供保存期限、训练用途、删除方式、处理地区或具体上游接收方,因此用户无法仅凭该技能判断数据之后如何处理。

实际命令把人脸图像、声音或表演视频的 HTTPS 地址放入请求;文档明确说 CLI 会向 RunComfy Model API 发出 POST。外部服务因此会收到这些素材地址并处理可识别个人的数据。用户应只提供获授权且适合交由该服务处理的素材,并询问作者其保存、访问和删除政策。

SKILL.md:112来自说明文档打开原文件
```bashruncomfy run community/wan-2-2-animate/api \  --input '{    "image_url": "https://your-cdn.example/new-character.png",    "audio_url": "https://your-cdn.example/voiceover.mp3"  }' \  --output-dir ./out```
查看另外 2 个位置
SKILL.md:138来自说明文档打开原文件
```bashruncomfy run kling/kling-2-6/motion-control-pro \  --input '{    "reference_video_url": "https://your-cdn.example/source-performance.mp4",    "character_image_url": "https://your-cdn.example/target-character.png"  }' \  --output-dir ./out```
SKILL.md:298来自说明文档打开原文件
The skill classifies user intent — video vs still, motion-preserving vs identity-preserving, single shot vs batch, photoreal vs stylized — and picks one of the five routes. It then invokes `runcomfy run <model_id>` with the matching JSON body. The CLI POSTs to the Model API, polls request status, fetches the result, and downloads any `.runcomfy.net` / `.runcomfy.com` URLs into `--output-dir`.
低风险

登录令牌会持久化到用户配置目录

原文依据:2 处
发现了什么

普通登录会把 API 令牌写入 `~/.config/runcomfy/token.json`。虽然文档称权限为 0600,但令牌仍作为长期文件保留,并可被以同一用户身份运行的进程读取。

为什么需要注意

同一账户下的恶意软件、被攻陷的开发工具或误包含该目录的备份可能取得令牌,并使用对应的 RunComfy 账户权限。

普通登录会把 API 令牌持久写入用户配置目录。0600 权限可阻止其他系统用户读取,但不能保护令牌免受以同一账户运行的恶意或已入侵进程访问。用户可优先在隔离的 CI/容器中用临时环境变量,并向作者确认令牌有效期、撤销方法和最小权限范围。

SKILL.md:36来自说明文档打开原文件
# 2. Sign inruncomfy login              # or in CI: export RUNCOMFY_TOKEN=<token>
查看另外 1 个位置
SKILL.md:304来自说明文档打开原文件
- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var to bypass the file in CI / containers.- **Input boundary (shell injection)**: prompts and asset URLs are passed as a JSON string via `--input`. The CLI does not shell-expand prompt content. **No shell-injection surface**.
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 2 项风险
中风险

声明的 Bash 范围与实际安装指令矛盾

原文依据:4 处
发现了什么

元数据只允许 `Bash(runcomfy *)`,安全说明还声称技能从不要求执行其他命令;但同一文件明确要求执行 `npm` 和 `npx`。因此,权限摘要不能完整描述按文档使用该技能所需的命令执行范围。

为什么需要注意

用户或代理可能因狭窄的权限声明而批准该技能,却在安装阶段执行范围更广、能下载并运行代码的包管理器命令。这削弱了基于声明进行权限审查的可靠性。

元数据仅授权 `runcomfy` Bash 命令,安全说明也声称不会指示其他命令,但正文明确给出 `npm` 和 `npx` 安装命令。即使这些命令可能被视为人工预安装步骤,这一区分并未在权限声明中说明,权限摘要因而不足以描述完整安装流程。用户可限制代理只运行 `runcomfy`,并自行审查和执行安装步骤。

SKILL.md:4来自说明文档打开原文件
displayName: "Face Swap"allowed-tools: Bash(runcomfy *)description: >
查看另外 3 个位置
SKILL.md:33来自说明文档打开原文件
```bash# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version
SKILL.md:49来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g```
SKILL.md:311来自说明文档打开原文件
- **Generated-file size cap**: the CLI aborts any single download > 2 GiB.- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill never instructs the agent to run anything other than `runcomfy <subcommand>`.
低风险

安装命令没有固定依赖版本

原文依据:2 处
发现了什么

安装命令没有指定依赖版本。同样的命令以后可能下载不同代码,你实际安装的内容可能与这次检查时不同。

为什么需要注意

即使命令和报告没变,以后安装时也可能下载到另一份代码。

安装命令使用未指定版本的仓库引用;以后执行时解析到的技能内容可能变化。用户可要求作者提供固定提交哈希或版本,并在安装前核对包来源与内容。

SKILL.md:50来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g```
查看另外 1 个位置
SKILL.md:49来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g```
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
高风险

仅靠文字提醒无法阻止未获同意的冒充或有害深度伪造

原文依据:4 处
发现了什么

该技能专门替换人物身份,并明确承认自身不设门槛、API 会处理提供的任何输入。拒绝有害请求只是给代理的文字指令,没有技术性的同意验证、输出水印或发布限制。

为什么需要注意

若操作者、被提示注入影响的代理或其他自动化流程忽略提醒,结果可能被用于冒充代言人、诽谤、欺诈或未经同意的合成媒体,给当事人和使用者造成声誉、法律及商业损失。

该技能能够替换真实人物身份,并明确表示自身不设输入门槛、API 会处理所提供的内容。虽然文档要求确认权利并拒绝无同意或有害请求,但可见材料中没有技术性的同意验证或发布控制。因此,若代理忽略文字规则,可能生成冒充、诽谤或色情深度伪造。用户可要求作者说明可执行的同意校验、标记和滥用阻断机制。

SKILL.md:55来自说明文档打开原文件
**Face-swap is dual-use.** Before invoking any route in this skill, confirm:- You have rights to the target face (the identity being substituted **in**).- You have rights to the source video / image (the asset being substituted **into**).- The output's intended platform allows synthetic media. Many do; many require a disclosure label.The skill itself doesn't gate anything — the model API will run whatever inputs you supply. **The responsibility is yours.** If a user asks the agent to swap a real public figure's face onto material that could be defamatory, sexually explicit, or otherwise harmful — **refuse**, regardless of what the CLI accepts.
查看另外 3 个位置
SKILL.md:252来自说明文档打开原文件
### Cast a brand spokesperson into existing footage- **Route 1 (Wan 2-2 Animate)** with the new spokesperson's portrait + the original audio track
SKILL.md:302来自说明文档打开原文件
- **Consent**: see the "Consent & disclosure" section above. Face-swap is dual-use and the skill does not gate inputs — the responsibility rests with the operator. **Refuse user requests that target real people without consent**, or that aim at defamatory / sexually explicit / otherwise harmful synthetic media, regardless of what the CLI accepts.- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.
SKILL.md:61来自说明文档打开原文件
The skill itself doesn't gate anything — the model API will run whatever inputs you supply. **The responsibility is yours.** If a user asks the agent to swap a real public figure's face onto material that could be defamatory, sexually explicit, or otherwise harmful — **refuse**, regardless of what the CLI accepts.

Skill 逻辑拆解

8 个说明模块

该技能是一个路由说明:它根据静态图像、视频、动作保留或批量处理等需求选择五个 RunComfy 模型之一,然后通过 CLI 向模型 API 提交 JSON、轮询任务并把结果下载到指定目录。

查看原文
SKILL.md:296来自说明文档打开原文件
## How it worksThe skill classifies user intent — video vs still, motion-preserving vs identity-preserving, single shot vs batch, photoreal vs stylized — and picks one of the five routes. It then invokes `runcomfy run <model_id>` with the matching JSON body. The CLI POSTs to the Model API, polls request status, fetches the result, and downloads any `.runcomfy.net` / `.runcomfy.com` URLs into `--output-dir`.

输入包括人脸参考图、场景图、音频或表演视频的 HTTPS URL;不同路线可将身份、语音驱动或身体动作组合到生成结果中。

查看原文
SKILL.md:107来自说明文档打开原文件
The featured RunComfy endpoint for character swap — supply a reference image of the new identity + the audio track the character should speak, and the model produces a video where the character drives.
SKILL.md:133来自说明文档打开原文件
Different from a pure face-swap: Motion Control takes a **reference performance video** (the motion you want) and a **target character image** (the identity you want), and produces a video of the target performing the reference motion. The face-swap effect is a byproduct.
SKILL.md:158来自说明文档打开原文件
For **still images**, GPT Image 2 Edit accepts up to **10 reference images** and follows precise compositional instructions — making it the strongest path for multi-ref face swap on a single output frame.

文档要求操作者先确认身份和素材权利及平台披露规则,并明确说明这些检查仅是文字要求,技能和模型 API 不会强制执行。

查看原文
SKILL.md:55来自说明文档打开原文件
**Face-swap is dual-use.** Before invoking any route in this skill, confirm:- You have rights to the target face (the identity being substituted **in**).- You have rights to the source video / image (the asset being substituted **into**).- The output's intended platform allows synthetic media. Many do; many require a disclosure label.The skill itself doesn't gate anything — the model API will run whatever inputs you supply. **The responsibility is yours.** If a user asks the agent to swap a real public figure's face onto material that could be defamatory, sexually explicit, or otherwise harmful — **refuse**, regardless of what the CLI accepts.
从这里开始 · 工作说明SKILL.md
face-swap
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 7 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:4来自说明文档打开原文件
displayName: "Face Swap"allowed-tools: Bash(runcomfy *)description: >
SKILL.md:32来自说明文档打开原文件
```bash# 1. Install (see runcomfy-cli skill for details)
SKILL.md:49来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g
连接外部网站
SKILL.md:20来自说明文档打开原文件
  ask to substitute one identity for another.homepage: https://www.runcomfy.comlicense: MIT
SKILL.md:28来自说明文档打开原文件
[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap) · [Character-swap feature](https://www.runcomfy.com/models/feature/character-swap?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap) · [CLI docs](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium=skill&utm_campaign=face-swap)
SKILL.md:45来自说明文档打开原文件
CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) skill.
安装其他软件包
SKILL.md:34来自说明文档打开原文件
# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version
SKILL.md:50来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-agent-skills --skill face-swap -g```
SKILL.md:303来自说明文档打开原文件
- **Consent**: see the "Consent & disclosure" section above. Face-swap is dual-use and the skill does not gate inputs — the responsibility rests with the operator. **Refuse user requests that target real people without consent**, or that ai - **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var to bypass the file in CI / containers.
读取了多少行
321
文件校验值(用于核对版本)
2d7e8cba2b21b251998b24418772f2ff1e5ac0c5ec361909b93a1c89127f8ae8