一、为什么需要这个服务

Agent 生态正在复制浏览器插件时代的老问题:安装一个扩展(skill)只需要一次点击,但它可能包含提示词注入、凭据窃取、静默外发或自动执行钩子。SkillHub 的下载量数据只说明「多少人装了」,不说明「装了会发生什么」。

BuildProof 的静态审计引擎对 SkillHub skill 包做纯静态扫描(从不执行包内任何代码),覆盖 30+ 条规则:指令覆盖(PROMPT-001)、诱导读取敏感本地数据(PROMPT-005)、诱导外发(PROMPT-006)、下载并执行(CODE-001)、硬编码密钥(CRED-001)、自动执行钩子(HOOK-001)等。

扫描完成后,引擎把发现汇总为一个四档 verdict,并进一步映射成一个机器可读的 usable 决策字段——这是给 Agent 消费的,不是给人读的。

二、usable 判定语义

usableverdict 依据建议行为
trueclean:静态审计未发现中危及以上风险可以安装使用;未官方认证的 skill 仍建议在沙箱内运行
"conditional"needs_review(有中危)或 suspicious(有高危)安装前人工复核 findings 中列出的风险点
falsedangerous:存在 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_skillslug(必填)、refresh(可选,默认 false 走缓存)与 REST API 完全一致的判定对象
list_audited_skills服务端已有审计记录的 slug 列表(可直接复用缓存)

推荐的 Agent 使用姿势:在安装任何第三方 skill 之前先调用 audit_skillusable=false 直接拒绝并展示理由;"conditional" 时把 findings 摘要给用户确认;true 可以继续,但保持沙箱运行习惯。

五、两个真实样本

六、边界与免责

判定基于纯静态分析:引擎从不执行被审计包内的任何代码,动态行为检测(沙箱引爆)须在一次性隔离主机上进行。静态审计存在漏报可能,usable: true 不等于绝对安全,也不能替代人工审查。API 与 MCP 服务按「现状」提供,无 SLA,请勿用于关键业务的唯一安全依据。

网页版(含逐条风险详情与源码证据):www.chuhaijian.com/?mode=skill&slug=1password