安全决策报告

rotifer-self-evolving-agent

纯文档型Skill,无本地脚本,但通过npx动态拉取npm包执行第三方代码,存在供应链风险和远程代码执行路径,且文档明确承认历史版本存在声明-行为不一致问题。

安装决策优先 来源: ClawHub 扫描时间: 2026/8/30
文件 3
IOC 4
越权项 0
发现 5
最直接的威胁证据
01
用户通过/evolve调用Skill,Skill通过npx从npm拉取@rotifer/[email protected] 初始入口 · SKILL.md
02
攻击者通过市场发布恶意Gene,用户通过/evolve install_gene安装 权限提升 · SKILL.md
03
用户执行run-agent,恶意Gene在WASM沙箱中执行(沙箱逃逸或沙箱内数据外泄) 最终危害 · SKILL.md

为什么得出这个结论

1/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

复核
隐藏执行与外联

提取到 4 个一般风险产物,需要结合上下文判断。

阻止
攻击链与高危发现

报告包含 3 步攻击链,另有 2 项高危或严重发现。

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

攻击链

01
用户通过/evolve调用Skill,Skill通过npx从npm拉取@rotifer/[email protected]

初始入口 · SKILL.md:25

02
攻击者通过市场发布恶意Gene,用户通过/evolve install_gene安装

权限提升 · SKILL.md:69

03
用户执行run-agent,恶意Gene在WASM沙箱中执行(沙箱逃逸或沙箱内数据外泄)

最终危害 · SKILL.md:73

风险分是怎么被拉高的

运行时动态拉取npm包 +15

SKILL.md明确说明通过npx -y @rotifer/[email protected]在首次使用时从npm动态下载代码,属于标准供应链攻击向量

可执行第三方Gene代码 +12

install_gene从市场下载第三方代码写入genes/目录,run-agent执行之;虽然WASM沙箱提供了部分保护,但沙箱本身由被执行的代码管理

历史版本权限声明不实 +8

SKILL.md明确承认'Until version 2.4.3 this list said network:outbound and nothing else, while the Skill already read and wrote project files and shelled out to a CLI'——历史上存在声明-行为不符

远程代码执行路径 +5

process:exec声明允许通过rotifer CLI或npx -y @rotifer/playground执行代码,无版本锁定

使用遥测数据外传 +3

登录用户时工具调用信息发送到Rotifer Cloud,但声称可ROTIFER_TELEMETRY=0关闭

最关键的证据

高危 供应链

运行时从npm动态拉取未验证的代码

Skill通过npx -y @rotifer/[email protected]在运行时从npm动态获取MCP服务器代码,SKILL.md承认这是标准MCP Skill模式但明确指出'you are trusting remote code'。无代码签名验证,无锁定哈希,仅依赖版本号。

SKILL.md:138
使用npm view @rotifer/[email protected] dist.integrity获取SHA512哈希并在部署前验证;考虑fork MCP服务器代码到私有registry
高危 代码执行

执行来自市场的第三方Gene代码

install_gene从Rotifer市场下载第三方代码写入genes/目录,run-agent执行这些代码。虽然声称通过WASM沙箱执行,但沙箱由被执行的代码自身管理(rotifer CLI/playground),存在沙箱逃逸可能。

SKILL.md:73
审查每个待安装Gene的源码;不要在生产环境对未充分验证的Gene执行run-agent
中危 文档欺骗

历史版本存在声明-行为不符

SKILL.md明确承认'Until version 2.4.3 this list said network:outbound and nothing else, while the Skill already read and wrote project files and shelled out to a CLI'。历史上该skill在文档中隐瞒了实际能力。

SKILL.md:189
确认当前版本2.4.7已完全对齐声明与行为;审查旧版本是否存在影子功能
中危 供应链

npx fallback无版本锁定

run-agent在rotifer CLI不在PATH时回退到npx -y @rotifer/playground,无版本锁定。playground包同样通过npm动态拉取。

SKILL.md:79
确保rotifer CLI已安装并锁定版本,减少对npx fallback的依赖
低危 数据外泄

登录用户时使用遥测数据外传

当用户登录时,工具调用名、Gene ID、结果、延迟和用户ID发送到Rotifer Cloud。SKILL.md声称ROTIFER_TELEMETRY=0可关闭,但历史版本0.16.1存在绕过。

SKILL.md:153
生产环境使用ROTIFER_TELEMETRY=0;确认当前运行版本>=0.17.0

声明能力 vs 实际能力

网络访问 通过
声明 OUTBOUND
→
推断 OUTBOUND
SKILL.md 权限声明与clawhub.json一致
文件系统 通过
声明 READ+WRITE
→
推断 READ+WRITE
SKILL.md明确列出读写genes/、.rotifer/agents/、~/.rotifer/等路径
命令执行 通过
声明 WRITE
→
推断 WRITE
SKILL.md声明process:exec用于rotifer CLI和npx -y fallback

可疑产物与外联

中危 外部 URL
https://rotifer.dev

README.md:15

中危 外部 URL
https://www.npmjs.com/package/@rotifer/mcp-server/v/0.17.0

README.md:142

中危 外部 URL
https://rotifer.ai

README.md:200

中危 外部 URL
https://rotifer.dev/docs

README.md:201

依赖与供应链

包名版本来源漏洞备注
@rotifer/mcp-server 0.17.0 npm (动态拉取) 否 首次使用时通过npx动态拉取,无代码签名验证,存在供应链劫持风险
@rotifer/playground 未指定版本 npm (动态拉取,fallback路径) 否 rotifer CLI不在PATH时的fallback,无版本锁定

文件构成

3 个文件 · 438 行
Markdown 2 个文件 · 404 行JSON 1 个文件 · 34 行
需关注文件 · 2
README.md Markdown · 202 行
https://rotifer.dev · https://www.npmjs.com/package/@rotifer/mcp-server/v/0.17.0 · https://rotifer.ai · https://rotifer.dev/docs
SKILL.md Markdown · 202 行
运行时从npm动态拉取未验证的代码 · 执行来自市场的第三方Gene代码 · 历史版本存在声明-行为不符 · npx fallback无版本锁定 · 登录用户时使用遥测数据外传
其他文件 · clawhub.json

安全亮点

文档透明度高,明确承认了历史版本的声明-行为不符问题
明确列出了所有10个可用工具名称,拒绝访问其余21个工具
资源访问范围限制在项目目录genes/和.rotifer/agents/,不访问home目录下的凭证
提供ROTIFER_TELEMETRY=0选项关闭遥测
安装Gene需要用户确认,可回滚
提供了源码GitHub链接供用户验证