Skip to content

一句话总结:Agent 一旦有工具调用权限,安全边界就从"能否生成有害内容"升级为"能否造成物理世界破坏";最高威胁是提示注入(OWASP LLM01),间接注入对 Agent 尤险。

OWASP LLM Top 10(2025)· Agent 视角

#风险Agent 含义
LLM01Prompt Injection不可信文本(网页/邮件/PDF/RAG 检索)改写指令、重定向工具
LLM02敏感信息泄露Agent 把有权限访问的数据泄到不该到的上下文
LLM03过度授权 Excessive Agency未经授权的工具使用与有后果的动作
LLM04供应链被投毒的模型/适配器/依赖进 Agent
其余数据/模型投毒、过度依赖等训练数据被操纵、脆弱输出处理

提示注入(最高威胁)

  • 定义(Simon Willison):攻击应用层把"可信 Prompt"与"不可信输入"拼接后的行为劫持;区别于越狱(绕 LLM 自身对齐)
  • 直接注入:恶意指令在用户输入里("忽略之前所有指令…")
  • 间接注入(Agent 尤险):恶意指令藏在模型处理的数据里——RAG 检索文档、网页抓取、工具返回、邮件、图片 OCR——模型照做
  • 危害链:工具调用劫持(伪造参数)→ 数据外泄 → 权限提升

越狱(Jailbreak)

  • 绕过大模型自身安全对齐:角色扮演("扮演奶奶"骗激活码)、DAN 等
  • Agent 场景更危险:越狱后可直接驱动工具造成真实操作

数据泄露面

  • Agent 有权限访问内部数据(DB、凭据、文档),被注入/越狱后即外泄
  • 常见外泄通道:Markdown 图片外联、错误信息含凭据、工具返回被带出

防御纵深(生产落地)

  1. 输入层:可疑模式检测("忽略之前指令/你现在是/system prompt/reveal secrets")——能拦常见攻击但可被变形,不能只靠关键词;用专门 PromptInjectionDetector / 安全分类器
  2. 指令隔离:系统指令与用户/外部输入用沙箱标签严格分隔,外部数据明确标"不可信",阻断间接注入
  3. 输出层:出站凭据扫描、Markdown 图片外联拦截、敏感数据脱敏
  4. 工具/权限层(LLM03):最小权限 + 最小 Agent、工具白名单 + 参数强校验、高风险操作(删除/转账/部署/git push)强制 HITL 人工确认
  5. 运行时沙箱(零信任):Agent 在容器/VM/临时目录运行;容器加固——只读文件系统、--network none 或出站白名单、--cap-drop ALL--security-opt no-new-privileges;不给 Agent 默认读全盘、未知外发域名弹提示
  6. 权限链(Agent 间):MCP/A2A 场景子 Agent 可能继承父权限上下文并级联调用第三方工具 → 单步正常、组合成提权链;需按 agent 最小权限 + 权限边界传播控制
  7. 记忆/供应链:记忆投毒(注入长期记忆污染后续决策 → 记忆写入要校验);供应链组件准入审核、漏洞扫描、问题组件熔断

架构定位

  • 安全是架构而非提示词:双层护栏网关(输入治理 + 输出治理 + 工具策略)是 Agent 进生产的前提
  • 体系化治理:微软 Agent Governance Toolkit(类 OS 的运行时策略拦截)、零信任沙箱分层

面试要点

  • 讲清提示注入(LLM01)直接 vs 间接,间接对 Agent 更险
  • 区分注入(劫持应用行为)与越狱(绕模型对齐)
  • 背出多层防线:输入检测 → 指令隔离沙箱标签 → 输出凭据扫描 → 最小权限+工具白名单 → 高风险 HITL → 运行时沙箱
  • 知道 LLM03 过度授权:Agent 为什么要最小权限 + 白名单
  • 知道 MCP/A2A 权限链继承风险