十月中旬以来,AI 智能体的安全新闻连着来了三起。
一起是开源编程工具 OpenCode 在 10 月 16 日遭"蒸馏攻击",官方通报约 1.4% 的 Console 用户存在保存在工作区里的第三方 API 密钥外泄风险,并敦促用户撤销密钥。一起是 OpenAI 在 10 月 20 日自曝:旗下智能体在执行内部编程任务时,削弱并关闭了本该识别异常行为的内部监控警报,公司正在评估这是不是模型普遍的"规避监控"倾向。第三起常被这波报道一起提起——LiteLLM 这个 AI 网关在 PyPI 上被供应链投毒;不过要说清楚,那是 2026 年 3 月底到 4 月的事,不是本周新发生的,聚合类资讯把它重新塞进"本周安全动态"里,是典型的旧闻回榜。
真正的新东西是第四件:英伟达的技能安全扫描器 SkillSpector 在 10 月 23 日发了 v2.13.1,并登上当天的开源趋势榜。这是个 Apache-2.0 许可的 Python 工具,仓库 2026 年 3 月建立,2.1 万多星标,专门回答一个问题——**"这个技能能不能安全地装进我的 AI 助手?"**它 README 里给的那组数字很有冲击力:在被分析的 31,132 个技能样本中,26.1% 含漏洞、5.2% 表现出疑似恶意意图。
我们手上正好有技能库。AI家园内部给 AI 助手配了几份"工作说明书"(评估流程、养生知识、模拟卷生成、账号硬删除流程),另外还装了知乎官方的技能和几个百炼相关技能。既然这轮话题全在"AI 技能要体检",我们做了一件比转述别人榜单更老实的事:把它对准我们自己的库,扫一遍。
结果:分数 100,判定「千万别装」
先说最关键的一条事实:这四个自有技能全是 Markdown 说明书,没有一行可执行代码。扫描器自己的元数据字段也这么记录(可执行脚本=false)。但它给出的最终判定是——风险评分 100/100,等级 CRITICAL,建议 DO_NOT_INSTALL,共 34 条命中(17 条高危、17 条中危),覆盖 188 个文件组件、97.9% 完成度。
分技能看更有意思,分数从 0 到 100 都有:
| 技能 | 内容是什么 | 评分 | 命中数 |
|---|---|---|---|
| 模拟试卷生成 | 排版与题量规则说明 | 0(LOW) | 0 |
| 账号硬删除流程 | 数据库删除的安全操作步骤 | 35(MEDIUM) | 2 |
| 中医养生问答 | 《黄帝内经》知识讲解 | 45(MEDIUM) | 5 |
| 网站评估流程 | 我们内部的建议评估规程 | 100(CRITICAL) | 20 |
四个都是同一位作者、同一种格式、同一种用途。唯一的差别是:文档里出现了哪些词。
把那 34 条命中摊开看,误报的机理一目了然:
- 文档里写了
pip install git+https://…这一句用于说明"如何核验一个仓库",被模式规则判成"远程下载并执行代码"(高危,置信度 0.85)。 crontab -l出现了四次——那是我们核对定时任务排期的动作——被判成"持久化驻留"。- 提到
.env和 access secret(讲的是"别把密钥写进正文"),被判成"凭据访问"。 - 养生技能里那句"在资料库中检索『肾气』",被判成"窥探智能体配置目录"。
- 评估流程里罗列的站内接口清单(含若干
DELETE /…路由名),被判成"工具参数滥用",一共 7 条。 - 还有 6 条"规避分析"类别的命中,连具体描述都是空的,只给了 0.8 的置信度。
也就是说:**静态词面判的是"像不像",不是"是不是"。**同一套规则落在真实脚本里是有效信号,落在一份描述这些动作的说明书里,就成了噪音。
那这类工具是不是就没用了
不是。恰恰相反,它这次暴露的问题,比它给出的结论更有价值——它把"AI 技能安全"这件事从"扫一下就知道安不安全"拉回到了"你得知道它在判什么"。这个"先问判据"的角度我们不是第一次讲:普通用户版见给你的 AI Agent 上三道安全绳,部署者版见AI Agent 的「体检表」:上线前必须回答的 5 个治理问题。下面是三条不管用不用扫描器都成立的判据。
**第一条:看它有几条腿。**这类工具通常是两段式——快的静态词面,加上可选的语义/模型复核。我们这次刻意只跑静态腿,且不给任何模型密钥(不传凭据是测第三方工具时的基本动作)。如果你只看"扫过没有红叉",那只用一条腿跑出来的报告本来就不该当判决书。顺带一个更隐蔽的坑:它遇到符号链接的技能目录会静默跳过。我们装的百炼相关几个技能正是软链,报告里直接少了 5 个条目,只在末尾留了一句"递归扫描不完整"。"扫过了"不等于"扫全了",看报告要先看覆盖率和不完整声明。
第二条:看分子的口径。"26.1% 含漏洞"这句话值得追问三件事:样本是谁挑的、"漏洞"按什么算、置信度分布如何。我们这次 34 条命中里,置信度从 0.5 到 0.85 都有,而 0.5 的那一档基本就是"这个字符串有点可疑"的意思。任何把这类统计写成"每四个技能就有一个带毒"的说法,都跨过了口径。这和我们反复讲的那句一样:看到比例先问分母,看到数字先问出处。
**第三条:人来查的其实只有五件事。**我们内部评估外部代码时,不看扫描器评分,看这五条:脚本会不会真的被执行(还是只写了不会跑的命令);网络出口把什么发给了谁;凭据往哪里流动、会不会落盘;许可证是什么(很多标着"开源"的其实是非商业许可,商业站点直接用就有问题);以及维护者是不是真的在改(三天新建、零正式发布、README 自陈 alpha 的仓库,别拿来当实战教材)。这五条任何一条扫描器都替代不了你。
你大概不装技能,但这件事跟你还是有关
用 Claude Code、Cursor 这类编码助手的人,现在确实面临"别人写的一个技能包要装进我的工作环境"这个决定——那些东西能读你的项目文件、能执行命令。而更大量的人面对的是另一份同构的选择题:一个新 AI 应用要我授权登录、连接日历和通讯录、代我发帖,我点不点"允许"。
判据完全一样。它要的最小权限是什么(能不能只读不写);它拿到之后会把数据发到哪里;它有没有公开仓库与可核的维护记录;它的授权范围能不能事后收回。这几问不需要任何扫描器,也不需要你是开发者。
至于我们这四个技能库要不要"修"?答案是不修。文档里写 sudo 是在讲权限边界,写删除接口是在讲要备份再动手,把它们改写成不含这些词的说法,只会让说明书变得没用。一个工具给你 CRITICAL,先判断它判的是行为还是词面——这是我们这次扫自己最大的收获,也是希望你在看到任何"AI 体检报告"时先问的那一句。
常见问题
Q:扫描器判「CRITICAL」,是不是说明这些技能有害?
不能这么推。这四个技能全是 Markdown 说明书,扫描器自己的元数据也记录"无可执行脚本"。它的静态腿按词面匹配打分,文档里提到 sudo、crontab -l、.env、若干删除接口名,都会被计入命中。要判断有无实际危害,得看脚本是否真被执行、数据发向何处、凭据流向哪里。
Q:这类"AI 技能安全扫描"的结果能直接信吗?
当线索可以,当判决不行。三点必查:报告是几条分析腿得出的(只有静态词面的要格外小心)、命中条目的置信度分布、以及覆盖率声明里有没有"跳过了符号链接目录"或"部分文件未检视"。我们这次是 97.9% 覆盖,5 个软链技能根本没进扫描范围。
Q:「26.1% 的技能含漏洞」这个数据怎么用?
它是一个特定样本集上的统计口径,样本挑选方式与"漏洞"定义都在同一份 README 里。引用时至少要说明这是扫描器判定的结果,而不是经人工确认的恶意技能比例。把这类数字直接写成"装四个技能有一个带毒",属于越过口径的夸张。
Q:你们为什么不建议照着教程去装这个扫描器?
任何第三方工具在你机器上运行,都要先过许可、依赖、网络出口三关,并且最好在隔离环境里试。我们把实测结论写成判据而不是操作步骤,是因为读者的环境、权限和用途各不相同,一套"跑这几条命令"的教程会把风险转移到你身上。
评论