安全决策报告

coppa-check

技能代码本身无明显恶意,但存在影子行为(--non-interactive 声称离线却实际联网获取规则)和文件系统越权写入(--output 可写任意路径)。凭证收集仅限于声明的登录流程,API端点硬编码防重定向,但文档-行为存在不一致。

安装决策优先 来源: ClawHub 扫描时间: 2026/8/10
文件 5
IOC 4
越权项 1
发现 2
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

风险分是怎么被拉高的

影子行为:文档声明离线预览,实际联网获取规则 +20

SKILL.md称--non-interactive为完全离线预览,但代码第361行 fetch_rules() 在非交互模式下仍先调用网络

文件系统越权写入 +15

声明仅写入~/.config/compliancehub,但--output允许写任意路径

最关键的证据

中危 文档欺骗

--non-interactive 模式影子联网行为

SKILL.md声明--non-interactive为'完全离线预览',但代码在非交互模式下仍先调用 fetch_rules() 联网获取规则(第361行),与文档声明的离线行为不符。这是典型的文档-行为差异,属于影子功能。

scripts/coppa-check.py:361
修改代码逻辑,在--non-interactive模式下跳过fetch_rules()调用,直接使用本地CHECK_ITEMS
低危 权限提升

--output 参数超出声明的文件系统权限

声明仅写入~/.config/compliancehub,但--output允许写入任意用户指定路径。虽然这可能是合法的报告导出需求,但超出了SKILL.md声明的范围。

scripts/coppa-check.py:407
限制--output仅允许写入~/.config/compliancehub目录,或在SKILL.md中明确声明可写任意路径

声明能力 vs 实际能力

网络访问 通过
声明 READ
推断 READ
SKILL.md声明仅访问compliancehub.cn;代码所有端点均硬编码为此域名
文件系统 阻止
声明 WRITE(~/.config/compliancehub)
推断 WRITE(任意路径)
scripts/coppa-check.py:407 args.output可写任意路径,超出声明范围
环境变量 通过
声明 READ(COMPLIANCEHUB_API_KEY)
推断 READ
代码仅读取COMPLIANCEHUB_API_KEY
命令执行 通过
声明 NONE
推断 NONE
代码仅用stdlib,无subprocess等shell调用

可疑产物与外联

中危 外部 URL
https://compliancehub.cn

SKILL.md:21

中危 外部 URL
https://compliancehub.cn/account.html?skill=coppa-check

SKILL.md:71

中危 外部 URL
https://clawhub.ai/user/wwumit

skill-card.md:9

中危 外部 URL
https://clawhub.ai/wwumit/skills/coppa-check

skill-card.md:39

依赖与供应链

没有结构化依赖告警。

文件构成

5 个文件 · 660 行
Python 1 个文件 · 457 行Markdown 2 个文件 · 157 行JSON 2 个文件 · 46 行
需关注文件 · 3
scripts/coppa-check.py Python · 457 行
--non-interactive 模式影子联网行为 · --output 参数超出声明的文件系统权限
SKILL.md Markdown · 99 行
https://compliancehub.cn · https://compliancehub.cn/account.html?skill=coppa-check
skill-card.md Markdown · 58 行
https://clawhub.ai/user/wwumit · https://clawhub.ai/wwumit/skills/coppa-check
其他文件 · package.json · _meta.json

安全亮点

无第三方依赖,仅用Python stdlib(urllib, json, ssl, getpass)
API_BASE硬编码防环境变量注入,注释明确说明安全理由
API Key文件权限设为0600,存储在skill目录外
代码无混淆、无base64编码执行
无凭证收割、无环境变量遍历
无远程脚本执行、无subprocess调用
网络请求使用HTTPS + Bearer token