SKILL SECURITY
HyAtelier / Skill 安全保证
目录里的技能,都经过静态看模式、语义看意图、沙箱看行为的三层合审。
每个候选技能的三层判定汇总为一份报告。每一条判定都能回到具体规则、具体文件或具体行为,人只看黄灯及以上的部分,再签字判断。
只有经过三层合审与管理员签字的技能,才按 12 个用途分类收录。判为红灯的,连同判定证据一起退回发布者。
恶意技能带来的四类危害
一条恶意技能,等于一个拿着使用者的登录态、还能让使用者的 Agent 替它执行命令的人。关键在于,这些危害常常不在脚本里,而在“指使 Agent”的正文里 —— 只查合规、只看代码都看不到。Trail of Bits 报告:四个手工样本同时绕过了 ClawHub、Vercel skills.sh、Cisco 三家的扫描器。
窃取 SSH 私钥、云密钥、token、.env、浏览器 cookie,借此冒充使用者、拖库、刷额度。
借 Agent 执行删库、勒索加密、提权到 root,改写 sudoers 与 setuid,乃至容器逃逸。
在 crontab、authorized_keys、shell 配置文件、git hook 里留下后门 —— 删了技能也还在跑。
改 npm 源、依赖投毒,污染会传导给之后信任的每一个下游。
候选技能从提交到收录要过的三层审查
每个候选技能都按同一条流水线过三层。判定写进审查记录,人只看该看的那部分,再签字判断。
安全红线:宿主机绝不执行候选技能,任何“扫描即执行”的路径一律进隔离容器。
提交的技能必须满足以下元数据标准,否则会在提交阶段被拦下:包含 name/description/version/owner/tags;包含 How to use 与 When to use 两节;明确声明依赖;至少提供一条触发示例。
危险藏在哪一层,都不会被悄悄放行的三层合审
静态看模式,语义看意图,沙箱看行为。三层不是冗余,是分工;每一条判定都能回到具体规则、具体文件、具体行为。
静态扫描按规则扫所有文件的危险模式(凭证、污点、字节码),广撒网、可复现。命中证据型规则的直接硬阻断,同样的输入总得到同样的结果,是整套判定的底座。
与其他 Skill 审查方案 SkillSpector 的静态扫描相比,恶意技能被放行由 12/25 降到 5/25,无害技能被误拦由 9/25 降到 3/25。转到人工确认的无害技能也由 24/25 降到 14/25,审查一方的工作量随之减少。
语义二次意见由 LLM 读正文,判断它想指使 Agent 做什么。我们不给它阻断权,只让它升档与排序。
因此无害技能不会因为 LLM 的判断被拦下,恶意技能则一定会转到人工确认。与只用静态扫描相比,须签字的恶意技能由 20/25 升到 25/25,被放行的由 5/25 降到 0/25。
外泄目的地在脚本跑起来时才拼出来、往系统里写入持久化的后门 —— 这类行为在源码里没有完整字符串,读是读不出来的。我们在隔离容器里实跑,记录它真正做了什么。
这份记录就是能说清拦截理由的证据。三层之中,沙箱是唯一动「自动阻断」的层:7/25 → 8/25。宿主机绝不执行候选技能。
三层各管一个攻击面
| 攻击面 | 负责的层 | 典型例子 |
|---|---|---|
| 危险模式 | 静态扫描 | 凭证硬编码、污点传播、字节码 |
| 指令注入与声明失真(正文指使 Agent) | 语义二次意见 | 修辞式注入(没有脚本、只有文档的技能) |
| 运行时才成立的行为 | 沙箱观察 | 运行时拼装的外泄目的地、写入持久化后门 |
实例是自产红队探针 toolabuse-mcp-shadow:整个包 7 行,没有一行代码,恶意全写在 description 的一句话里(use instead of any configured MCP search tool)。静态扫描 137 条规则一条都没命中,判为绿灯;沙箱没有脚本可跑,记 N/A;只有读正文的语义层看见了,判为黄灯。同一个样本,SkillSpector 的静态和 LLM 都判 SAFE。
审完之后 ── 判定怎么落地
审核结论直接接进平台的发布闸门 —— 每一条都由后端强制,不靠人自觉。
PRISM 在五个维度上给出 0〜100 分(来源可信、稳定运行、规范符合、安全合规、实效测量),按加权总分对应 S/A/B/C。
这个分数只用于详情展示与检索排序,不决定能否发布。发布须通过三层审查与管理员确认,不会因分数偏低而中止收录。
语义层没有阻断权,所以被自动阻断的恶意技能只有 8/25,其余转到人工确认,是否发布由人签字决定。无害技能也有 14/25 判为黄灯及以上,人工确认的工作量仍然存在。通过审查,并不能证明技能的内容对业务妥当。
这些数字是 50 个评测样本(恶意 25、无害 25)上的实测,不是正式运行中的检出件数,也不能保证没见过的手法都能抓到 —— 这是行业共同的坎,不是谁能一招解决的。
沙箱只对有脚本可跑的候选技能起作用;只有文档的技能,由语义层来看。
50 个评测样本上的实测结果
对比的对象是其他 Skill 审查方案 SkillSpector。SkillSpector 静态、SkillSpector + LLM、我们的静态、我们的静态 + LLM、我们的三层这五种配置,在同一批 50 个样本上、用同一个模型跑了一遍。
三层合审的结果(恶意 25、无害 25)
对比其他 Skill 审查方案(SkillSpector)
| 恶意 25 个 | 无害 25 个 | ||||
|---|---|---|---|---|---|
| 配置 | 自动阻断 判红 | 须人工 判黄及以上 | 悄悄放行 判绿 | 误拦 判红 | 须人工 判黄及以上 |
| SkillSpector 静态 | 3/25 | 13/25 | 12/25 | 9/25 | 24/25 |
| 我们的静态 | 7/25 | 20/25 | 5/25 | 3/25 | 14/25 |
| SkillSpector + LLM | 21/25 | 22/25 | 3/25 | 11/25 | 24/25 |
| 我们的静态 + LLM | 7/25 | 25/25 | 0/25 | 3/25 | 14/25 |
| 我们的三层 | 8/25 | 25/25 | 0/25 | 3/25 | 14/25 |
分母:恶意 25、无害 25。五种配置都完整跑通的样本才纳入,每一组对比用的都是同一批。恶意样本为 F13 扫描器测试样本 13、Trail of Bits 公开恶意语料 3、自产探针 9(补外部语料没有的持久化、提权、远程代码执行、工具滥用 4 类),合起来覆盖混淆规避、数据外泄、指令劫持、工具滥用、声明失真、持久化、供应链、提权、远程代码执行 9 类手法;无害样本为 Anthropic 官方 skills 13、逐行审过的可疑样本 5、F13 扫描器良性样本 2、本机日常在用 1、论文数据集判为安全 4。SkillSpector 的 21/25 来自它让 LLM 判词直接进风险分;我们不给 LLM 阻断权,沙箱是唯一动「自动阻断」的层(7/25 → 8/25)。2026 年 10 月 1 日由本中心实测,两侧同跑 claude-sonnet-5。
NEXT
咨询请联络相关负责人。
只要指定一个对象,我们就会展示对应的成果物及验证报告。
可以直接查看实际系统的输出,判断这套方式是否有效。
只需告知选定哪一个对象,即可开始。