静态审计能抓到的
gitleaks(熵阈值 3.8)会抓 AWS / 腾讯 / 阿里 / OpenAI 的 API Key,以及 JWT 和形如 DSN 的密码 URL。技能侧的审计会再额外标记 curl-pipe-bash 安装、递归删除、未限定范围的工具授权。
| 类别 | 风险 | 描述 | 检测方式 |
|---|---|---|---|
| 密钥外泄 | high | AWS / 腾讯 / 阿里 / OpenAI / Anthropic Key 与 JWT 出现在 SKILL.md 或仓库中 | gitleaks 7 条自定义规则 + 香农熵阈值 3.8 |
| 管道安装 | high | 安装命令包含 curl … | bash 等远程脚本直接管道执行 | 正则匹配 curl/wget … | (ba)?sh 模式 |
| 递归删除根目录 | high | 出现 rm -rf / 或等价的全树删除指令 | 词法扫描 rm -rf /、find / -delete 等模式 |
| 工具无界限 | medium | 没有 allowed-tools 字段,相当于把全部 Agent 能力授权给该技能 | 解析 frontmatter 检查 allowed-tools 是否存在 |
| 未声明许可证 | low | 法律上无法转载与商用,下游集成会受阻 | frontmatter 缺 license 或 LICENSE 文件不存在 |
| 未声明版本 | low | 变更追踪困难,订阅者无法判断是否需要升级 | frontmatter 中缺 version 或不符合 semver |
| description 超长 | low | Agent 启动 progressive disclosure 的预算被吃掉,触发命中率下降 | > 140 字直接降权 |
| 高熵字符串 | medium | SKILL.md 中嵌入的疑似密钥/Token,可能误漏到下游 | gitleaks 熵阈值 3.8 + 长度 > 20 字符 |
| 提示词注入 | medium | SKILL.md 内含「忽略上文 / 你现在是 …」类越狱指令 | 关键词列表匹配 + 大写连续标点启发式 |
| 数据外传 | high | 脚本里把仓库内容、env 变量或剪贴板 POST 到外部 URL | 静态识别 fetch/curl 到非白名单 host 的写操作 |
信任分计算公式
基础分 70
+ 6 声明 license
+ 4 声明 version (semver)
+ 6 allowed-tools 范围明确
+ 5 不使用 curl … | bash
+ 5 不使用 rm -rf /
+ 4 全树 gitleaks 0 命中
≥ 90 → 已审计 · ≥ 75 → 社区
≥ 50 → 未审计 · 其它 → 风险 它抓不到的
行为风险。静态扫描判断不了一个技能在运行时会不会偷偷外传数据、会不会引诱 Agent 越狱、会不会调到不安全的工具上。请把每次安装都当作引入一个新依赖来对待。
- 运行时行为:脚本被实际调用后做了什么,静态扫描看不到。
- 链式风险:一个 Skill 可能调用另一个 Skill / MCP server,耦合层级我们暂未追踪。
- 社会工程:description 写得很「乖」但正文藏指令——靠 LLM 复审而非规则匹配。
- 供应链替换:仓库被恶意贡献者替换 SKILL.md 后我们靠下次抓取兜底,而非实时。
上报一个漏洞
发邮件到 security@fluxly.cc,附上重现步骤。48 小时内我们会确认收到,目标在 14 天内给出修复或公开通告。