安全决策报告
sage-router
AI模型路由代理服务,代码功能与声明基本一致,存在未声明的systemctl服务管理和Node.js子进程调用,属中等权限操作但无明确恶意行为。
最直接的威胁证据
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 2 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 2 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
发现 1 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
systemctl未在声明中 +18
SKILL.md未声明但代码通过subprocess调用systemctl --user start/stop管理服务
Node.js子进程未声明 +12
通过subprocess.run(['node', ...])调用外部JS脚本,声明中无shell执行
文件系统写入未声明 +8
写入~/.cache/sage-router/latency-stats.json无显式声明filesystem:WRITE
最关键的证据
中危 权限提升
systemctl服务管理未在声明中
代码通过subprocess调用systemctl --user start/stop来管理Dario服务(Anthropic兼容代理),这是sudo级别的系统服务操作,但SKILL.md env声明中未提及此能力。
router.py:27 在SKILL.md env或文档中显式声明需要systemctl --user权限管理Dario服务
低危 权限提升
Node.js子进程调用未声明
代码通过subprocess.run(['node', OPENCLAW_GATEWAY_HELPER])调用openclaw_gateway_agent.mjs脚本执行外部OpenClaw SDK调用,这是间接的shell执行,但SKILL.md未声明。
router.py:592 补充声明依赖Node.js运行时和openclaw npm包
低危 文档欺骗
文件系统写入权限声明缺失
代码写入~/.cache/sage-router/latency-stats.json进行延迟统计持久化,这是filesystem:WRITE级别操作,但SKILL.md的env声明中未覆盖。
router.py:49 在SKILL.md中声明需要写入缓存目录的权限
声明能力 vs 实际能力
文件系统 通过
声明 NONE
→ 推断 READ
router.py:13 读取~/.openclaw/openclaw.json 文件系统 通过
声明 NONE
→ 推断 WRITE
router.py:49-54 写入~/.cache/sage-router/latency-stats.json 网络访问 通过
声明 NONE
→ 推断 READ
router.py 多处urllib请求到配置的AI providers 命令执行 阻止
声明 NONE
→ 推断 WRITE
router.py:25-42 systemctl调用 命令执行 阻止
声明 NONE
→ 推断 WRITE
router.py:592 node调用openclaw_gateway_agent.mjs 可疑产物与外联
中危 外部 URL
http://127.0.0.1:3456 router.py:27
中危 外部 URL
http://127.0.0.1:11434 router.py:592
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| openclaw | unknown | npm global | 否 | 通过Node.js加载openclaw SDK,无版本锁定 |
文件构成
5 个文件 · 2398 行
Python 1 个文件 · 2152 行Markdown 2 个文件 · 134 行JavaScript 1 个文件 · 102 行JSON 1 个文件 · 10 行
需关注文件 · 1
router.py systemctl服务管理未在声明中 · Node.js子进程调用未声明 · 文件系统写入权限声明缺失 · http://127.0.0.1:3456 · http://127.0.0.1:11434
其他文件 · SKILL.md · openclaw_gateway_agent.mjs · BRANCH_PROTECTION.md · _meta.json
安全亮点
纯路由代理功能,无凭证收割或敏感数据外泄
所有网络请求目标均为配置的合法AI providers(localhost或openclaw.json)
无base64/eval/反分析混淆代码
无后门植入或持久化机制
OpenClaw gateway连接为本地ws://127.0.0.1:18789(预扫描IOC为med风险)
代码结构清晰,注释完整,路由逻辑可审计