一、为什么需要这个服务
Agent 生态正在复制浏览器插件时代的老问题:安装一个扩展(skill)只需要一次点击,但它可能包含提示词注入、凭据窃取、静默外发或自动执行钩子。SkillHub 的下载量数据只说明「多少人装了」,不说明「装了会发生什么」。
BuildProof 的静态审计引擎对 SkillHub skill 包做纯静态扫描(从不执行包内任何代码),覆盖 30+ 条规则:指令覆盖(PROMPT-001)、诱导读取敏感本地数据(PROMPT-005)、诱导外发(PROMPT-006)、下载并执行(CODE-001)、硬编码密钥(CRED-001)、自动执行钩子(HOOK-001)等。
扫描完成后,引擎把发现汇总为一个四档 verdict,并进一步映射成一个机器可读的 usable 决策字段——这是给 Agent 消费的,不是给人读的。
二、usable 判定语义
| usable | verdict 依据 | 建议行为 |
|---|---|---|
true | clean:静态审计未发现中危及以上风险 | 可以安装使用;未官方认证的 skill 仍建议在沙箱内运行 |
"conditional" | needs_review(有中危)或 suspicious(有高危) | 安装前人工复核 findings 中列出的风险点 |
false | dangerous:存在 critical 级风险(指令覆盖 / 凭据窃取 / 数据外发等) | 不要安装使用 |
响应同时包含每条风险的规则号、严重度、文件、行号、证据(凭据类证据自动脱敏)和修复建议,供 Agent 在需要时向用户展示细节。
三、REST API
最简单的用法是一个 GET:
GET https://www.chuhaijian.com/api/v1/skill-audit?slug=<skill-slug>
# 强制重新下载并重扫(默认 24 小时内直接返回缓存,毫秒级)
GET https://www.chuhaijian.com/api/v1/skill-audit?slug=<skill-slug>&refresh=1
# 也可以 POST
POST https://www.chuhaijian.com/api/v1/skill-audit
Content-Type: application/json
{"slug": "<skill-slug>", "refresh": false}
实测一个已知危险样本(硬编码网关密钥):
$ curl -s "https://www.chuhaijian.com/api/v1/skill-audit?slug=global-biblio-base"
{
"service": "buildproof-skill-audit",
"api_version": "1",
"slug": "global-biblio-base",
"usable": false,
"usable_reason": "存在 critical 级风险(如指令覆盖、凭据窃取、数据外发),不建议使用。",
"verdict": "dangerous",
"risk": {"critical": 1, "high": 0, "medium": 0, "low": 0, "info": 0},
"findings": [
{
"rule_id": "CRED-001",
"severity": "critical",
"file": "config.json",
"line": 3,
"evidence": "\"SMARTLIB_GATEWAY_SECRET\": \"sk-O9vHw…REDACTED\"",
...
}
],
"cached": true,
...
}
错误处理:缺 slug 返回 400;slug 只允许小写字母、数字、_、-(≤64 字符);SkillHub 上不存在的 slug 返回 400 与说明。
四、MCP 服务
如果你的 Agent 支持 Model Context Protocol,可以直接把审计能力挂成工具。端点:https://www.chuhaijian.com/mcp(Streamable HTTP,无状态模式,无需注册)。
通用 MCP 客户端配置:
{
"mcpServers": {
"buildproof-skill-audit": {
"url": "https://www.chuhaijian.com/mcp"
}
}
}
提供两个工具:
| 工具 | 参数 | 返回 |
|---|---|---|
audit_skill | slug(必填)、refresh(可选,默认 false 走缓存) | 与 REST API 完全一致的判定对象 |
list_audited_skills | 无 | 服务端已有审计记录的 slug 列表(可直接复用缓存) |
推荐的 Agent 使用姿势:在安装任何第三方 skill 之前先调用 audit_skill,usable=false 直接拒绝并展示理由;"conditional" 时把 findings 摘要给用户确认;true 可以继续,但保持沙箱运行习惯。
五、两个真实样本
1password(下载量 33k+):官方 1Password CLI 指南。命中 PROMPT-005 是因为它教 Agent 用op read op://…读保险库——这是 1Password 的 by-design 用法,引擎已识别降级为提示级,最终usable: true。global-biblio-base:配置文件中硬编码真实网关密钥,usable: false。公开响应中凭据已自动脱敏——报告泄露事实,但不二次扩散泄露内容。
六、边界与免责
判定基于纯静态分析:引擎从不执行被审计包内的任何代码,动态行为检测(沙箱引爆)须在一次性隔离主机上进行。静态审计存在漏报可能,usable: true 不等于绝对安全,也不能替代人工审查。API 与 MCP 服务按「现状」提供,无 SLA,请勿用于关键业务的唯一安全依据。
网页版(含逐条风险详情与源码证据):www.chuhaijian.com/?mode=skill&slug=1password