首页/知识库/AI Agent 技能包安全审计:从 Anthropic 技能包到 Glasswing 万漏洞的治理体系

AI Agent 技能包安全审计:从 Anthropic 技能包到 Glasswing 万漏洞的治理体系

⚖️AI 伦理与安全高级✍️ AI Master📅 创建 2026-05-31📖 18 min 阅读
💡

文章摘要

系统学习 AI Agent 技能包的安全风险、漏洞类型、审计方法和治理框架,涵盖 Anthropic 31 个企业技能包的供应链安全分析与 Glasswing 万漏洞事件的行业启示。

前置阅读收获

🎯 阅读本篇你将获得:

  • 理解 AI Agent 技能包(Skill Pack)的概念与安全边界
  • 掌握 Anthropic 技能包供应链的安全风险模型
  • 学会 Glasswing 万漏洞事件中的四类核心漏洞类型
  • 获得一套可落地的 AI 技能包安全审计框架
  • 了解行业主流的安全治理最佳实践

本篇属于 AI 安全治理进阶专题,适合已了解 Agent 基本概念的开发者和安全工程师阅读。

AI 技能包安全是一个快速发展的领域,本文所述漏洞类型和审计方法可能随行业演进需要更新。

1概念:什么是 AI Agent 技能包

AI Agent 技能包(Skill Pack) 是指为智能体(Agent)预定义的一组可复用的工具、指令模板和工作流程集合。它将特定领域的专业能力封装为即插即用的模块,让 Agent 无需从零训练就能执行复杂任务。

1.1 技能包的形态

技能包在技术实现上有三种主要形态:

  • 声明式配置:以 .md.yaml 格式定义 Agent 的工具调用规则、系统提示词和任务模板
  • 可执行脚本:包含 Python、JavaScript 等代码的工具链,Agent 可直接调用
  • 混合模式:声明式配置 + 轻量代码,兼顾可读性与灵活性

Anthropic 2026 年 5 月发布的 31 个企业技能包 为例,每个技能包以 .md 格式分发,首日下载量超过 38.2 万次。这些技能包覆盖了代码审查、数据分析、文档生成、合规审计等企业场景,用户可以直接在 Claude 的上下文中加载使用。

1.2 技能包的安全边界

技能包的本质是信任传递:开发者将第三方编写的能力集成到自己的 Agent 中,等于将 Agent 的行为控制权部分让渡给了技能包提供者。这就引入了一个全新的安全维度——Agent 供应链安全

与传统的软件供应链不同,Agent 技能包的「代码」不仅仅是可执行指令,还包括提示词、行为规则、上下文注入等软性指令。一个精心设计的恶意技能包可能不需要注入恶意代码,只需要通过提示词注入就能让 Agent 执行危险操作。

图表加载中…
图表加载中…

理解技能包的核心特征:它是可分发的、可复用的、且会在运行时注入 Agent 的上下文。这意味着任何技能包都应该被当作潜在的不可信输入来处理。

不要假设技能包提供者是可信的。Anthropic 官方技能包经过审核,但社区贡献的技能包可能包含恶意提示词注入或越权工具调用。

2风险模型:AI 技能包的五大安全威胁

AI Agent 技能包的安全风险可以从五个维度建模,这也是 Glasswing 公司在 2026 年 5 月的 30 天安全测试中 发现的超过 10,000 个 AI 安全漏洞 的核心分类框架。

2.1 威胁一:提示词注入(Prompt Injection)—— 危害等级 P0

提示词注入是技能包最常见的攻击向量。恶意技能包可以在其 .md 定义中嵌入隐藏指令,例如:

  • 上下文覆盖攻击:技能包中的系统提示覆盖 Agent 原有的安全约束
  • 隐蔽指令注入:在看似无害的示例代码中隐藏恶意指令
  • 角色劫持:技能包重新定义 Agent 的角色,绕过原有的权限检查

2.2 威胁二:工具调用越权(Tool Misuse)—— 危害等级 P0

技能包可以定义 Agent 使用的工具。恶意技能包可能:

  • 调用超出 Agent 权限范围的 API
  • 将敏感数据通过工具调用外泄到外部服务
  • 定义隐蔽的持久化工具(如定期扫描文件、监控键盘输入)

在 Glasswing 的测试中,约 32% 的 AI 安全漏洞 属于工具调用越权类。这类漏洞的隐蔽性极高,因为从外部看 Agent 只是在「正常使用工具」,实际上工具已被恶意技能包操控。

2.3 威胁三:数据泄露(Data Exfiltration)—— 危害等级 P0

技能包可能通过以下方式导致数据泄露:

  • 在技能包的错误处理逻辑中,将上下文数据发送到外部端点
  • 利用 Agent 的网络访问能力,将敏感信息编码后发送到攻击者控制的服务器
  • 通过多步骤操作,将分散的敏感数据聚合后一次性外泄

2.4 威胁四:持久化与逃逸(Persistence & Escape)—— 危害等级 P1

恶意技能包可能尝试:

  • 在 Agent 的文件系统中留下持久化后门
  • 通过 Agent 的代码执行能力,在宿主系统中创建持久化进程
  • 利用 Agent 的多轮对话记忆,在后续会话中恢复恶意行为

2.5 威胁五:供应链污染(Supply Chain Contamination)—— 危害等级 P1

这是最高级别的系统性风险:

  • 依赖链污染:技能包 A 引用技能包 B,B 被篡改导致 A 也被污染
  • 版本回滚攻击:攻击者发布「旧版本」技能包,其中包含已修复的漏洞
  • 名称混淆:发布与知名技能包同名或相似名称的恶意包
图表加载中…
图表加载中…

对每个新集成的技能包进行威胁建模:它需要什么权限?能访问什么数据?能调用什么工具?是否有外部通信?四个问题至少回答清楚三个再集成。

不要将技能包的安全评估等同于代码安全审查。提示词注入和上下文操纵是传统代码审查无法发现的威胁。

3案例分析:Anthropic 技能包与 Glasswing 万漏洞事件

3.1 Anthropic 31 个企业技能包

2026 年 5 月,Anthropic 发布了首批 31 个企业级技能包,覆盖代码审查、数据分析、合规审计、文档生成等场景。关键数据:

  • 首日下载量:382,000 次
  • 文件格式:纯 Markdown(.md),用户可直接阅读和编辑
  • 分发方式:官方文档页面 + GitHub 仓库
  • 安全审核:Anthropic 内部安全团队对所有技能包进行了审查

Anthropic 的安全设计亮点:

  • 技能包使用声明式定义,所有指令都是可见的 Markdown 文本,用户可以审计
  • 每个技能包都有明确的权限声明,说明需要访问哪些工具和数据
  • 技能包之间没有自动依赖链,每个技能包独立加载,避免供应链污染

3.2 Glasswing 30 天万漏洞事件

2026 年 5 月,网络安全公司 Glasswing 发起了一项为期 30 天 的 AI 安全众测活动,目标是对主流 AI 平台和 Agent 框架进行系统性漏洞挖掘。结果令人震惊:

  • 发现漏洞总数:超过 10,000 个
  • 参与的安全研究员:超过 500 名
  • 涵盖的平台:OpenAI、Anthropic、Google、Microsoft 等主流 AI 平台
  • 最严重的漏洞类型:工具调用越权(32%)、提示词注入(28%)、数据泄露(22%)、持久化与逃逸(18%)

关键发现:

  1. 技能包是主要攻击面:超过 40% 的漏洞与第三方技能包的集成有关
  2. 企业级应用风险更高:企业 Agent 通常有更高的系统权限,被劫持后的破坏力更大
  3. 多 Agent 系统放大风险:当一个技能包被加载到多 Agent 系统中时,漏洞传播速度是单 Agent 的 3-5 倍

IBM 在事件后宣布加入 Glasswing 的 AI 安全修复计划,韩国政府也推进了相关的 AI 安全立法。这标志着 AI 安全从学术研究进入了产业治理阶段。

关注 Glasswing 的漏洞披露模式:他们采用了类似 CVE 的标准化漏洞编号系统,这对建立行业统一的 AI 安全标准具有重要意义。

Anthropic 的技能包虽然经过官方审核,但这不意味着「零风险」。Glasswing 测试中发现的许多漏洞存在于经过审核的官方集成中。

4审计框架:AI 技能包安全审计方法论

基于 Glasswing 的发现和行业最佳实践,以下是一套可落地的 AI 技能包安全审计框架,适用于任何集成第三方技能包的开发者和企业。

4.1 审计阶段一:静态分析(导入前)

在技能包被加载到 Agent 之前,必须进行以下检查:

4.1.1 内容审查

  • 检查所有 Markdown/ YAML 文件,查找可疑的隐蔽指令
  • 搜索常见的注入模式:忽略之前的指令覆盖不要执行安全检查
  • 检查外部链接,确认技能包不会引用恶意资源

4.1.2 权限分析

  • 列出技能包声明的所有工具调用
  • 确认每个工具调用的权限级别是否与 Agent 的权限模型兼容
  • 检查是否有隐式权限提升(如通过工具链间接获取更高权限)

4.1.3 依赖扫描

  • 检查技能包是否引用其他技能包或外部依赖
  • 对所有依赖项重复执行内容审查和权限分析
  • 建立依赖树图,确认没有循环依赖或隐藏的传递依赖

4.2 审计阶段二:沙箱测试(导入后)

技能包通过静态分析后,必须在隔离环境中测试:

  • 网络隔离测试:在无外网访问的环境中运行 Agent + 技能包,监控 DNS 查询和所有网络请求
  • 文件系统隔离测试:在临时文件系统中运行,确认技能包不会尝试读写敏感路径
  • 工具调用边界测试:使用受限的工具集运行技能包,确认不会调用未授权的工具
图表加载中…

4.3 审计阶段三:运行时监控(生产环境)

即使通过了前两个阶段,生产环境中仍需持续监控:

  • 日志审计:记录所有技能包的工具调用和上下文注入
  • 异常检测:当技能包的行为模式偏离基线时发出告警
  • 定期重审:每季度对所有已集成的技能包重新进行静态分析
typescript
interface SkillPackAudit {
  name: string;
  version: string;
  injectedPrompts: string[];
  toolCalls: string[];
  externalLinks: string[];
  riskLevel: 'low' | 'medium' | 'high' | 'critical';
}

function auditSkillPack(pack: SkillPackAudit): string[] {
  const issues: string[] = [];
  
  // 检查注入的提示词
  if (pack.injectedPrompts.some(p => p.includes('忽略') || p.includes('覆盖'))) {
    issues.push('检测到可能的提示词注入');
  }
  
  // 检查工具调用权限
  if (pack.toolCalls.some(t => t.includes('文件系统') || t.includes('网络'))) {
    issues.push('技能包请求敏感工具权限');
  }
  
  // 检查外部链接
  if (pack.externalLinks.length > 0) {
    issues.push(`发现 ${pack.externalLinks.length} 个外部链接,需人工审查`);
  }
  
  return issues;
}
python
import subprocess
import json
import tempfile

def sandbox_test_skillpack(skillpack_path: str, timeout: int = 60) -> dict:
    """在沙箱环境中测试技能包的行为"""
    with tempfile.TemporaryDirectory() as sandbox_dir:
        result = {
            'exit_code': 0,
            'network_requests': [],
            'file_operations': [],
            'issues': []
        }
        
        # 使用 strace 监控系统调用
        strace_cmd = [
            'strace', '-f', '-e', 'trace=network,file',
            'python', '-c',
            f'import json; data = json.load(open('{skillpack_path}')); print(data)'
        ]
        
        try:
            proc = subprocess.run(strace_cmd, capture_output=True, text=True, timeout=timeout)
            result['exit_code'] = proc.returncode
            
            # 分析网络请求
            for line in proc.stderr.split('
'):
                if 'connect' in line or 'socket' in line:
                    result['network_requests'].append(line.strip())
                if 'open' in line or 'read' in line:
                    result['file_operations'].append(line.strip())
            
            # 检查异常行为
            if result['network_requests']:
                result['issues'].append('检测到网络请求,需要人工审查')
            
        except subprocess.TimeoutExpired:
            result['issues'].append('技能包执行超时,可能存在恶意行为')
        
        return result
typescript
// 技能包安全审计自动化脚本示例
interface SkillPackAudit {
  name: string;
  version: string;
  injectedPrompts: string[];
  toolCalls: string[];
  externalLinks: string[];
  riskLevel: 'low' | 'medium' | 'high' | 'critical';
}

function auditSkillPack(pack: SkillPackAudit): string[] {
  const issues: string[] = [];
  
  // 检查注入的提示词
  if (pack.injectedPrompts.some(p => p.includes('忽略') || p.includes('覆盖'))) {
    issues.push('检测到可能的提示词注入');
  }
  
  // 检查工具调用权限
  if (pack.toolCalls.some(t => t.includes('文件系统') || t.includes('网络'))) {
    issues.push('技能包请求敏感工具权限');
  }
  
  // 检查外部链接
  if (pack.externalLinks.length > 0) {
    issues.push(\`发现 \${pack.externalLinks.length} 个外部链接,需人工审查\`);
  }
  
  return issues;
}

将审计流程自动化:编写脚本自动扫描新导入的技能包,检查常见的注入模式和权限越界。人工审查应该聚焦于脚本无法覆盖的语义分析。

沙箱测试不能替代生产环境监控。有些攻击(如时间延迟型、条件触发型)只能在特定的运行环境中被触发。

5治理框架:企业级 AI 技能包安全管理

5.1 技能包注册与审批

企业应该建立技能包注册表(Skill Registry),所有技能包必须经过以下流程才能被集成:

  1. 提交申请:开发者提交技能包名称、来源、用途说明
  2. 安全审查:安全团队执行静态分析 + 沙箱测试
  3. 审批通过:技能包被加入企业白名单,分配唯一标识
  4. 版本锁定:锁定技能包的版本,禁止自动更新
  5. 定期复审:每季度对已批准的技能包重新审查

5.2 权限最小化原则

每个技能包应该只获得完成其功能所需的最小权限

  • 工具权限:技能包只能调用其明确声明的工具
  • 数据权限:技能包只能访问其功能所需的数据范围
  • 网络权限:技能包的网络访问应该被限制在指定的域名白名单内

5.3 事件响应计划

当发现技能包存在安全问题时,企业应该有明确的响应流程:

  1. 立即隔离:停止所有使用问题技能包的 Agent 实例
  2. 影响评估:确定技能包在隔离期间可能造成的影响范围
  3. 漏洞修复:修复或替换有问题的技能包
  4. 通知相关方:向受影响的团队和用户通报情况
  5. 复盘改进:分析根本原因,更新审计流程

5.4 行业协作

AI 技能包安全需要行业协作,因为:

  • 单个企业的审计能力有限:无法覆盖所有攻击向量
  • 漏洞信息需要共享:一个平台发现的漏洞可能影响所有平台
  • 标准需要统一:CVE-like 的标准化编号系统有助于快速定位和修复

Glasswing 的众测模式提供了一个很好的范例:通过组织大规模安全研究员参与,在短短 30 天内发现了超过 10,000 个漏洞。这种模式可以推广到技能包安全领域。

建立技能包安全社区:鼓励开发者提交可疑技能包,共享审计结果和修复方案。开放协作比封闭审查更能快速提升整体安全水平。

不要依赖单一的安全工具或流程。技能包安全的最佳实践是「防御纵深」:静态分析 + 沙箱测试 + 运行时监控 + 事件响应,四层防线缺一不可。

6未来展望:AI 技能包安全的演进方向

6.1 自动化审计工具

随着技能包生态的发展,自动化审计工具将成为刚需:

  • 静态分析引擎:自动扫描 Markdown/YAML 文件中的注入模式和可疑指令
  • 行为分析引擎:在沙箱中自动执行技能包,监控其实际行为
  • 依赖分析工具:自动构建技能包的依赖树,识别供应链风险
  • 合规检查工具:自动确认技能包是否符合企业的安全政策和行业法规

Microsoft 的 RAMPART 框架(2,500 stars)就是一个 pytest-native 的 Agent 安全测试框架,可以用于技能包的自动化安全测试。

6.2 标准化安全签名

未来可能出现类似代码签名的技能包安全签名机制:

  • 技能包提供者使用数字签名证明其来源和完整性
  • Agent 平台在加载技能包时验证签名
  • 被篡改的技能包将无法通过验证

6.3 运行时安全沙箱

Agent 运行时沙箱将成为标准配置:

  • 每个技能包在独立的沙箱环境中运行
  • 沙箱限制技能包的工具调用、网络访问和文件系统操作
  • 沙箱之间完全隔离,一个技能包被攻破不影响其他技能包

6.4 AI 驱动的安全审计

用 AI 审计 AI 可能成为最高效的方式:

  • 使用一个独立的审计 Agent 来审查其他 Agent 的技能包
  • 审计 Agent 经过专门训练,擅长发现提示词注入和工具越权
  • 审计 Agent 与目标 Agent 完全隔离,避免被同一技能包同时攻破

关注 RAMPART 和类似工具的发展。它们代表了从「人工安全审查」到「自动化安全测试」的范式转变,将大幅降低技能包安全审计的成本。

AI 驱动的安全审计本身也面临安全风险:审计 Agent 可能被恶意技能包同时攻破。因此「隔离」是底线,不是可选项。

7扩展阅读与学习资源

7.1 推荐阅读

7.2 工具推荐

  • RAMPART:Microsoft 开源的 Agent 安全测试框架,支持 pytest-native 测试模式
  • Claude Context:Zilliz 开源的语义代码搜索 MCP Server,可用于技能包内容的语义审计
  • ML Intern:Hugging Face 的自主 ML 工程师 Agent,可用于自动化技能包测试

7.3 行业标准

  • MITRE ATLAS:MITRE 的 AI 威胁分类框架,提供了完整的 AI 安全威胁矩阵
  • NIST AI RMF:NIST 的 AI 风险管理框架,适用于企业级 AI 安全治理
  • OWASP Top 10 for LLM:OWASP 的 LLM 应用十大安全风险,涵盖了技能包注入等关键威胁

建议从 OWASP Top 10 for LLM 开始学习,它提供了最实用的 AI 安全风险清单和缓解建议。MITRE ATLAS 适合需要深入理解威胁模型的安全工程师。

行业标准和工具更新频繁,建议定期关注最新版本的发布。OWASP Top 10 for LLM 在 2026 年已有多个更新版本。

继续你的 AI 学习之旅

浏览更多 AI 知识库文章,或者探索 GitHub 上的优质 AI 项目