安全决策报告
nim-ensemble / free-scaling
免费AI模型集成库,代码功能正常但存在文档未声明的凭证访问行为(Copilot token刷新机制扫描本地GitHub OAuth令牌),存在文档-行为差异。
为什么得出这个结论
0/4 个维度触发 通过
声明与实际能力
声明资源与推断能力基本一致。
复核
隐藏执行与外联
提取到 3 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
通过
依赖与供应链卫生
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
未声明的凭证访问 +20
_refresh_copilot_token() 扫描 ~/.openclaw/agents/*/auth-profiles.json 查找 ghu_* GitHub OAuth令牌,用于刷新Copilot会话
文档-行为差异 +15
SKILL.md未提及Copilot API集成和GitHub OAuth认证机制
隐蔽依赖 +5
依赖 OPENCLAW_WORKSPACE 环境变量访问外部凭证目录
最关键的证据
中危 文档欺骗
Copilot token刷新机制未在文档中声明
_refresh_copilot_token() 函数扫描本地auth-profiles.json文件查找GitHub OAuth令牌(ghu_*)以刷新Copilot API会话令牌,但SKILL.md未提及此功能或GitHub Copilot集成。
nim_ensemble/voter.py:73-91 在SKILL.md中明确声明使用GitHub Copilot API及OAuth认证机制
低危 权限提升
依赖OpenClaw凭证存储目录
代码依赖 ~/.openclaw/credentials/ 存储Copilot会话令牌,且会读取其他agent的auth-profiles.json,存在凭证访问边界超出skill范围的潜在问题。
nim_ensemble/voter.py:56-57 考虑使用skill独立的凭证存储机制,而非依赖OpenClaw全局存储
低危 供应链
无版本锁定的间接依赖
代码使用Python标准库 urllib.request 作为HTTP客户端,虽无外部依赖但也意味着没有安全更新机制。
nim_ensemble/voter.py:119-142 保持stdlib使用即可,注意Python版本安全性
声明能力 vs 实际能力
文件系统 通过
声明 NONE
→ 推断 READ
voter.py:73-91 扫描 auth-profiles.json 网络访问 通过
声明 WRITE
→ 推断 WRITE
urllib NIM/Copilot API调用 环境变量 通过
声明 READ
→ 推断 READ
读取 NVIDIA_API_KEY 命令执行 通过
声明 NONE
→ 推断 NONE
无subprocess调用 可疑产物与外联
中危 外部 URL
https://build.nvidia.com README.md:3
中危 外部 URL
https://integrate.api.nvidia.com/v1/chat/completions nim_ensemble/models.py:3
中危 外部 URL
https://api.individual.githubcopilot.com/chat/completions nim_ensemble/voter.py:39
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| urllib | stdlib | Python | 否 | 标准库HTTP客户端,无外部依赖 |
文件构成
18 个文件 · 4916 行
Python 16 个文件 · 4526 行Markdown 2 个文件 · 390 行
需关注文件 · 2
nim_ensemble/voter.py Copilot token刷新机制未在文档中声明 · 依赖OpenClaw凭证存储目录 · 无版本锁定的间接依赖 · https://api.individual.githubcopilot.com/chat/completions
README.md https://build.nvidia.com
其他文件 · cascade.py · test_core.py · capability_map.py · audit.py · benchmark.py · generate.py +4
安全亮点
代码结构清晰,无恶意行为证据
使用urllib代替curl/subprocess避免shell注入
无eval/exec/execfile等危险函数
无base64解码执行或代码混淆
API调用目标明确(NVIDIA NIM + GitHub Copilot),无隐蔽C2通信
使用tempfile原子写入保护状态文件
线程锁保护并发状态读写
测试覆盖全面,包含安全相关测试(如否定解析)