Appearance
一句话总结:Agent 一旦有工具调用权限,安全边界就从"能否生成有害内容"升级为"能否造成物理世界破坏";最高威胁是提示注入(OWASP LLM01),间接注入对 Agent 尤险。
OWASP LLM Top 10(2025)· Agent 视角
| # | 风险 | Agent 含义 |
|---|---|---|
| LLM01 | Prompt Injection | 不可信文本(网页/邮件/PDF/RAG 检索)改写指令、重定向工具 |
| LLM02 | 敏感信息泄露 | Agent 把有权限访问的数据泄到不该到的上下文 |
| LLM03 | 过度授权 Excessive Agency | 未经授权的工具使用与有后果的动作 |
| LLM04 | 供应链 | 被投毒的模型/适配器/依赖进 Agent |
| 其余 | 数据/模型投毒、过度依赖等 | 训练数据被操纵、脆弱输出处理 |
提示注入(最高威胁)
- 定义(Simon Willison):攻击应用层把"可信 Prompt"与"不可信输入"拼接后的行为劫持;区别于越狱(绕 LLM 自身对齐)
- 直接注入:恶意指令在用户输入里("忽略之前所有指令…")
- 间接注入(Agent 尤险):恶意指令藏在模型处理的数据里——RAG 检索文档、网页抓取、工具返回、邮件、图片 OCR——模型照做
- 危害链:工具调用劫持(伪造参数)→ 数据外泄 → 权限提升
越狱(Jailbreak)
- 绕过大模型自身安全对齐:角色扮演("扮演奶奶"骗激活码)、DAN 等
- Agent 场景更危险:越狱后可直接驱动工具造成真实操作
数据泄露面
- Agent 有权限访问内部数据(DB、凭据、文档),被注入/越狱后即外泄
- 常见外泄通道:Markdown 图片外联、错误信息含凭据、工具返回被带出
防御纵深(生产落地)
- 输入层:可疑模式检测("忽略之前指令/你现在是/system prompt/reveal secrets")——能拦常见攻击但可被变形,不能只靠关键词;用专门 PromptInjectionDetector / 安全分类器
- 指令隔离:系统指令与用户/外部输入用沙箱标签严格分隔,外部数据明确标"不可信",阻断间接注入
- 输出层:出站凭据扫描、Markdown 图片外联拦截、敏感数据脱敏
- 工具/权限层(LLM03):最小权限 + 最小 Agent、工具白名单 + 参数强校验、高风险操作(删除/转账/部署/git push)强制 HITL 人工确认
- 运行时沙箱(零信任):Agent 在容器/VM/临时目录运行;容器加固——只读文件系统、
--network none或出站白名单、--cap-drop ALL、--security-opt no-new-privileges;不给 Agent 默认读全盘、未知外发域名弹提示 - 权限链(Agent 间):MCP/A2A 场景子 Agent 可能继承父权限上下文并级联调用第三方工具 → 单步正常、组合成提权链;需按 agent 最小权限 + 权限边界传播控制
- 记忆/供应链:记忆投毒(注入长期记忆污染后续决策 → 记忆写入要校验);供应链组件准入审核、漏洞扫描、问题组件熔断
架构定位
- 安全是架构而非提示词:双层护栏网关(输入治理 + 输出治理 + 工具策略)是 Agent 进生产的前提
- 体系化治理:微软 Agent Governance Toolkit(类 OS 的运行时策略拦截)、零信任沙箱分层
面试要点
- 讲清提示注入(LLM01)直接 vs 间接,间接对 Agent 更险
- 区分注入(劫持应用行为)与越狱(绕模型对齐)
- 背出多层防线:输入检测 → 指令隔离沙箱标签 → 输出凭据扫描 → 最小权限+工具白名单 → 高风险 HITL → 运行时沙箱
- 知道 LLM03 过度授权:Agent 为什么要最小权限 + 白名单
- 知道 MCP/A2A 权限链继承风险