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

Happyhorse 1 0 Skill 安全审计

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

>

第三方安全检查结论

先别安装或运行

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

把用户提示直接插入示例命令可能造成 shell 命令注入

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

示例把提示放进单引号包围的 JSON shell 参数。若代理按此模板直接插入含单引号、换行或 shell 语法的用户提示,shell 会在 CLI 收到 JSON 前解析逸出的文本。文档关于“无 shell 注入面”的保证只描述 CLI,不消除命令构造阶段的风险。

为什么需要注意

恶意或意外构造的提示可能以当前用户权限运行本地命令,读取或修改文件、调用已登录账户,或泄露凭据。

示例把 `<user prompt>` 放入 shell 的单引号 JSON 参数。若代理通过文本替换构造命令,提示中的单引号可提前结束引号,使其后的内容被 shell 解释。第192行的保证只说明 CLI 收到内容后的行为,并不能证明命令构造过程安全;材料也没有提供实际转义实现。风险取决于代理是否直接拼接示例。

SKILL.md:66来自说明文档打开原文件
```bashruncomfy run happyhorse/happyhorse-1-0/text-to-video \  --input '{"prompt": "<user prompt>"}' \  --output-dir <absolute/path>```
查看另外 1 个位置
SKILL.md:192来自说明文档打开原文件
- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600 (owner-only read/write). Set `RUNCOMFY_TOKEN` env var to bypass the file entirely in CI / containers.- **Input boundary**: the user prompt is passed as a JSON string to the CLI via `--input`. The CLI does NOT shell-expand the prompt; it transmits the JSON body directly to the Model API over HTTPS. No shell injection surface from prompt content.- **Third-party content**: image / mask / video URLs you pass are fetched by the RunComfy model server, not by the CLI on your machine. Treat external URLs as untrusted; image-based prompt injection is a known risk for any image-edit / video-edit model.
中风险

前置步骤要求执行并全局安装第三方 npm 软件

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

文档要求通过 npm 全局安装 RunComfy CLI,另一个示例还通过 npx 全局添加 Skill。这些操作会下载并执行第三方包,并对用户的全局工具环境产生持久修改。所给源码不包含这些包的实现,因此无法从材料中核实其行为。

为什么需要注意

若包、其依赖或安装脚本被入侵,它们可在安装用户权限范围内访问文件和凭据;全局安装也可能影响其他项目使用的命令版本。

前置条件要求用 `npm i -g` 全局安装第三方 CLI,安装示例也用 `npx ... -g` 添加 Skill。这些命令会从外部包或仓库取得内容并持久修改全局环境;npm 安装还可能执行包的安装脚本。所给材料只有说明文件,没有 CLI 或安装器源码,无法核实下载代码的具体行为。

SKILL.md:24来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-skills --skill happyhorse-1-0 -g```
查看另外 1 个位置
SKILL.md:44来自说明文档打开原文件
1. **RunComfy CLI** — `npm i -g @runcomfy/cli`2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`.
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

提示内容和账户令牌会发送给 RunComfy

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

远程请求包含完整用户提示,并使用用户的 bearer token。视频提示可能包含未发布创意、客户资料、个人信息或其他敏感内容;所给材料没有说明服务端留存、训练使用或删除规则。

为什么需要注意

提交的内容进入第三方系统;令牌若被 CLI、运行环境或依赖项暴露,还可能被用于访问或消费该 RunComfy 账户。

文档明确说明完整 JSON 请求被提交到 RunComfy Model API,并使用用户的 bearer token;因此提示内容会离开本机,令牌会作为远程认证凭据使用。材料只描述传输端点和本地令牌存储,没有说明服务端留存、训练使用或删除政策。敏感提示的隐私影响取决于用户提交的内容及 RunComfy 的外部政策。

SKILL.md:46来自说明文档打开原文件
2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`.
查看另外 2 个位置
SKILL.md:178来自说明文档打开原文件
1. The skill invokes `runcomfy run happyhorse/happyhorse-1-0/text-to-video` with a JSON body matching the schema.2. The CLI POSTs to `https://model-api.runcomfy.net/v1/models/happyhorse/happyhorse-1-0/text-to-video` with the user's bearer token.3. The Model API returns a `request_id`; the CLI polls `GET .../requests/<id>/status` every 2 seconds.4. On terminal status, the CLI fetches `GET .../requests/<id>/result` and downloads any URL whose host ends with `.runcomfy.net` or `.runcomfy.com` into `--output-dir`. Other URLs are listed but not fetched.
SKILL.md:191来自说明文档打开原文件
- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600 (owner-only read/write). Set `RUNCOMFY_TOKEN` env var to bypass the file entirely in CI / containers.- **Input boundary**: the user prompt is passed as a JSON string to the CLI via `--input`. The CLI does NOT shell-expand the prompt; it transmits the JSON body directly to the Model API over HTTPS. No shell injection surface from prompt content.- **Third-party content**: image / mask / video URLs you pass are fetched by the RunComfy model server, not by the CLI on your machine. Treat external URLs as untrusted; image-based prompt injection is a known risk for any image-edit / video-edit model.
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
低风险

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

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

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

为什么需要注意

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

安装示例通过仓库名添加 Skill,但没有指定提交哈希、标签或版本。用户以后运行同一命令时,可能取得仓库当时的不同内容。材料未提供被安装代码,因此本次审查无法把安装结果固定到所展示的 SKILL.md。

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

触发视频生成可能产生第三方 GPU 费用,但没有费用确认步骤

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

Skill 声明遇到相应生成请求就调用远程模型;取消说明明确表明运行中的 GPU 会计费,但文档未给出价格、预算上限或提交前确认。

为什么需要注意

在已绑定付款方式或余额的账户中,一次或重复调用可能产生用户未预估的费用。较长、1080p 或重复迭代任务的实际成本无法从材料判断。

Skill 声明在匹配请求时调用远程模型,而取消说明明确提到停止 GPU 计费,足以支持生成可能产生账户费用。所示工作流直接提交请求并轮询结果,没有可见的价格、预算上限或提交前费用确认步骤。实际收费与金额仍取决于 RunComfy 账户和外部定价。

SKILL.md:10来自说明文档打开原文件
  schema, and when to route to Wan 2.7 / Seedance 2 / LTX 2 instead.  Calls `runcomfy run happyhorse/happyhorse-1-0/text-to-video` through  the local RunComfy CLI. Triggers on "happyhorse", "happy horse",  "happyhorse 1.0", "happyhorse video", or any explicit ask to generate  video with this model.homepage: https://www.runcomfy.com
查看另外 2 个位置
SKILL.md:182来自说明文档打开原文件
4. On terminal status, the CLI fetches `GET .../requests/<id>/result` and downloads any URL whose host ends with `.runcomfy.net` or `.runcomfy.com` into `--output-dir`. Other URLs are listed but not fetched.5. `Ctrl-C` while polling sends `POST .../requests/<id>/cancel` so you don't get billed for GPU you stopped.
SKILL.md:178来自说明文档打开原文件
1. The skill invokes `runcomfy run happyhorse/happyhorse-1-0/text-to-video` with a JSON body matching the schema.2. The CLI POSTs to `https://model-api.runcomfy.net/v1/models/happyhorse/happyhorse-1-0/text-to-video` with the user's bearer token.3. The Model API returns a `request_id`; the CLI polls `GET .../requests/<id>/status` every 2 seconds.4. On terminal status, the CLI fetches `GET .../requests/<id>/result` and downloads any URL whose host ends with `.runcomfy.net` or `.runcomfy.com` into `--output-dir`. Other URLs are listed but not fetched.

Skill 逻辑拆解

8 个说明模块

该 Skill 根据用户提示调用本地 RunComfy CLI,向 HappyHorse 文生视频端点提交任务,并把结果保存到用户指定的目录。

查看原文
SKILL.md:178来自说明文档打开原文件
1. The skill invokes `runcomfy run happyhorse/happyhorse-1-0/text-to-video` with a JSON body matching the schema.2. The CLI POSTs to `https://model-api.runcomfy.net/v1/models/happyhorse/happyhorse-1-0/text-to-video` with the user's bearer token.3. The Model API returns a `request_id`; the CLI polls `GET .../requests/<id>/status` every 2 seconds.4. On terminal status, the CLI fetches `GET .../requests/<id>/result` and downloads any URL whose host ends with `.runcomfy.net` or `.runcomfy.com` into `--output-dir`. Other URLs are listed but not fetched.5. `Ctrl-C` while polling sends `POST .../requests/<id>/cancel` so you don't get billed for GPU you stopped.

使用前需要安装全局 npm CLI,并通过浏览器登录或在环境变量中提供 RunComfy 令牌。

查看原文
SKILL.md:44来自说明文档打开原文件
1. **RunComfy CLI** — `npm i -g @runcomfy/cli`2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`.

CLI 会持续轮询远程任务,随后从 RunComfy 域名下载生成文件;文档称单个下载限制为 2 GiB。

查看原文
SKILL.md:92来自说明文档打开原文件
The CLI submits, polls every 2s until terminal, then downloads any `*.runcomfy.net` / `*.runcomfy.com` URL from the result into `--output-dir`. Stdout is the result JSON. Stderr is progress.
SKILL.md:195来自说明文档打开原文件
- **Outbound endpoints**: only `model-api.runcomfy.net` (request submission) and `*.runcomfy.net` / `*.runcomfy.com` (download whitelist for generated outputs). No telemetry, no callbacks.- **Generated-file size cap**: the CLI aborts any single download > 2 GiB to prevent disk-fill from a malicious or runaway model output.
从这里开始 · 工作说明SKILL.md
happyhorse-1-0
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 4 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

连接外部网站
SKILL.md:14来自说明文档打开原文件
  video with this model.homepage: https://www.runcomfy.comlicense: MIT
SKILL.md:20来自说明文档打开原文件
[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=happyhorse-1-0) · [Text-to-video](https://www.runcomfy.com/models/happyhorse/happyhorse-1-0/text-to-video?utm_source=skills.sh&utm_medium=skill&utm_campaign=happyhorse-1-0) · [GitHub](https://github.com/agentspace-so/runcomfy-skills/tree/main/happyhorse-1-0)
SKILL.md:174来自说明文档打开原文件
Full reference: [docs.runcomfy.com/cli/troubleshooting](https://docs.runcomfy.com/cli/troubleshooting?utm_source=skills.sh&utm_medium=skill&utm_campaign=happyhorse-1-0).
运行命令
SKILL.md:24来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-skills --skill happyhorse-1-0 -g
SKILL.md:65来自说明文档打开原文件
```bashruncomfy run happyhorse/happyhorse-1-0/text-to-video \
SKILL.md:73来自说明文档打开原文件
```bashruncomfy run happyhorse/happyhorse-1-0/text-to-video \
安装其他软件包
SKILL.md:25来自说明文档打开原文件
```bashnpx skills add agentspace-so/runcomfy-skills --skill happyhorse-1-0 -g```
读取了多少行
196
文件校验值(用于核对版本)
3c839aee73c70ebddc949748911e41e52f55c68a92f851b092304d45a12a587c