自动化与运维 ✓ NVIDIA · 官方 skill-securityprompt-injectionsupply-chain-securitymcp-securitysarifyaraosv

SkillSpector 技能安全扫描器

在安装前扫描智能体技能的安全风险。

FollowAgents 评估 · FARS-2.0
待评估
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

SkillSpector 是用于审查 AI 智能体技能的安全扫描器,可扫描 Git 仓库、URL、ZIP 文件、本地目录和单个文件。它以静态分析为第一阶段,并可选用 LLM 进行语义评估;扫描对象不会被执行。工具覆盖 17 类、68 种漏洞或恶意行为模式,包括提示注入、凭据或上下文外传、危险代码、依赖风险、MCP 最小权限和 MCP 工具投毒。它可输出终端报告、JSON、Markdown 或 SARIF,并给出 0–100 风险分数、严重度、安装建议和具体发现。它既可作为 Python LangGraph 工作流调用,也可通过 `skillspector mcp` 作为 MCP 服务器,为 Claude Code、Codex CLI、Gemini CLI 等支持 MCP 的运行时提供安装前门禁。

运行 skillspector scan <target> 后,工具先摄取目标并对符合条件的文件执行正则静态检测、Python AST 行为分析、YARA 签名检查,以及 SC4 通过 OSV.dev 进行的依赖 CVE 查询。随后,如未使用 --no-llm,它会把符合分析条件的文件内容发送给所配置的 SKILLSPECTOR_PROVIDER,进行可选的 LLM 语义评估和误报过滤。最终报告包含 risk_assessment、组件清单、issues 和扫描元数据;JSON 结果可作为 CI 或 IDE 的稳定集成接口。skillspector baseline 可生成基线,后续扫描可通过 --baseline 仅报告新的发现。安装 MCP extra 后,scan_skill(target, use_llm=true, output_format="json") 会返回结构化的 risk_scoreseverityrecommendationsafe_to_installfindings

  1. 维护 Claude Code 技能库的团队,在将第三方 Git 仓库纳入内部目录前执行静态扫描,并以 JSON 报告决定是否允许安装。
  2. 为 Codex CLI 配置 MCP 工具的开发者,在添加新技能或 MCP 相关内容前调用 `scan_skill`,按风险建议实施安装门禁。
  3. 在 CI 中维护技能包的安全工程师,使用 SARIF 输出将危险调用、未固定依赖和供应链发现导入现有代码扫描流程。
  4. 需要审计 ZIP 形式技能交付物的安全负责人,在不执行其中代码的前提下检查提示注入、数据外传和可疑 YARA 特征。
  5. 需要降低重复告警的技能维护者,提交 `.skillspector-baseline.yaml`,让后续复扫聚焦尚未处置的新发现。

这个 Agent 有哪些优点和局限?

优点
  • 将正则检测、Python AST、YARA、OSV.dev 依赖漏洞查询和可选 LLM 语义评估组合为两阶段流程,而非只做关键词匹配。
  • 可扫描本地文件、目录、ZIP、URL 与 Git 仓库,并提供终端、JSON、Markdown、SARIF 四种报告输出。
  • 明确不执行被扫描技能;`--no-llm` 可避免将文件内容发送给 LLM 提供商。
  • 支持基线抑制与指纹或 glob 规则,便于在持续扫描中只处理新增风险。
  • 提供 MCP 服务和 Python `graph.invoke` 接口,可用于安装门禁、CI 和编辑器集成。
局限
  • 静态分析可能产生误报,LLM 语义评估虽可提高精度,但需要配置提供商、凭据或本地 CLI 运行时。
  • 启用 LLM 分析会将符合条件的文件内容发送给所配置的提供商;即使使用 `--no-llm`,SC4 仍会向 OSV.dev 发送依赖名称和版本。
  • 工具是安装前检测而不是沙箱;若仍安装高风险技能,它不会隔离或限制该技能对主机的影响。
  • 文档列出的限制包括可能遗漏非英语模式、无法分析图片中的文字或加密/编译代码,也不进行动态行为执行。
  • HTTP MCP 传输默认没有认证;若绑定到可路由接口,必须自行放置带认证的反向代理。

如何安装或部署这个 Agent?

CLI 仅安装:
uv tool install git+https://github.com/NVIDIA/skillspector.git

若要运行 MCP 服务器:
uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'

从源码安装时,先创建并激活 Python 虚拟环境,然后运行 make install;开发依赖使用 make install-dev。无凭据的首次静态扫描可直接使用 --no-llm。启用 LLM 分析时,需要按所选提供商配置凭据;例如 OpenAI 路径需要 SKILLSPECTOR_PROVIDER=openaiOPENAI_API_KEY

如何使用这个 Agent?

先进行本地静态扫描:
skillspector scan ./my-skill/ --no-llm

生成机器可读报告:
skillspector scan ./my-skill/ --no-llm --format json --output report.json

扫描 Git 仓库:
skillspector scan https://github.com/user/my-skill

使用 OpenAI 进行可选语义分析:
export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=sk-...
skillspector scan ./my-skill/

启动本地 MCP 服务:
skillspector mcp

向 Claude Code 注册该服务:
claude mcp add skillspector -- skillspector mcp

常见问题

静态扫描需要 API 密钥吗?
不需要。使用 `skillspector scan ./my-skill/ --no-llm` 可跳过 LLM 分析。SC4 会尝试访问 OSV.dev 查询依赖漏洞;OSV.dev 不需要 API 密钥,无法访问时会使用内置回退列表。
LLM 分析会发送什么数据?
启用后,符合分析条件的文件内容会发送到 `SKILLSPECTOR_PROVIDER` 对应的端点。被识别为有效根级 OpenSSF Model Signing 签名的 `skill.oms.sig` 会保留在组件清单中,但不参与静态或 LLM 内容分析。
扫描是否会执行不受信任的技能代码?
不会。工具说明其分析由正则、Python AST、YARA 和可选的文件内容 LLM 评估组成,被扫描技能代码不会运行。
如何在自动化流程中阻止高风险安装?
读取 JSON 输出中的 `recommendation`:`SAFE` 可允许,`CAUTION` 可提示或警告,`DO_NOT_INSTALL` 可阻止。命令退出码仅将风险分数大于 50 的结果标为 1。
MCP HTTP 服务能直接暴露到公网吗?
不应直接暴露。HTTP 传输没有认证;文档建议在对外绑定前部署带认证的反向代理,例如 nginx 加 mTLS。HTTP 模式还会自动拒绝本地路径和 `file://` URL。

相关 Agents