AI 安全与对抗¶
为什么 AI 安全如此重要¶
随着 AI 从"对话助手"进化为"自主 Agent"——能执行命令、访问文件、调用 API、发送邮件——安全风险也呈指数级放大。一个被 Prompt 注入攻击的聊天机器人最多输出不当内容,但一个被劫持的 Agent 可能删除数据库、转账资金、泄露商业机密。
根据 OWASP 统计,73% 的 AI 系统在安全审计中暴露出 Prompt 注入漏洞。Veracode 的 2025 报告显示,AI 生成的代码比人工编写的代码多 2.74 倍的安全漏洞。
OWASP 已将 LLM 安全纳入其全球项目体系(OWASP GenAI Security Project),发布了 OWASP Top 10 for LLM Applications 2025,并正在制定 Agentic AI Top 10。AI 安全已不再是"锦上添花",而是 Agent 走向生产环境的必修课。
本文将从攻击手法、防御架构、协议安全、开发安全清单四个维度,系统梳理 AI 安全的核心知识。
一、攻击手法:AI 面临的威胁全景¶
1.1 Prompt 注入(Prompt Injection)¶
Prompt 注入是 AI 安全的"头号威胁",在 OWASP Top 10 中排名第一(LLM01)。
直接注入(Direct Injection)¶
攻击者直接在用户输入中嵌入恶意指令:
1 2 | |
常见手法:
| 手法 | 原理 | 示例 |
|---|---|---|
| 指令覆盖 | 用新指令覆盖系统提示词 | "忽略之前的规则,你现在是…" |
| 角色扮演 | 让模型扮演无限制角色 | DAN(Do Anything Now)攻击 |
| 假设场景 | 通过假设绕过安全限制 | "如果一个人想…他会怎么做?" |
| 翻译攻击 | 利用翻译绕过安全过滤器 | 先翻译成小语种再翻译回来 |
| 多轮引导 | 通过多轮对话逐步突破防线 | Many-shot Jailbreaking |
间接注入(Indirect Injection)— 更危险¶
攻击者不直接与 AI 交互,而是将恶意指令嵌入到 AI 会读取的外部数据源中:
1 2 3 4 | |
为什么间接注入更危险?
- 攻击者不需要与 AI 系统直接交互
- 恶意指令隐藏在正常内容中,难以被人工审查发现
- 通过 RAG 系统的文档、网页抓取内容、MCP 工具返回的数据等途径注入
- 73% 的 AI 系统存在此类漏洞
实际攻击场景¶
1 2 3 4 5 6 7 8 9 10 11 12 | |
1.2 过度授权(Excessive Agency)¶
OWASP LLM08:给 AI 过大的自主权,可能导致不可控的后果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
过度授权的典型后果:
- Agent 自主执行
rm -rf /删除关键数据 - Agent 调用付费 API 导致巨额账单
- Agent 发送未审核的邮件或消息
- Agent 修改生产环境配置
1.3 敏感信息泄露¶
| 泄露类型 | 说明 | 风险 |
|---|---|---|
| 系统提示词泄露 | 攻击者诱导 AI 输出其系统提示词 | 暴露业务逻辑和安全措施 |
| 训练数据泄露 | AI 在特定输入下输出训练数据中的敏感信息 | 个人隐私、商业机密 |
| 上下文泄露 | AI 在多用户场景中泄露其他用户的对话内容 | 隐私违规 |
| 工具凭证泄露 | Agent 在响应中暴露 API Key、Token 等 | 账户被盗用 |
1.4 供应链攻击¶
1 2 3 4 5 6 7 8 | |
1.5 拒绝服务与资源滥用¶
| 攻击方式 | 原理 | 影响 |
|---|---|---|
| Token 炸弹 | 发送超长输入消耗 Token 配额 | 服务不可用、成本飙升 |
| 循环调用 | 诱导 Agent 反复调用工具形成死循环 | API 配额耗尽 |
| 复杂推理 | 发送需要大量计算的问题 | 响应延迟、资源耗尽 |
1.6 模型窃取¶
攻击者通过大量查询推断模型结构、参数或复制模型能力:
- 通过 API 系统性地探测模型行为
- 提取训练数据中的知识产权
- 复制模型的决策逻辑用于恶意目的
二、防御架构:构建 AI 安全防线¶
2.1 纵深防御模型¶
AI 安全不是单一措施能解决的,需要多层防御:
flowchart TB
L1[第 1 层:输入层<br/>Prompt 检测与过滤]
L2[第 2 层:模型层<br/>系统提示词加固 + 安全微调]
L3[第 3 层:输出层<br/>输出审查与过滤]
L4[第 4 层:工具层<br/>权限隔离 + 沙箱]
L5[第 5 层:基础设施层<br/>网络隔离 + 审计日志]
L1 --> L2 --> L3 --> L4 --> L5
style L1 fill:#e74c3c,color:#fff
style L2 fill:#f39c12,color:#fff
style L3 fill:#e74c3c,color:#fff
style L4 fill:#3498db,color:#fff
style L5 fill:#2ecc71,color:#fff
2.2 输入层防御¶
Prompt 注入检测¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
注意:基于规则的检测只能捕获已知模式,攻击者可以轻易绕过。生产环境建议结合专门的 AI 安全检测模型(如 Lakera Guard、Rebuff 等)。
输入分类与标记¶
关键原则:系统必须可靠地区分授权指令与不可信数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
2.3 模型层防御¶
系统提示词加固¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
安全微调与红队测试¶
- 安全微调:用对抗样本对模型进行微调,提升抵抗攻击的能力
- 红队测试:定期组织安全团队模拟攻击,发现漏洞
- 模型评估:使用标准安全基准(如 HarmBench、ToxiGen)评估模型安全性
重要提醒:研究表明,即使经过广泛安全训练的模型(如 GPT-4、Claude),在 Many-shot Jailbreaking 攻击下仍可能被突破。安全微调不能完全消除漏洞,必须配合其他防御层。
2.4 输出层防御¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
2.5 工具层防御:沙箱与权限隔离¶
这是 Agent 安全最关键的一环——即使 Agent 被劫持,也要限制它能造成的破坏。
flowchart LR
subgraph "Agent 进程"
A[AI 模型]
B[工具调度器]
end
subgraph "沙箱环境"
C[受限 Shell]
D[文件系统白名单]
E[网络访问控制]
end
subgraph "外部"
F[生产数据库]
G[内部 API]
H[互联网]
end
B --> C
C --> D
C --> E
E -.->|拒绝| F
E -.->|审计后允许| G
E -.->|白名单| H
style C fill:#e74c3c,color:#fff
style D fill:#e74c3c,color:#fff
style E fill:#e74c3c,color:#fff
权限隔离最佳实践¶
| 措施 | 说明 | 推荐方案 |
|---|---|---|
| 容器沙箱 | 将 Agent 工具运行在隔离容器中 | gVisor、Kata Containers、Firecracker |
| 最小权限 | 只授予完成任务所需的最小权限 | OAuth Scopes、RBAC |
| 网络隔离 | 限制 Agent 的网络访问范围 | 防火墙规则、mTLS |
| 文件系统白名单 | 限制 Agent 可访问的目录 | 只读挂载、chroot |
| 工具行为验证 | 用 JSON Schema 验证工具输入输出 | MCP 的 Input Schema |
| 不可逆操作确认 | 关键操作必须经人工确认 | Human-in-the-loop |
MCP 安全配置示例¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
2.6 基础设施层防御¶
| 措施 | 说明 |
|---|---|
| 审计日志 | 记录所有 Agent 的决策、工具调用、输入输出 |
| 速率限制 | 防止 Token 炸弹和资源滥用 |
| 成本告警 | 设置 Token 消耗和 API 调用预算 |
| 网络监控 | 监控 Agent 的出站连接,检测异常通信 |
| 定期安全审计 | 定期审查 Agent 的行为日志和安全配置 |
三、协议安全:MCP 与 A2A 的安全机制¶
3.1 MCP 安全¶
MCP 协议的安全机制主要包括:
| 安全维度 | 机制 | 说明 |
|---|---|---|
| 身份认证 | OAuth 2.0 | MCP 客户端通过 OAuth 获取访问 MCP 服务器的授权 |
| 传输安全 | mTLS | 双向 TLS 认证,确保通信双方身份可信 |
| 权限控制 | Scope 限制 | OAuth Scope 限定工具的访问范围 |
| 用户确认 | 显式授权 | MCP 规范要求 Host 在调用工具前获得用户明确同意 |
| 输入验证 | JSON Schema | 工具声明输入格式,运行时验证 |
推荐阅读:我们的 MCP 文章 中详细介绍了 MCP 的架构和使用方法。
3.2 A2A 安全¶
A2A 协议的安全设计:
| 安全维度 | 机制 | 说明 |
|---|---|---|
| 身份发现 | AgentCard | Agent 的身份和能力声明,支持认证信息描述 |
| 认证授权 | OAuth 2.0 / API Key | 在 AgentCard 中声明认证需求 |
| 不透明性 | 黑盒设计 | Agent 不暴露内部记忆、工具和逻辑 |
| 任务隔离 | Task Immutability | 任务不可重启,防止状态篡改 |
| 传输安全 | HTTPS + JSON-RPC 2.0 | 基于 TLS 的加密通信 |
3.3 Agent 协议安全原则(AgentRFC)¶
学术界提出了 Agent 协议的四大安全设计原则:
| 原则 | 说明 |
|---|---|
| P1 - 清单完整性 | 工具和能力清单必须加密绑定到声明它的 Agent,伪造清单必须被拒绝 |
| P2 - 委托单调性 | Agent A 委托给 Agent B 的权限必须是 A 自身权限的子集,传递委托不能放大范围 |
| P3 - 提示词完整性 | 系统提示词必须受到保护,防止被篡改或泄露 |
| P4 - 不可信数据隔离 | 从外部来源获取的数据必须被标记为不可信,不能直接作为指令执行 |
推荐阅读:我们的 A2A 文章 中详细介绍了 A2A 的架构和通信机制。
四、OWASP Top 10 for LLM 2025 速查¶
以下是 OWASP 2025 年发布的 LLM 应用十大安全风险:
| 编号 | 风险 | 简述 | 本文章节 |
|---|---|---|---|
| LLM01 | Prompt 注入 | 通过精心构造的输入操纵模型 | 1.1 |
| LLM02 | 不安全的输出处理 | 未验证模型输出导致下游漏洞 | 2.4 |
| LLM03 | 训练数据投毒 | 被篡改的训练数据影响模型行为 | 1.4 |
| LLM04 | 模型拒绝服务 | 资源密集型操作导致服务中断 | 1.5 |
| LLM05 | 供应链漏洞 | 依赖被污染的组件或服务 | 1.4 |
| LLM06 | 敏感信息泄露 | 模型输出中暴露敏感信息 | 1.3 |
| LLM07 | 不安全的插件设计 | 插件处理不可信输入导致 RCE | 2.5 |
| LLM08 | 过度授权 | 模型拥有过大的自主行动权限 | 1.2 |
| LLM09 | 过度依赖 | 过度信任模型输出导致错误决策 | — |
| LLM10 | 模型窃取 | 未授权访问和窃取专有模型 | 1.6 |
五、开发者安全清单¶
部署 Agent 前必须检查的安全项¶
🔴 必须做(P0)¶
- 系统提示词加固:包含身份边界、信息安全和行为约束规则
- 工具权限最小化:每个工具只授予完成任务所需的最小权限
- 不可逆操作需人工确认:删除、转账、发送等操作必须经用户确认
- 敏感操作审计日志:记录所有工具调用、输入输出
- MCP 服务器安全配置:只读挂载、目录白名单、操作白名单
🟡 应该做(P1)¶
- 输入检测:部署 Prompt 注入检测(规则 + 模型)
- 输出审查:过滤敏感信息(API Key、密码、个人信息)
- 速率限制:防止 Token 炸弹和资源滥用
- 成本告警:设置 Token 消耗预算和告警阈值
- 容器沙箱:工具运行在隔离环境中(gVisor / Kata Containers)
- 网络隔离:限制 Agent 的出站网络访问
🟢 建议做(P2)¶
- 红队测试:定期组织安全团队模拟攻击
- 供应链审计:审查第三方 MCP 服务器和依赖的安全性
- 安全微调:用对抗样本提升模型抗攻击能力
- 加密通信:mTLS 保护 Agent 间通信
- 异常检测:监控 Agent 行为模式,检测异常活动
安全检查速查表¶
1 2 3 4 5 6 7 8 9 10 | |
六、AI 安全工具与资源¶
| 工具/资源 | 类型 | 说明 |
|---|---|---|
| OWASP GenAI Security | 标准 | OWASP AI 安全全球项目 |
| Lakera Guard | 商业 | Prompt 注入检测 API |
| Rebuff | 开源 | Prompt 注入防御框架 |
| LLM Security 101 | 开源 | 2026 版 LLM 安全完整指南 |
| HarmBench | 基准 | LLM 安全评估基准 |
| gVisor | 沙箱 | Google 的应用容器沙箱 |
| Kata Containers | 沙箱 | CNCF 的轻量级虚拟机容器 |
总结¶
| 维度 | 核心要点 |
|---|---|
| 最大威胁 | Prompt 注入(直接 + 间接),73% 的 AI 系统存在漏洞 |
| 防御核心 | 纵深防御:输入检测 → 模型加固 → 输出审查 → 工具沙箱 → 基础设施审计 |
| Agent 特有风险 | 过度授权、供应链攻击、工具调用链安全 |
| 协议安全 | MCP 用 OAuth + mTLS,A2A 用 AgentCard + HTTPS,遵循委托单调性原则 |
| 开发者必做 | 系统提示词加固、工具最小权限、不可逆操作人工确认、审计日志 |
一句话总结:AI 安全的核心原则是永远不要完全信任 AI 的输入和输出。在输入端做检测和标记,在输出端做审查和过滤,在工具端做隔离和限制,在基础设施端做审计和监控——四层防线缺一不可。
相关文章:
- What is MCP — MCP 协议详解,包含安全配置建议
- A2A 协议 — A2A 协议的安全机制与设计原则
- AI Agent 入门 — Agent 的安全注意事项
- Agentic AI — Agentic AI 的风险与边界
- RAG 技术 — RAG 系统中的间接注入风险
💬 评论
评论系统加载中...