Agent 如何抵御工具返回内容中的间接提示注入?
未标记
考查重点:不可信内容与执行层权限。工具文本按不可信数据处理,不能赋予授权;实际执行层校验身份、资源、参数与任务范围,限制泄露和副作用
本题目录
参考答案
核心回答
核心是把工具返回当作任务数据,并在执行层限制它能造成的影响。网页、文档或工具文本中的“忽略原指令、发送私密文件”没有授权效力;应用应保留来源与信任标签,提取所需字段,同时由后端重新校验每次工具调用的身份、资源权限、参数和原始任务范围。
仅写一段“不要被注入”的Prompt不够。模型可能仍受骗,因此需要最小权限、隔离环境、网络出口与敏感动作确认,让一次文本误判难以直接变成越权操作或数据外传。
攻击怎样进入系统
用户让Agent总结网页,攻击者把额外指令藏在正文、HTML、图片OCR或附件中。抓取工具把内容送回模型后,模型若把资料当成新的任务指令,就可能改目标、泄露信息或调用其他工具。内部知识库也可能被污染,不能因为“来自内部”就免检。
分层控制
上下文层。 用独立消息和清楚边界标记任务、规则与外部材料,限制长度并输出结构化业务字段。避免把外部自由文本拼入高信任指令区,记忆写入也保留来源、用途和权限,防止恶意内容跨会话持续生效。
执行层。 模型只提出工具名和参数。执行器从认证上下文取得真实用户与租户,重新检查对象所有权、操作范围、金额和状态转换;模型填入的approved或admin字段不构成授权。Schema保证形状,业务授权保证能不能做,两者都要有。
能力层。 读取公开网页的组件不天然拥有企业邮件和文件写权限;敏感凭据不进入模型上下文。对外请求、上传和发送消息限制目标与数据范围;代码执行放入受控环境,文件、网络与资源按任务最小化开放。
确认与审计。 需要确认的动作展示具体对象、参数和后果,确认绑定该次请求;参数变更后重新核验。日志记录提案、策略判定和业务回执,便于定位哪道边界失效。
怎样验证防线有效
在隔离测试环境放入直接、间接、多轮、编码和多模态诱导,同时保留正常引用恶意文本的合法任务。检查是否真的发生未授权读写、外传或记忆污染,并观察正常任务成功率与误拦截。
“模型没有复述恶意指令”不代表安全,“检测器标出可疑”也不代表副作用已阻断。应把模型受骗率与系统实际越权率分别测量。
对应教程
- AI智能体与大模型应用开发面试题库:回看提示注入、指令分层与工具权限,本文细化外部数据和动作授权边界。
参考资料
- 国内:JavaGuide:LLM/Agent安全实战:依据外部数据被升级为指令的攻击面及权限、网络出口与安全评测,说明正文中的分层防御。
- 国内:WeThinkIn:Agent安全评测与AgentOps:采用 Schema、后端授权、沙箱与具体动作确认的区分,说明正文中各防御控制的职责。
- 国内:zero2Agent:工具调用基础:依据工具结果回填与宿主执行的分工,解释正文中工具结果为何仍属不可信数据,以及应用如何控制真实操作。
- 国外:OWASP:LLM Prompt Injection Prevention Cheat Sheet:依据最小权限、动作校验与分层防护,说明正文中如何限制模型受骗后的实际影响。
- 国外:Greshake等 / Saarland、CISPA等:Not what you have signed up for:依据论文中攻击者通过检索数据影响 Agent 的机制,解释正文中无需直接发消息也能发生的间接注入。


