我们给 117,854 个 AI Agent Skill 做了安全评级,结果如下

真正让人不安的不是"有多少 skill 不安全",而是"有多少根本没人审过"。

装一个 AI agent skill 或 MCP server,意味着把你的 shell、环境变量,以及越来越多的 —— agent 自己的配置和记忆 —— 交给一段不受信任的代码。发现从来不是难点,有几万个可挑;难的是知道你挑中的那个能不能安全运行。

于是我们扫了整个目录。下面是诚实的全貌。

我们怎么扫的

一个规则引擎,借鉴 SlowMist 的 Agent Security Framework 及其 11 类红旗。它对每个 skill 的 README 和代码做静态检查,找具体模式:数据外泄(curl -d $(...))、凭证收割(env | grep -i token)、读取 .env / .ssh / .awscurl | sh 安装脚本、提权、持久化、密钥外泄组合。每个 skill 给一个评级 —— safe / caution / unsafe / reject —— 外加它命中的具体 flag。没有 README 或太新拉不到的,保持 unknown

这是刻意设计的第一层:它查模式,不查意图。看起来干净的 skill 仍可能在语义上做坏事 —— 那是按需深扫该管的。但在 11.7 万的规模下,正是这层模式扫描让整个目录变得"可审计"。

为什么这篇报告只用规则那一层

这里的安全评级是分层的,而这篇报告刻意只用第一层:

所以这不是我们对单个 skill 能做的最深的审查 —— 而是我们对全部 skill 能做的最诚实的全景。需要对某个具体 skill 做深度审计,就去 agentskillshub.top/enterprise

路线图 —— 更深的两层 待上线
  • LLM 语义复核 —— 用 LLM 对被标记的 skill 判断意图(这个 curl | sh 是在装 Homebrew,还是在偷密钥?),降低误报。代码已具备,待启用。
  • 单 skill 深度审计 —— AST + 污点 + YARA 分析(基于 NVIDIA 开源的 SkillSpector),对单个 skill 按需触发。开发中,企业层。

这两层按设计都不对全库跑,所以本报告的数字仍是规则级的 —— 也仍是下限。

发现 1 —— 82% 的目录从没被评级过

117,854 个收录的 skill 里,只有 20,853 个(17.7%) 跨过 5 星 —— 也就是"火到值得评级"的门槛。剩下 约 9.7 万个,实际上未经审计。

这是大多数目录刻意回避的头条。"我们有 11.7 万个 skill"不是卖点。真正重要的是有多少你能真正信任,而对于长尾,诚实的答案是:没人看过。

发现 2 —— 被评级的 skill 里,每 32 个就有 1 个不安全

这 20,853 个被评级的 skill,评级分布如下:

安全评级分布 —— 被评级的 skill(stars ≥ 5,n = 20,853)

safe 安全85.5%
caution 留意5.3%
unsafe 不安全3.0%
reject 拒绝0.1%
unknown 未审6.1%

8.4% 带有安全顾虑。3.1%(约每 32 个 1 个)是 unsafe 或 reject。 不是那种危言耸听的 40%,但也绝非没事:在这个目录的体量下,这相当于约 650 个你真不该闭眼装的 skill,和其它所有结果混在同一个搜索列表里。

发现 3 —— 越火越安全,风险集中在长尾

把被评级的 skill 按 star 数分层,unsafe/reject 占比断崖式下跌:

unsafe + reject 占比,按热度分层

5–20★4.1%
20–100★3.7%
100–1,000★0.9%
1,000★+0.4%

听说过的那个 skill 几乎肯定没问题。危险的是你为某个冷门需求搜索时随手抓到的那个 7 星仓库 —— 恰恰是目录本该帮上忙、却通常帮不上的时刻。

发现 4 —— 红旗里藏着一个 agent 时代独有的新攻击面

在 1,000 个被标记 skill 的样本里,最常见的 flag:

最常见红旗 — 橙色 = agent 原生(读取你 agent 的配置 / 记忆)

sudo 使用483
后台服务安装152
curl | shell99
agent 配置窃取87
隧道服务66
eval()52
敏感环境变量34
agent 记忆窃取23
后门安装11

经典的 shell 风险占大头。但看 agent 配置窃取(87)和 agent 记忆窃取(23):读取你 agent 配置和记忆文件的 skill。 这不是服务器漏洞 —— 这是一个只因为你在跑 agent 才存在的新攻击面。你的 Claude/MCP 配置、你存下的上下文、你那些"代持"的凭证。威胁模型变了,而大多数目录还没注意到。

发现 5 —— 风险集中在哪

按 category 看 unsafe/reject 占比(样本 ≥ 150):

类别样本unsafe / reject
claude-skill3,3863.7%
mcp-server8,9703.4%
codex-skill2,6563.2%
agent-tool4,7792.5%

恰恰是 skill/MCP 这些**跑在你 agent 内部**的格式,风险最高。而这正是重点。

那该怎么办

在你已经工作的地方,装之前先看一眼信任信号:

npx @agentskillshub/cli search "postgres mcp" --safe
npx @agentskillshub/cli audit owner/repo

每条结果都带它的评级和命中的具体 flag。--safe 会隐藏所有未审计及更差的。

诚实的免责声明(因为这正是全部的意义)

一个只告诉你好消息的信任层,就不配叫信任层。关于这 9.7 万个 skill,我们能说的最有用的一句话是:我们还不知道 —— 而且我们会当面告诉你。

装之前先查:npx @agentskillshub/cli search "<你需要的能力>" --safe,或在 agentskillshub.top 浏览被评级的 skill。
团队/企业:更深的单 skill 审计 + 合规证据,见 agentskillshub.top/enterprise