安全决策报告

rotifer-self-evolving-agent

Rotifer技能存在供应链风险和权限声明不完整的双重问题:通过npx动态执行远程npm包,且权限声明(network:outbound)未反映filesystem和code_execution实际需求

安装决策优先 来源: ClawHub 扫描时间: 14 小时前
文件 5
IOC 10
越权项 4
发现 5
最直接的威胁证据
01
通过SKILL.md伪装成性能优化工具 初始入口 · SKILL.md
02
通过npx执行远程npm包引入供应链风险 初始入口 · SKILL.md
03
install_gene将第三方Gene代码写入~/.rotifer/ 权限提升 · SKILL.md

为什么得出这个结论

2/4 个维度触发
阻止
声明与实际能力

发现 4 项声明之外的能力或越权行为。

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

攻击链

01
通过SKILL.md伪装成性能优化工具

初始入口 · SKILL.md:1

02
通过npx执行远程npm包引入供应链风险

初始入口 · SKILL.md:19

03
install_gene将第三方Gene代码写入~/.rotifer/

权限提升 · SKILL.md:32

04
agent_run执行不可信的第三方代码(即使有沙箱)

最终危害 · SKILL.md:53

风险分是怎么被拉高的

供应链风险-npx动态执行 +15

通过npx @rotifer/[email protected]从npm动态拉取并执行远程代码,非纯本地逻辑

权限声明不完整 +12

clawhub.json声明network:outbound但实际需要filesystem:WRITE(安装Gene)和code_execution(执行Agent)

代码执行能力 +10

install_gene将第三方代码写入~/.rotifer/;agent_run执行这些代码,虽声称WASM沙箱但SKILL.md未充分说明限制

数据外传 +5

登录用户上报使用遥测数据到Rotifer Cloud(工具名/GeneID/延迟/用户ID),虽声称不含敏感信息但仍属数据外传

最关键的证据

高危 供应链

通过npx动态执行远程npm包

SKILL.md声明运行时依赖@rotifer/[email protected]通过npx从npm动态拉取并执行。这是供应链攻击的高风险向量,npm包可能被篡改或存在恶意依赖。

SKILL.md:19
建议使用本地安装的MCP服务器或提供npm包hash校验机制
高危 权限提升

权限声明未反映实际filesystem操作

clawhub.json声明permissions: ['network:outbound'],但install_gene会将第三方Gene代码写入~/.rotifer/目录,这是filesystem:WRITE级别的操作。

clawhub.json:15
权限声明应包含filesystem:WRITE和对应的工具限制说明
中危 代码执行

agent_run可执行任意安装的第三方代码

create_agent和agent_run允许创建并执行本地Agent,这些Agent由Gene组成,来自第三方 marketplace。虽然声称运行在WASM沙箱中,但SKILL.md未提供沙箱限制的技术细节。

SKILL.md:53
明确文档化沙箱边界和可执行代码类型的限制
中危 数据外泄

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

当用户登录Rotifer账号时,MCP服务器会向Rotifer Cloud发送工具调用记录(工具名、Gene ID、执行结果、延迟、用户ID)。虽声称不含文件内容或环境变量,但仍有隐私风险。

SKILL.md:76
提供更明确的数据类型清单,允许用户完全禁用遥测
低危 文档欺骗

文档声称工具限制但未提供技术验证机制

SKILL.md声称--tools=evolve限制了10个工具,拒绝其他21个工具。但这是MCP服务器运行时行为,用户无法在执行前验证。

SKILL.md:21
提供可独立验证的工具白名单或MCP协议审计日志

声明能力 vs 实际能力

网络访问 阻止
声明 READ
推断 WRITE
SKILL.md:19 npx @rotifer/[email protected]执行远程包
文件系统 阻止
声明 NONE
推断 WRITE
SKILL.md:32 install_gene写入~/.rotifer/
code_execution 阻止
声明 NONE
推断 WRITE
SKILL.md:53 agent_run执行Agent的Genes
命令执行 阻止
声明 NONE
推断 WRITE
SKILL.md:18 npx命令执行

可疑产物与外联

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

CONTRIBUTING.md:6

中危 外部 URL
https://www.conventionalcommits.org/

CONTRIBUTING.md:20

中危 外部 URL
https://developercertificate.org/

CONTRIBUTING.md:40

中危 外部 URL
http://www.apache.org/licenses/

LICENSE:3

中危 外部 URL
http://www.apache.org/licenses/LICENSE-2.0

LICENSE:184

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

README.md:140

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

README.md:185

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

README.md:186

提示 邮箱
[email protected]

CONTRIBUTING.md:53

提示 邮箱
[email protected]

CONTRIBUTING.md:90

依赖与供应链

包名版本来源漏洞备注
@rotifer/mcp-server 0.15.0 npm 通过npx动态拉取,存在供应链风险;建议本地安装并校验hash
@rotifer/playground * npm fallback依赖,当rotifer CLI不在PATH时通过npx拉取

文件构成

5 个文件 · 685 行
Markdown 3 个文件 · 464 行Other 1 个文件 · 190 行JSON 1 个文件 · 31 行
需关注文件 · 5
LICENSE Other · 190 行
http://www.apache.org/licenses/ · http://www.apache.org/licenses/LICENSE-2.0
README.md Markdown · 187 行
https://www.npmjs.com/package/@rotifer/mcp-server/v/0.15.0 · https://rotifer.ai · https://rotifer.dev/docs
SKILL.md Markdown · 187 行
通过npx动态执行远程npm包 · agent_run可执行任意安装的第三方代码 · 登录用户的使用遥测数据外传 · 文档声称工具限制但未提供技术验证机制
CONTRIBUTING.md Markdown · 90 行
https://rotifer.dev · https://www.conventionalcommits.org/ · https://developercertificate.org/ · [email protected] · [email protected]
clawhub.json JSON · 31 行
权限声明未反映实际filesystem操作

安全亮点

工具集限制在10个MCP工具,减少攻击面
Gene安装需用户确认(用户确认机制)
提供rollback_gene和snapshot恢复机制
代码开源可审查(github.com/rotifer-protocol/rotifer-mcp-server)
npm包版本固定(0.15.0)防止依赖漂移
未登录用户不发送遥测数据
沙箱执行有WASM层保护(虽未充分说明)
使用Supabase RLS保护公共数据访问