rotifer-self-evolving-agent
纯文档型Skill,无本地脚本,但通过npx动态拉取npm包执行第三方代码,存在供应链风险和远程代码执行路径,且文档明确承认历史版本存在声明-行为不一致问题。
为什么得出这个结论
1/4 个维度触发声明资源与推断能力基本一致。
提取到 4 个一般风险产物,需要结合上下文判断。
报告包含 3 步攻击链,另有 2 项高危或严重发现。
发现 1 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:25
权限提升 · SKILL.md:69
最终危害 · SKILL.md:73
风险分是怎么被拉高的
SKILL.md明确说明通过npx -y @rotifer/[email protected]在首次使用时从npm动态下载代码,属于标准供应链攻击向量
install_gene从市场下载第三方代码写入genes/目录,run-agent执行之;虽然WASM沙箱提供了部分保护,但沙箱本身由被执行的代码管理
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'——历史上存在声明-行为不符
process:exec声明允许通过rotifer CLI或npx -y @rotifer/playground执行代码,无版本锁定
登录用户时工具调用信息发送到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 执行来自市场的第三方Gene代码
install_gene从Rotifer市场下载第三方代码写入genes/目录,run-agent执行这些代码。虽然声称通过WASM沙箱执行,但沙箱由被执行的代码自身管理(rotifer CLI/playground),存在沙箱逃逸可能。
SKILL.md:73 历史版本存在声明-行为不符
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 npx fallback无版本锁定
run-agent在rotifer CLI不在PATH时回退到npx -y @rotifer/playground,无版本锁定。playground包同样通过npm动态拉取。
SKILL.md:79 登录用户时使用遥测数据外传
当用户登录时,工具调用名、Gene ID、结果、延迟和用户ID发送到Rotifer Cloud。SKILL.md声称ROTIFER_TELEMETRY=0可关闭,但历史版本0.16.1存在绕过。
SKILL.md:153 声明能力 vs 实际能力
SKILL.md 权限声明与clawhub.json一致 SKILL.md明确列出读写genes/、.rotifer/agents/、~/.rotifer/等路径 SKILL.md声明process:exec用于rotifer CLI和npx -y fallback 可疑产物与外联
https://rotifer.dev README.md:15
https://www.npmjs.com/package/@rotifer/mcp-server/v/0.17.0 README.md:142
https://rotifer.ai README.md:200
https://rotifer.dev/docs README.md:201
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @rotifer/mcp-server | 0.17.0 | npm (动态拉取) | 否 | 首次使用时通过npx动态拉取,无代码签名验证,存在供应链劫持风险 |
| @rotifer/playground | 未指定版本 | npm (动态拉取,fallback路径) | 否 | rotifer CLI不在PATH时的fallback,无版本锁定 |
文件构成
README.md SKILL.md