工具输出是 Agent 视为可信的不可信通道
大多数团队在发布智能体时,其威胁模型中都潜伏着一个沉默的假设:当模型调用工具时,返回的任何内容都是可以安全读取的。在这个剧本里,用户提示词是唯一的对手,而工具输出则被视为“仅仅是数据”——搜索结果、收件箱摘要、数据库行、RAG 分块、文件内容、网页抓取。正是这种观念导致提示词注入(prompt injection)不断出现在生产环境中。工具输出并不是数据。它们是进入规划器(planner)的另一个输入通道,拥有与用户提示词相同的权限,却完全没有被怀疑。
如果这种说法听起来有些抽象,请考虑 2025 年 6 月 Microsoft 365 Copilot 内部发生的事情。一名研究人员发送了一封带有隐藏指令的电子邮件;受害者从未点击过链接,从未打开过附件,甚至从未亲自阅读过该邮件。一个常规的“总结我的收件箱”查询请求 Copilot 读取该邮件。智能体忠实地执行了在正文中发现的指令,访问了 OneDrive、SharePoint 和 Teams,并在任何人察觉之前通过受信任的 Microsoft 域名外泄了组织数据。该 CVE(2025-32711,“EchoLeak”)获得了 9.3 的 CVSS 评分和服务器端修补,但这类漏洞并未消失。它不可能消失,因为生产环境中智能体上的每一个读取工具都是那个电子邮件收件箱的变体。
这篇文章讨论的是能让你摆脱困境的思维转变:停止将“提示词注入”视为用户输入问题,并开始将每一个工具输出视为一个恰好与你的系统提示词共享 Token 流的不可信渠道。
