好帮手 AI 的悖论:为什么遵循指令是一个安全漏洞
关于 LLM 有一个令人不安的事实,但在产品评论中却鲜少被提及:赋予它们用途的特性,恰恰也是让它们易受攻击的特性。一个顺从地执行指令的 LLM —— 无论指令来自何处、何种格式、何种来源 —— 都会以处理合法指令时那种同样的愉快顺从态度去执行恶意指令。模型无法分辨其中的区别。
这不是一个可以被修补掉的 bug。这是一种架构性的现实。随着这些系统承担起更多智能体(agentic)的角色 —— 阅读邮件、浏览网页、执行代码、调用 API —— 其暴露面正以大多数工程团队尚未察觉的方式扩大。
SQL 注入问题,在自然语言中重生
传统软件通过编译器或运行环境强制执行的解析规则来区分指令和数据。SQL 注入打破了这一界限 —— 它让数据被解释为查询。而 LLM 从设计上就 没有这样的界限。指令和数据都以 token 的形式到达。模型会对两者都进行解释。目前还没有完全解决这一问题的参数化查询(parameterized query)等效方案,因为 “解析器” 本身就是一个经过训练、旨在处理任何位置出现的自然语言指令的语言模型。
结果产生了一套三类失效分类法:
直接提示词注入(越狱): 用户在对话窗口中明确覆盖系统指令。“忽略之前的指令,执行 X。” 这是研究最深入的形式 —— 且在实践中危险性最低,因为它需要攻击者处于对话链路中。
间接提示词注入: 恶意指令嵌入在模型处理的数据中 —— 文档、网页、电子邮件、工具输出、RAG 检索结果。攻击者从不直接与模型交互。他们毒化了模型随后会读取的来源。这是已部署的企业系统中最主要的攻击形式,占记录在案的攻击尝试的 80% 以上。
通过上下文操纵进行目标劫持: 最复杂的变体。攻击者不发出明确的 “忽略” 命令。相反,他们构建一个上下文 —— 一个可信的对话延续、一份看起来像正常业务内容的文档 —— 导致模型的推断目标发生偏移。模型并没有无视其指令;它是在将新上下文解释为更新其当前任务的理由。
实际生产系统的攻击成功率令人警醒:在标准攻击下,运行 ReAct 提示词的 GPT-4 智能体有 24% 的概率容易受到间接注入的攻击,而使用增强技术后,这一比例几乎翻倍。对于针对伪对话注入(pseudo-conversation injection)的新型攻击变体,针对 GPT-4o 的成功率达到了 92%。
间接注入是更难解决的问题
直接注入的情况已为人熟知。有人给模型喂一段越狱提示词。诸如指令层级训练(instruction hierarchy training)和拒绝脚本(refusal scripting)之类的防御手段可以拦截大部分此类攻击。针对生产部署的成功直接注入率正在下降。
间接注入则不同。攻击者的指令隐藏在 PDF、网页、Slack 消息或 MCP 工具描述中。模型将这些作为数据处理 —— 但由于指令和数据到达时处于同一个 token 流中,模型可能会将嵌入的指令视为指令。这正是其设计运行的方式。
考虑一下 2024 年 8 月 Slack AI 发生的事情。攻击者在一个公共 Slack 频道发布了一条包含隐藏指令的消息。Slack AI 将其吸收到检索索引中。随后,另一个频道中的另一位用户查询了 Slack AI。隐藏指令被激活,导致模型渲染了一个钓鱼链接:“加载消息出错,点击此处重新认证” —— 并将私有频道的业务数据作为查询参数传递给攻击者的服务器。受害者并不在那个公共频道中。他们从未见过被注入的消息。但他们的数据还是被窃取了。
同样的模式也出现在 Microsoft 365 Copilot 中(EchoLeak,CVE-2025-32711):一封带有不可见指令的特制邮件导致 Copilot 在引用样式的 Markdown 图片链接中嵌入了敏感数据,浏览器随后自动获取该链接,在用户无需任何点击的情况下完成了数据外泄。该攻击绕过了四层独立的防御。除了打开邮件外,不需要用户进行任何交互。
GitHub Copilot 在分析不可信的源代码时也存在类似的漏洞。嵌入在注释或配置文件中的指令会导致 LLM 生成指向攻击者控制的图片 URL 的链接,IDE 会自动获取这些链接,从而泄露上下文数据。
这种模式是一致的:LLM 读取外部内容,外部内容包含指令,LLM 遵循指令 。这所需的复杂程度并不高。真正需要复杂技术的是绕过每个部署所添加的特定防御措施 —— 而这些防御措施在不同产品之间是不一致的。
多智能体系统存在信任盲点
在多智能体架构中,问题变得更加复杂。多智能体系统具有明显的漏洞梯度:
- 直接提示词注入:46% 的攻击成功率
- RAG 后门攻击:69% 的成功率
- 智能体间信任利用:85% 的成功率
- https://genai.owasp.org/llmrisk/llm01-prompt-injection/
- https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html
- https://arxiv.org/abs/2403.02691
- https://arxiv.org/html/2410.23678v2
- https://arxiv.org/html/2509.10540v1
- https://www.promptarmor.com/resources/data-exfiltration-from-slack-ai-via-indirect-prompt-injection
- https://arxiv.org/abs/2503.18813
- https://bair.berkeley.edu/blog/2025/04/11/prompt-injection-defense/
- https://arxiv.org/html/2605.03378
- https://arxiv.org/html/2601.11893v1
- https://arxiv.org/html/2404.13208v1
- https://arxiv.org/html/2603.22489v1
- https://www.anthropic.com/research/many-shot-jailbreaking
- https://www.lakera.ai/blog/indirect-prompt-injection
- https://blog.google/security/prompt-injections-web/
