跳转至

AI 智能体技能安全扫描器

概述

AI 智能体技能安全扫描器是专门用于在安装或执行之前,对智能体技能(即 Claude Code、OpenAI Codex CLI、Cursor 及类似智能体运行框架(harness)所使用的、以 Markdown 格式定义的工作流定义文件)进行安全审查的专用工具。研究表明,26.1% 的技能存在漏洞,5.2% 具有明显的恶意意图,因此自动化扫描已成为技能供应链中不可或缺的安全层。目前有两款开源工具填补了这一空白:Cisco AI Defense Skill ScannerNVIDIA SkillSpector

两款工具均结合了静态模式匹配、基于 AST 的行为分析,以及可选的 LLM 驱动语义评估。它们输出与 CI/CD 流水线及 GitHub Code Scanning(SARIF)兼容的结构化报告。

工具速览

属性 Cisco Skill Scanner NVIDIA SkillSpector
厂商 Cisco AI Defense NVIDIA
许可证 开源 Apache 2.0
语言 Python Python 3.12+
安装方式 pip install cisco-ai-skill-scanner make install
输入格式 技能目录、OpenAI Codex、Cursor Git 仓库、URL、ZIP 文件、目录、单个文件
检测模式 YAML + YARA + AST + LLM 16 个类别下的 64 种模式
漏洞 CVE 查询 VirusTotal 哈希扫描 实时 OSV.dev API(支持离线回退)
输出格式 摘要、JSON、Markdown、表格、SARIF、交互式 HTML 终端、JSON、Markdown、SARIF
LLM 提供商 Bedrock、Google AI、Vertex、Azure OpenAI OpenAI、Anthropic、NVIDIA build.nvidia.com
工作流引擎 不适用 LangGraph
CI/CD 集成 GitHub Actions、pre-commit hooks、REST API SARIF 输出,适配 GitHub Code Scanning

Cisco AI Defense Skill Scanner

代码仓库cisco-ai-defense/skill-scanner

架构

Skill Scanner 采用分层多引擎方法,通过共识机制降低误报率:

  1. 静态分析 — 对所有技能文件进行 YAML 和 YARA 模式匹配
  2. 字节码完整性 — 验证代码制品未遭篡改
  3. 流水线命令污点分析 — 追踪不可信数据在 Shell 命令流水线中的流向
  4. 行为分析(AST) — 对 Python 文件进行 AST 数据流分析,追踪被污染的输入至敏感汇聚点
  5. 基于 LLM 的语义分析 — 使用可配置的 LLM 提供商(Bedrock、Google AI、Vertex、Azure OpenAI)进行 AI 驱动检测;支持通过可配置的迭代次数进行多数投票共识
  6. 元分析器 — 汇总所有引擎的发现结果,并应用共识过滤以降低噪音
  7. 云集成 — 可选的 VirusTotal 哈希扫描及 Cisco AI Defense 云分析

CLI 命令

skill-scanner scan ./my-skill/           # single skill directory
skill-scanner scan-all ./skills/         # recursive multi-skill scan
skill-scanner interactive                # guided wizard
skill-scanner generate-policy            # create a custom scan policy
skill-scanner list-analyzers             # show available detection engines

非标准格式支持

--lenient 标志可启用对不符合 OpenAI Codex 或 Cursor 规范的格式进行扫描——尤其是 Claude Code 的 .claude/commands/*.md 技能文件。

输出与集成

  • SARIF 输出可直接与 GitHub Code Scanning 集成,实现 PR 级别的安全卡控
  • 交互式 HTML 报告按攻击关联性对发现结果进行分组
  • 基于严重程度阈值的退出码可用于阻断构建流水线
  • REST API 模式支持将 Skill Scanner 嵌入服务网格

核心局限

"无发现 ≠ 无风险。扫描结果为'无发现'仅表示未检测到已知威胁模式——并不保证完全安全或不存在漏洞。"

NVIDIA SkillSpector

代码仓库nvidia/skillspector

架构

SkillSpector 采用两阶段流水线:

阶段一 — 静态分析(始终运行) - 针对 64 种漏洞特征进行正则模式匹配 - 基于 AST 的行为分析(从源到汇聚点的污点追踪) - YARA 恶意软件特征匹配 - 通过实时 OSV.dev API 进行依赖漏洞扫描(支持离线回退)

阶段二 — LLM 分析(可选) - 使用已配置的 LLM 提供商进行上下文评估 - 误报过滤:LLM 对边界静态发现结果进行重新分类 - 支持 OpenAI、Anthropic、NVIDIA build.nvidia.com 及本地兼容 OpenAI 的服务器(Ollama、vLLM) - 基于 LangGraph 处理流水线构建

漏洞类别(16 个领域)

提示词注入 · 数据外泄 · 权限提升 · 供应链攻击 · 过度自主 · 输出处理漏洞 · 系统提示词泄露 · 记忆投毒 · 工具滥用 · 流氓智能体行为 · 触发器滥用 · 基于 AST 的代码分析 · 污点追踪 · YARA 恶意软件特征 · MCP 特定风险 · 依赖 CVE(OSV.dev)

CLI 用法

skillspector scan ./my-skill/
skillspector scan https://github.com/user/my-skill
skillspector scan ./skill.zip --format json --output report.json
skillspector scan ./my-skill/ --format sarif --output results.sarif

风险评分

对每个技能输出 0–100 的严重程度评分,并针对每条发现提供可操作的修复建议。

核心局限

静态分析和 LLM 分析均无法评估运行时行为;加密或二进制代码也无法被评估。

威胁检测模型对比

威胁类别 Cisco Skill Scanner NVIDIA SkillSpector
提示词注入 是(YARA + LLM) 是(64 种模式 + LLM)
数据外泄 是(污点分析) 是(污点追踪)
恶意代码模式 是(YAML + YARA + AST) 是(YARA + AST)
供应链攻击 部分(VirusTotal 哈希) 是(OSV.dev CVE 查询)
权限提升 部分(流水线污点) 是(专属类别)
MCP 特定风险 是(专属类别)
记忆投毒 是(专属类别)
流氓智能体行为 是(专属类别)
误报抑制 元分析器共识 LLM 重新分类

最佳实践

领域 描述 建议
CI/CD 卡控 阻断引入不安全技能的 PR 结合 GitHub Code Scanning 使用 SARIF 输出;设置严重程度阈值退出码以使流水线失败
安装前审查 在部署前扫描第三方技能 对从外部来源获取的任何技能运行 SkillSpector 或 Skill Scanner;将所有外部技能视为不可信
LLM 分析成本 LLM 引擎会增加延迟和 API 费用 仅对静态严重程度阈值以上的发现结果启用 LLM 分析;大批量扫描时使用本地模型(Ollama)
非标准格式 Claude Code 的 .claude/commands/*.md 文件 使用 Skill Scanner 并携带 --lenient 标志;SkillSpector 原生支持原始目录输入
CVE 覆盖 技能编写代码中的依赖漏洞 SkillSpector 的 OSV.dev 集成覆盖此场景;针对气隙隔离环境配置离线回退
分层扫描 单一引擎无法捕获所有威胁 以互补方式同时运行两款工具:SkillSpector 负责广泛的 CVE + MCP 覆盖,Skill Scanner 负责经共识过滤的语义分析
策略定制 通用策略会产生无关发现 使用 skill-scanner generate-policy 为你的技能库创建特定上下文的规则

参见

参考资料

  • cisco-ai-defense/skill-scanner — Cisco AI Defense 推出的开源多引擎技能安全扫描器,可检测提示词注入、数据外泄和恶意代码模式
  • nvidia/skillspector — NVIDIA 推出的开源两阶段技能扫描器,涵盖 16 个类别的 64 种漏洞模式,支持实时 OSV.dev CVE 查询,基于 LangGraph 流水线构建