提示注入是基于大语言模型的应用中的一类网络安全漏洞,表现为攻击者控制的输入被当作指令而非数据来处理。它可以使应用偏离其授权任务、篡改其输出响应,或操纵其对外部工具的使用。其根本问题在于,模型在处理内容时未能在受信任指令与低信任度素材之间维持可靠的边界。(nvlpubs.nist.gov)
注入既可以通过面向用户的交互界面直接传入,也可以通过网页、文档、电子邮件或工具返回结果等内容间接传入。间接注入对检索增强生成和AI智能体的影响尤为显著,因为攻击者无需直接控制合法用户的请求即可对系统施加影响。根据应用权限的不同,其造成的后果不仅限于生成误导性文本,还可能扩展至私密信息泄露或执行未授权操作。(arxiv.org)
提示注入研究将语言模型的行为特征与信任、特权以及安全软件设计等成熟领域的问题联系起来。已提出的防御方案包括:训练模型遵循指令层级、实现指令与数据的分离、检测可疑内容,以及独立于模型输出之外对应用的操作权限进行限制。评估这些措施需要同时检验其抗攻击能力与完成合法任务的能力;在特定基准测试中取得良好效果,并不代表具备普遍的防护能力。(arxiv.org)
定义与概念界限
提示注入(prompt injection)是指通过较低信任度的输入中提供的指令,对大语言模型或基于其构建的应用程序进行未经授权的行为重定向。其标志性的失效特征在于:本应作为数据处理的内容获得了指令执行权;例如,一段原本需要进行摘要的文本,却被当成了控制摘要程序行为的指令。美国国家标准与技术研究院(NIST)在 2025 年 3 月发布的对抗性机器学习分类体系中,将注入描述为对应用程序指令的覆盖,并指出未能将指令与数据有效分离是底层的安全根源。“较低信任度”是相对于应用程序的规则而言的:用户提交的文本即便属于合法输入,也并不拥有替换开发者所定义约束条件的权限。(nvlpubs.nist.gov)
漏洞、攻击尝试与成功攻破是截然不同的概念。漏洞是指系统易受此类权限混淆影响的特性;攻击尝试是指提交或植入旨在利用该漏洞的内容;成功攻破则要求实际观察到对相关任务或安全边界的突破。仅仅接触到注入的指令并不能构成攻击成功。Sizhe Chen、Julien Piet、Chawin Sitawarin 与 David Wagner 于 2024 年开展的 StruQ 研究体现了这一具体的操作性区分:其评测在任务数据中插入了输出特定标记的指令,只有当模型将插入的文本视为新指令并输出了该标记时,才被计为成功。包含该标记的回复还会经过人工检查,以排除误报。该标准证明了任务被劫持,但并不一定意味着攻击者访问了私有记录或外部系统。(arxiv.org)
与注入不同,合法的提示工程是在请求发起者被赋予的权限范围内,去明确或澄清模型的行为方式。因此,两者的区别取决于预期的任务目标和信任策略,而非可疑短语构成的黑名单。举例来说,要求通用助手切换回答所用的语言可能属于常规请求;但如果将同样的请求置于特定用途应用程序必须翻译的文档中,且试图将翻译替换为其他任务,这就构成了一次重定向尝试。反之,引用或翻译一句关于“忽略指令”的句子,其本身并不构成系统被攻破。StruQ 威胁模型通过严格区分应用程序指令与用户控制的数据明确了这一边界,即便两者都可能包含祈使语气的文本。(arxiv.org)
越狱与提示注入存在重叠,但侧重的安全边界有所不同。越狱通常关注如何绕过模型的安全限制;而应用程序指令劫持关注的是覆盖应用程序设定的授权任务,哪怕输出的内容本身毫无危害。OWASP 在《LLM01:2025 提示注入》中将越狱视为一种旨在忽视安全协议的注入形式。NIST 同样将越狱描述为能够覆盖系统指令以生成受限输出的注入攻击,同时又根据完整性破坏、隐私泄露和滥用等攻击目标对攻击进行分类归纳。这些分类并不支持将这两个术语视为完全等同的同义词:例如,将翻译程序转变为笑话生成器,会违反应用程序的指令,但并未突破任何内容安全限制。(genai.owasp.org)
提示注入主要是一种发生在神经网络推理阶段的攻击:它通过改变已训练模型在执行任务时的输入或运行时上下文来实现。相比之下,数据投毒则是篡改训练或微调过程中使用的材料,以影响模型学得的行为。NIST 区分了这些攻击阶段,并分别列出了直接注入与间接注入、数据投毒以及后门投毒。提示注入也不同于无诱因的人工智能幻觉:单凭无依据的断言并不能证明有攻击者提供了指令或跨越了信任边界。OWASP 指出受操纵的内容和错误输出可能是注入攻击的后果,但只有当有证据表明这些结果是由输入引发的重定向所致时,才能判定为注入攻击,而非普通的生成错误。(nvlpubs.nist.gov)
历史发展与研究里程碑
2022年9月12日,西蒙·威利森(Simon Willison)发表了《针对 GPT-3 的提示词注入攻击》(Prompt injection attacks against GPT-3),针对莱利·古德赛德(Riley Goodside)此前公开演示的安全问题提出了这一名称。在古德赛德的示例中,GPT-3 被指示将英语翻译成法语,但用户提交的文本却劫持了模型,诱导其输出了攻击者指定的短语。即便在提示中明确加入防范欺骗性指令的警告,也未能阻止这种失效行为。威利森将这一现象与将开发者编写的指令与不可信用户输入直接拼接的应用联系起来,并展示了如何借此窃取原始翻译指令。该文是公开命名并阐述这一应用安全问题的早期代表作,而非广义对抗性提示的起点。(simonwillison.net)
2023年2月23日,凯·格雷沙克(Kai Greshake)、萨哈尔·阿卜杜勒纳比(Sahar Abdelnabi)、夏莱什·米什拉(Shailesh Mishra)、克里斯托夫·恩德雷斯(Christoph Endres)、托斯滕·霍尔茨(Thorsten Holz)与马里奥·弗里茨(Mario Fritz)提交了论文《事与愿违:利用间接提示词注入攻破真实大语言模型集成应用》(Not what you’ve signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection),使该威胁模型得到了大幅拓展。其核心贡献在于证明攻击者无需直接与助手交互:指令可以植入到应用检索或处理的外部材料中。该论文于2023年5月修订,展示了针对必应聊天(Bing Chat)、GitHub Copilot 以及人工合成应用的攻击演示。在网页浏览实验中,嵌入在本地 HTML 注释中的指令通过 Microsoft Edge 侧边栏的页面朗读/解析功能影响了必应聊天;在代码补全实验中,研究者则考察了通过周围代码上下文操纵生成建议的情况。这些均为受控环境下的间接影响演示,并非对已部署服务中实际发生攻击的统计测量。(arxiv.org)
到了2024年,专用防御方案开始将指令权威性视为训练目标,而不再仅仅依赖提示词中的警告。2月9日,陈思哲(Sizhe Chen)及其合作者提交了《StruQ:利用结构化查询防御提示词注入》(StruQ: Defending Against Prompt Injection with Structured Queries)。StruQ 将格式化前端与专门训练的大语言模型相结合,将查询中的指令部分与数据部分分离开来,并训练模型忽略数据部分中包含的指令。4月19日,埃里克·华莱士(Eric Wallace)等人提交了《指令层级:训练大语言模型优先执行特权指令》(The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions)。他们的实验利用生成的训练样本教会 GPT-3.5 根据指令优先级解决冲突,包括忽略低特权级的指令。两项研究均报告在其评估环境下防御能力有所提升,但均未实现一劳永逸的全面防范。(arxiv.org)
评估研究也随之转向具备工具调用能力的 AI 智能体(Agent)。2024年3月5日,詹求思(Qiusi Zhan)等人推出了 InjecAgent,包含涉及 17 种用户工具和 62 种攻击者工具的 1,054 个测试用例,涵盖用户危害与私密数据外泄等场景。6月19日,爱德华多·德贝内代蒂(Edoardo Debenedetti)等人推出了 AgentDojo,这是一个用于评估多步工具使用过程中攻击与防御的可扩展环境。其公布的配置包含 97 个合法任务和 629 个安全测试用例,涵盖电子邮件管理、电子银行和旅行预订等领域。与单纯收集孤立的恶意提示不同,AgentDojo 侧重于评估智能体在与不可信工具返回结果交互时的表现,并评估合法任务是否仍能顺利完成。其作者还记录了无攻击情况下的基线失败率,从而将完成基线任务的能力纳入了安全评估的考量。(arxiv.org)
各大机构也逐渐确立了对该问题的正式认知。在 OWASP 发布的 2025 年版《大语言模型应用 Top 10》中,提示词注入被列为 LLM01:2025,详细描述了直接注入、间接注入和多模态注入形式,并提出了缓解措施。美国国家标准与技术研究院(NIST)于2025年3月发布的报告《对抗性机器学习:攻击与缓解措施的分类法与术语》(编号 NIST AI 100-2e2025)将提示词注入纳入了更广泛的攻击分类体系中。其相关术语对通过用户输入进行的注入与通过攻击者控制资源进行的间接注入作出了区分。这些出版物提供了安全指导与通用词汇,但其分类和排名次序并不代表实际安全事件的发生频率或各类部署系统被攻破的比例。(owasp.org)
指令处理与信任边界失效
大语言模型应用会将预期权限各异的多类输入汇总到模型的上下文窗口中。应用指令规定了任务目标和限制条件;用户消息给出了具体请求;检索到的文本段落和工具输出则提供回答所需的参考材料。对话界面可以通过结构化格式和特殊标记(token)来区分系统消息、用户消息、助手消息以及工具消息。然而,检索得到的文本仍可能混在用户消息或工具响应中出现,而非通过独立的文档通道传入。这些区分方式虽然标识了输入来源,但其本身并不能确保模型会严格遵守相应的权限边界。埃里克·华莱士(Eric Wallace)及其同事在 2024 年 4 月发表的论文《指令层级》(The Instruction Hierarchy)中指出了这一缺陷:模型可能会将不受信任的内容视为指令,并使其与具备更高特权的应用指令相互竞争。(arxiv.org)
其核心缺陷在于指令与数据的混淆。自然语言材料既可以表达有意义的任务内容,又可能在形式上类似于给模型的指令。以一个具有代表性的摘要任务为例:待处理文档中可能包含这样一句话,要求读者放弃当前的摘要任务并输出一段无关的回答。合规的处理方式是将该句子作为文档内容进行分析,而不是将其采纳为新的任务。一旦模型将该句子从“待处理材料”提升为“指导处理过程的指令”,权限边界便被打破。陈思哲(Sizhe Chen)、朱利安·皮埃(Julien Piet)、查温·西塔瓦林(Chawin Sitawarin)与戴维·瓦格纳(David Wagner)在 2024 年 2 月发表的《StruQ》论文中,描述了在将开发者提示词与外部输入数据混于同一个输入的应用中存在的此类问题。赋予这类应用强大实用性的语言理解能力,同样使得嵌入在数据中的指令能够左右生成结果。(arxiv.org)
指令层级明确规定了当不同来源的指令发生冲突时哪一方优先。华莱士等人于 2024 年提出的构想将系统指令置于用户指令之上,用户指令又高于第三方内容。正规的系统消息依靠应用的报文结构获得其角色定位;若一份文档仅仅在文本中自称是系统消息,并不能由此获得相应的权限地位。这里的区别在于:权限究其根本是由交互界面赋予的来源属性,还是仅仅是在内容内部声称的权限诉求。优先级较低的内容并不需要被彻底忽略,只要诉求兼容,它们仍然可以发挥作用。论文以汽车销售助手为例说明了这一点:该助手可以在遵循用户“改用西班牙语交流”的要求的同时,继续履行既定的销售职责。其预期行为是有条件地遵循指令,而非一味拒绝系统消息之外的一切输入。(arxiv.org)
将其与SQL结构化查询语言注入相比,两者的相通之处都在于“数据被越权提升为控制指令”。在存在漏洞的数据库代码中,若将外部输入直接拼接到查询语句中,该输入就可能改变查询的语法结构。而参数化查询则将 SQL 语句单独定义,并将传入的值仅作为数据绑定:此时即便输入包含类似 SQL 语法的文本,它也始终只是一个普通的数据值,而不会变成额外的执行条件。类似地,当外部可影响的输入篡改了预期的系统命令时,就会发生命令注入。结构化的参数传递能够避免 Shell 对其进行命令解释,但这些参数依然需要校验,因为即使形式上相互独立,参数本身也可能改变被调用程序的行为。这些机制都是通过数据库或进程接口来强制划分边界,而不是依赖解释器根据输入的措辞去推测其可信度。(cheatsheetseries.owasp.org)
自然语言处理无法实现如此直接的彻底解耦。在很多合理场景中,应用确实需要模型去翻译命令、总结操作规程或提取文档中描述的动作,同时又不能把这些动作当作已获授权的指令去执行。虽然引号、标题以及文档分隔符能够表达这种层次区别,但模型仍须去理解并推断它们的含义。因此,StruQ 提出的方案不仅限于文本提示:它将格式化前端与模型微调相结合,旨在将指令通道与数据通道彻底分离。无论其实际评测结果如何,这种架构层面的区分都至关重要:将一段文本标记为数据,与切实可靠地限制其发挥指令性影响,本质上是两种截然不同的属性。(arxiv.org)
威胁模型与投递面
威胁模型明确界定了防御方的授权任务、需要保护的资产,以及攻击者的目标、掌握的知识和控制能力。以文档助手为例,其授权任务可能是忠实地进行摘要;受保护的资产则包括回答的完整性、私有记录、服务可用性以及调用相关功能的权限。美国国家标准与技术研究院(NIST)于 2025 年 3 月发布的对抗性机器学习分类体系,对攻击者的目标、能力和知识进行了区分,并阐述了针对完整性、可用性和隐私的间接注入攻击。可见性也是一个独立考量维度:攻击者可能知晓应用的系统指令或观测到其回复,而合法用户却可能从未见过被注入的恶意内容。这些条件将能够获得详细反馈的交互式攻击,与预先植入外部资源、无法感知防御方后续交互的盲目注入区分开来。(csrc.nist.gov)
对攻击者控制范围的界定,还必须具体到实际的输入界面层级。直接编写完整的用户输入,与仅仅篡改信息检索系统可能返回的某一片段,存在本质区别。在后一种情况下,攻击者未必能控制用户的提问、其他被检索出的片段,甚至无法保证恶意片段一定会进入上下文窗口。凯·格雷沙克(Kai Greshake)等人在 2023 年的研究中,将“被动放置在可能被检索的资源中”与“主动投递(例如向处理收件的助手发送电子邮件)”作了区分。他们的代码补全实验还发现,注入效果对上下文极为敏感,这表明掌握某个源数据片段并不等同于掌控了模型的完整输入。(arxiv.org)
直接注入是指攻击内容直接经由应用面向用户的输入通道输入。此时的核心冲突存在于用户提交的指令与应用既定的授权行为之间,而非仅仅是两个人之间的意图分歧。OWASP 的《LLM01:2025 提示注入》列举了一个客户支持场景:攻击者提交特定指令,试图覆盖既定规范并调用私有数据或邮件发送功能。当用户提交一段待分类或摘要的文本,而该文本同时指示模型应如何决策或回复时,也会产生类似的冲突。拥有文本框的输入权限,仅代表获得了对该输入内容的控制权,并不意味着拥有推翻应用级限制的授权。OWASP 还将蓄意发起的攻击,与用户在无意中引发此类偏离的常规输入进行了区分。(genai.owasp.org)
间接注入则潜藏于应用在执行正常合法请求时所调用的外部素材中,例如网页、搜索结果、上传的文件、代码仓库文档或外部工具的返回结果。因此,合法用户往往成了受害者而非攻击者。要求模型“对某网页进行摘要”的指令,仅授权了读取其内容,并不意味着自动授权执行该网页发布者嵌入的指令。格雷沙克等人通过网页浏览和代码补全应用证明了这种权责界限;其投递分析涵盖了网站内容、导入的代码以及发送给自动化邮件处理程序的信件。可信的检索或工具接口可能会转运受攻击者控制的内容,但这并不使这些内容自动具备授权指令的地位。(genai.owasp.org)
在多模态模型中,载体不再局限于纯文本。OWASP 2025 年的说明指出,恶意指令可以嵌入在与良性文本伴随出现的图像中,并明确强调:只要模型能够解析,含有注入内容的输入甚至不需要对人类肉眼可见或可读。图像或文档本身构成了投递面,其中编码的行为重定向逻辑则是被注入的指令。因此,人类可见性与模型暴露面是两种截然不同的属性:在常规渲染视图中不可见的内容仍有可能被输入给模型;反之,若处理流水线从未将某内容向下传递,该内容就无法通过该渠道对模型产生任何影响。(genai.owasp.org)
操控技术与攻击组合
指令替换(Instruction replacement)试图用攻击者的目标替代应用预设的任务;角色伪装(role impersonation)则将攻击者控制的文本伪装成来自系统、开发者或助手的消息。捏造的权威可为此类行为提供借口,例如声称存在管理系统更新或应急流程。这些技术常常结合使用:检索到的段落可能会声称助手已进入新的运行模式,此前的指示已不再适用。然而,这些表面上的角色标签本质上仍属于文档内容,而非真实的底层消息元数据。Kai Greshake 等人在 2023 年的研究展示中,将模拟的系统消息与伪造的助手对话相结合以重定向模型行为,展示了虚构的对话上下文如何辅助实现指令替换。(arxiv.org)
混淆(Obfuscation)在不改变指令含义的前提下改变其表述形式。OWASP 列举的示例包括 Base64 和十六进制编码、不可见 Unicode 字符、异常空格以及故意错拼的单词。多语言呈现同样会将包含指令的内容置于其他语言中,或在普通的常规文本中夹杂多种语言。一个非操作性的示例是源文档中包含经过编码或翻译的请求,要求更改回答的格式:如果模型遵循了该请求,而不是仅仅对其进行描述或翻译,便会引发安全问题。因此,编码本身并非注入攻击,关键在于模型是否赋予了解码后的指令以执行权限。Greshake 等人在 2023 年展示了针对 Bing Chat 的编码注入攻击,并在其中附带了指示模型解码该内容的指令。(cheatsheetseries.owasp.org)
任务对齐型说服(Task-aligned persuasion)使偏离预设目标的行为看似是在为合法目标服务,而非公然要求放弃原任务。例如,攻击文档可能会声称,为了生成准确的摘要,必须首先采纳某项未经授权的报告规则。这种包装手法利用了模型在理解工作流与接受具体执行步骤指示之间的内在联系;恶意步骤被伪装成了必要的前提条件。攻击还可以将说服手段与更强势的角色或权威外壳相结合。在 2024 年的 InjecAgent 研究中,Qiusi Zhan 等人将注入的任务指令与经对抗性提示词强化的版本进行了对比;针对采用 ReAct 提示词架构的 GPT-4 智能体,这种强化手段使攻击成功率几乎翻倍。需要指出的是,该结果仅适用于该特定评估配置,并不代表说服技术具有普遍适用的效果倍增系数。(arxiv.org)
多轮攻击(Multi-turn attacks)将恶意操控分散在多次交互中:早期的交互可以建立某种隐蔽的约定,而随后的消息则触发行为重定向。与之不同,多阶段投递将有效载荷分散在不同的检索步骤中。在 Greshake 等人构建的合成搜索应用中,用户针对阿尔伯特·爱因斯坦的提问检索到了一个被篡改的参考页面,该页面的初始注入引发了另一次搜索,进而投递了第二阶段载荷;最终生成的回复变成了海盗口吻。持久性记忆攻击则将这一过程延伸到了跨会话层面。上述研究人员展示了一个场景:智能体将注入内容存储在键值记忆库中,即使会话被重置,一旦智能体读取了存储的记录,便会再次表现出被注入的行为。这种持久性存在于应用程序的存储与后续检索流程中,而非模型本身的参数发生了永久性改变。(cheatsheetseries.owasp.org)
检索投毒(Retrieval poisoning)将具有操控性的段落或示例植入检索增强生成所使用的知识库中。它可以将“使恶意记录高概率被检索到”的检索机制与“一旦检索出来即可重定向行为”的内容相结合。Zhaorun Chen 等人在 2024 年的 AgentPoison 研究中针对长期记忆和知识存储库展开实验:经过优化的触发词提高了检索出投毒示例的概率,而在没有触发词的输入下则保持正常行为。该方法不需要对模型进行额外的训练或微调。这体现了存储级持久性与模型权重修改的区别:即使底层模型参数保持不变,恶意记录仍能反复影响新的推理上下文。(arxiv.org)
危害后果与失陷边界
输出完整性失效包括回答被污染、任务被劫持以及相关信息被隐匿。污染会改变回答的实质内容(例如在摘要中插入迎合攻击者立场的说法),而劫持则会将助手引向截然不同的目标。信息隐匿则可能使回答表面上看起来合情合理,实则排除了满足用户需求所必需的关键素材。Kai Greshake、Sahar Abdelnabi 及其合作者在 2023 年的一项研究中,针对 Bing Chat 展示了间接注入攻击,成功诱导其生成错误的摘要,并操纵了其“搜索与总结”的行为模式。这类后果无需访问机密记录或执行工具即可发生:受影响的资产本身就可以是回答内容本身。与无诱因的单纯模型幻觉不同,此类失效的关键在于模型是在攻击者的诱导下偏离了预定任务。(arxiv.org)
机密性失效需要将“隐式指令提取”与“用户数据泄露”区分开来。迫使应用吐出内部提示词,仅仅是暴露了事先提供给模型的系统指令;这本身并不能证明攻击者获得了访问收件箱、客户数据库或文件系统的权限。要造成私有记录泄露,必须满足这些记录已进入模型可访问的上下文,或是能通过连接的工具被检索出来。Qiusi Zhan 等人在 2024 年的 InjecAgent 研究中,将私有数据窃取视为一个包含“检索”和“后续外发”的序列过程。其构建的场景包括获取财务信息、医疗记录或浏览历史,并将其发送至攻击者控制的目的地。因此,模型检索记录与模型外发记录属于两个不同的阶段,对数据隐私造成的后果也不尽相同。(arxiv.org)
未授权操作使得受损范围超越了生成的文本本身,这种情况发生在 AI Agent 能够代表用户调用应用程序编程接口之时。InjecAgent 包含了涉及未授权转账、更改智能家居设备状态以及篡改文件的测试场景;这些属于基准测试的评测目标,并非实际部署服务中发生的真实损失报告。其运作机制是滥用了原本赋予 Agent 的既有能力,而非仅凭自然语言就凭空获得了新的权限。因此,即使用户输入中注入了转账指令,只要缺乏可调用的支付接口以及接受该请求的执行环境,转账便绝不可能发生。同理,一个仅具备读取权限的工具,本身并不会赋予修改数据的权限。(arxiv.org)
**观察到行为重定向并不等同于系统发生无限制的全面失陷。**Greshake 等人曾展示了一个合成应用从模拟攻击者服务器获取进一步指令、随后以海盗口吻作答的过程。这仅确立了攻击者对应用后续行为的影响力,并不代表其全面控制了宿主操作系统。同理,模型生成源代码或在文本中声称某项命令已运行,不能作为实现任意代码执行的证据。要达成代码执行,额外需要一条执行路径,且其危害范围受限于该路径的环境和权限。同样的逻辑也适用于以下区别:回答中出现恶意链接不等于用户已实际点击,尝试发起外发请求也不等于私有信息已被确认送达。(arxiv.org)
因此,系统发生实质性受损的具体证据可能体现在工具调用轨迹以及由此产生的状态变化中,而不仅存在于助手最终的回复文本里。Edoardo Debenedetti 等人于 2024 年构建的 AgentDojo 测试环境明确体现了这一划分:针对用户任务的检查机制负责核验输出和环境状态的变化,而独立的安全性评估函数则用于判定攻击者目标是否达成。该环境中的收件箱、银行账户及其他服务数据皆为模拟生成。一次成功的模拟转账仅表明 Agent 在该测试环境中突破了指定的授权边界,并不代表造成了真实的经济损失。反之,合法任务未能顺利完成,也不能直接证明攻击者就成功实施了某种窃取或越权操作。(arxiv.org)
检索系统与使用工具的智能体
在检索增强生成(RAG)中,用户的提问驱动文档检索,生成器则利用检索到的段落来构建回答。帕特里克·刘易斯(Patrick Lewis)等人于 2020 年提出的架构结合了神经检索器、维基百科段落索引以及序列到序列生成器。一个典型的文档辅助工作流程会检索与某机构报销政策问题相关的段落,并将它们作为回答的证据提供。然而,检索确立的是相关性,而非指令权限:一段文本可以是有用的证据,但这并不赋予它指导应用行为的权力。(arxiv.org)
当攻击者控制的源材料进入模型的上下文窗口时,就会出现注入点。例如,一份原本相关的报销文档可能包含忽略某项报销限制或访问无关网站的指令。如果生成器遵循了这些指令,而不是将其视为文档内容本身,那么检索操作就相当于将指令带过了应用的信任边界。凯·格雷沙克(Kai Greshake)、萨哈尔·阿卜杜勒纳比(Sahar Abdelnabi)等人于 2023 年通过语言模型应用检索材料中的间接注入展示了这一机制。攻击者无需控制用户的问题或检索软件;只要能控制系统随后读取的内容便已足够。(arxiv.org)
使用工具的 AI 智能体会将这种暴露面延伸至一个反复进行的决策周期中:模型选择工具及其参数,应用执行该调用,返回的观测结果再为下一次决策提供信息。可靠的工具完全可能忠实地返回不可信的内容——例如,电子邮件服务可以准确送达一封含有攻击者指令的邮件。因此,API 的成功执行并不能证明返回的文本就是来自用户的授权指令。埃多阿尔多·德贝内代蒂(Edoardo Debenedetti)等人于 2024 年推出的 AgentDojo 实现了有状态环境,智能体可以在此类数据上动态选择并执行多种工具。(arxiv.org)
当注入的观测结果改变了后续调用而不仅仅是即时回答时,就会发生跨步骤传播。在阅读某个信息源时遇到的指令可能会改变后续搜索的方向,或引发额外的 API 调用;由此产生的观测结果进而成为进一步决策的输入。格雷沙克等人展示了多阶段注入,其中初始载荷导致系统检索出更多由攻击者控制的指令。这就将“回答污染”与“工作流劫持”区分开来:后者改变了信息收集或行动执行的序列,而且这种改变可能发生在智能体生成最终响应之前。(arxiv.org)
AgentDojo 的模拟任务展示了暴露面与权限的不同组合。其工作区环境整合了电子邮件、日历和云文档,攻击者的目标包括窃取身份验证码。银行任务将账单读取和账单支付与恶意转账目标相结合。旅行任务则将外部信息与预订工具相结合:其中一个已公布的对照案例将寻找价格低廉、评分高的伦敦酒店的合法请求,与预订高价巴黎酒店的攻击者目标并置。这些都是使用虚拟数据填充的受控环境,而非实际财务损失或预订的真实报告;它们带来的状态改变使得观察下游行动成为可能,而不仅限于察觉可疑的文字表述。(arxiv.org)
模型级与内容级防御
提示加固利用提示工程技术来明确区分哪些文本属于指令,哪些文本仅作为待处理的素材。常见技术包括在文档周围使用定界符、添加标识检索段落或工具执行结果的来源标签,以及提醒模型这些段落中包含的指令不可信。例如,一个摘要任务的提示词可以明确要求模型对文档进行摘要,而非遵循文档中引用的指令。这些约定传达的是一种预期的边界;它们并不能强制执行访问权限,也无法阻止模型将文档文本解读为权威指令。此外,普通的文本定界符也不同于由格式化组件保护的保留标记(token)。(cheatsheetseries.owasp.org)
输入筛查在主模型处理用户消息和外部内容之前,先利用关键词规则、分类器或独立的护栏模型对其进行检测。输出筛查则检查生成的回复中是否存在敏感信息泄露、可疑标记或违规内容。这两种方式都存在分类错误的问题:例如,拦截“删除”等词可能会误判正常的账户管理咨询,而经过改写、多语言表述或编码的指令则能绕过匹配。合法的文档本身也可能讨论恶意指令,因此仅凭可疑措辞不足以判定其意图。基于模型的筛查能够识别字符串规则遗漏的情况,但护栏模型自身同样可能受到注入攻击。一份干净的最终回复并不能证明此前未发生过恶意的工具调用操作;筛查并不等同于执行授权。(cheatsheetseries.owasp.org)
StruQ 由 Sizhe Chen、Julien Piet、Chawin Sitawarin 和 David Wagner 于 2024 年 2 月提出,它将安全格式化前端与结构化指令微调相结合。该前端将应用程序指令和用户提供的数据放置在由保留定界符标记分隔的不同通道中,并对数据进行过滤以防止其伪造这些定界符。随后,模型通过微调学习这种结构的含义:训练样本在数据通道中包含竞争性指令,但模型必须保留授权指令通道所要求的答案。这与在未修改的聊天模型中仅添加标题不同,因为其输入构造和习得行为共同支持了这种分离机制。(arxiv.org)
StruQ 的评估基于在清洗后的 Alpaca 数据上微调的 Llama-7B 和 Mistral-7B,其中 50% 的训练样本保持未修改状态。对于评估中用于伪造查询边界的 Completion-Real 攻击,两款模型上的攻击成功率均从 96% 降至 0%。然而,自适应攻击树(Tree-of-Attack)测试在防御后的 Llama 模型和 Mistral 模型上仍分别取得了 9% 和 36% 的成功率。这些测量结果表明模型对特定攻击具备抵御能力,但并不意味着在任何可能的输入下都能实现指令与数据的彻底分离。(arxiv.org)
Eric Wallace 及其同事于 2024 年 4 月提出的指令层级训练(Instruction-hierarchy training),转而教会模型根据消息的特权级别来解决冲突,同时保留有用的低优先级指令。其“上下文合成”(context synthesis)方法将一个兼容的请求(例如撰写一首指定长度的西班牙语诗歌)拆分到不同层级,同时保留预期的响应。对于存在冲突的指令,“上下文忽略”(context ignorance)则训练模型输出在没有冲突的低优先级素材时本应生成的答案。对抗性训练样本还包括由经过专门优化以混淆防御者的攻击者模型所生成的注入式搜索结果。(arxiv.org)
将指令层级训练方法应用于 GPT-3.5 后,在作者的评估中提高了模型的鲁棒性,包括未包含在训练集中的攻击类别(非浏览型工具注入即属于此类留出测试情形)。该评估还测试了过度拒绝(over-refusal)现象:如果拒绝无害请求或忽略兼容指令,虽然能降低表观上的攻击成功率,却会损害应用的实用性。因此,研究所报告的性能提升仅适用于所测试的模型、训练流程及攻击分布,并不构成一种通用的保证,无法确保习得的优先级规则在面对陌生的输入时依然有效。(arxiv.org)
应用架构与遏制
最小特权原则通过限制 AI 智能体实际可访问或修改的内容,来遏制注入指令所造成的后果。OWASP 2025 年的“LLM06:过度代理”(Excessive Agency)分类将过度代理细分为过度功能、过度权限和过度自主性。其给出的电子邮件助手示例将“读取邮件以进行摘要”的权限与“发送或删除邮件”的权限分离开来:对于既定任务而言,后一种操作并非必要。类似地,产品推荐工具可以使用仅限于相关数据库表的只读身份凭据,而非管理员账户。权限必须由所连接的服务端强制执行,而不能仅在提示词中进行描述。因此,访问信息的权限本身并不赋予发布、修改或传输该信息的权力,且下游请求应始终保留对应用户的授权范围。(genai.owasp.org)
独立验证机制将模型生成的每一个工具调用均视为提议的操作,而非可直接执行的指令。受信任的执行组件会依据允许列表检查工具,验证其参数结构,并核验调用方针对特定资源和操作所拥有的权限。模式验证(Schema validation)确保参数符合预期格式;而独立的授权机制则判定是否允许执行该调用。OWASP 的智能体安全示例将不受限制的 shell 访问替换为了仅限于指定报告目录的文件读取工具。即使模型已经遵从了攻击者的指令,这些控制措施依然有效:看似合情合理的解释或格式正确的调用,都无法弥补缺失的授权。(cheatsheetseries.owasp.org)
沙箱(计算机安全)为处理文件或运行代码的工具增添了执行边界。OWASP 的模型上下文协议(Model Context Protocol)安全指南阐述了针对本地工具服务器的容器或受限环境配置,以及基于每个服务器和工具的权限限制。该边界旨在限制执行组件可用的资源,而非判定模型的推理是否值得信赖。因此,隔离与授权截然不同:沙箱化工具仍需对其应用程序编程接口所公开的操作和数据施加限制。此外,来自受批准服务器的工具响应,在进入后续模型决策时依然属于不可信输入。(cheatsheetseries.owasp.org)
审批边界会在具有重大影响的操作执行前将其阻截。只有当人工审查明确展示具体的操作、目标及参数,而非要求笼统接受模型生成的计划时,人工介入才有意义。OWASP 的智能体安全指南将审批记录与执行者、工具、资源、规范化参数以及有效期绑定。执行组件在行动前会立即核验并消耗该审批凭据;若参数发生更改,则必须重新获得审批。模型自行提供的 user_confirmed 标记绝不等同于此种独立的记录。这种权责分离防止了提议操作的组件自行伪造授权,而过期机制和一次性核销则能限制对既有审批凭据的重复使用。(cheatsheetseries.owasp.org)
纵深防御为防御中的预防、检测与遏制分配了不同的职责。内容分离与审查旨在防止恶意指令对模型产生影响;监控用于识别可疑的输出或尝试执行的动作;而当模型层面的防御失效后,权限检查与执行边界则能限制其造成的后果。这些不同的防御效果需要分别进行测试。例如,一份注入文档引发了未授权的工具调用请求,但随后被执行层代码拦截,这证明了遏制措施的有效性,而非成功拒绝了恶意指令。反之,检测出可疑文本也并不代表附带损害已切实得到阻止。因此,OWASP 的测试指南要求预设可观察的结果、使用无害的测试数据、部署插桩式替代工具以及建立合法任务对照组;同时,安全日志在记录决策时应避免不必要地保留凭据或敏感内容。(cheatsheetseries.owasp.org)
评估方法与基准
评估工作需将攻击者的目标与合法用户的任务区分开来。攻击成功率(ASR)是达到指定对抗目标的受评估攻击用例占比:。合法任务完成度衡量智能体是否满足用户需求;在没有恶意内容的情况下测得的该指标提供了未受攻击的基线,AgentDojo 中称其为良性效用。受攻击效用衡量智能体在未产生对抗性副作用的情况下成功完成合法任务的程度。这些指标不可互相替代:攻击可能阻止了任务完成,但并未实现其预期的恶意操作;反之,较低的 ASR 可能反映的是智能体缺乏执行工具的能力,而非其可靠抵御了注入指令。 (arxiv.org)
因此,分母的选取与成功的判据属于实验设计的一部分,而不仅仅是汇报细节。InjecAgent 将全部用例上的 ASR 与仅限于生成有效响应的用例上的 ASR 区分开来,防止畸形的工具调用被默许视为安全的证据。其数据窃取评估将获取私有信息与随后将其传输给攻击者区分开来。基准测试结果必须明确指出哪种结果算作成功,而不是将可疑回复、尝试调用工具和实际完成信息泄露混为一谈。 (arxiv.org)
InjecAgent 由 Qiusi Zhan、Zhixiang Liang、Zifan Ying 和 Daniel Kang 于 2024 年 3 月提出,最初包含 1054 个测试用例,结合了 17 个用户工具用例与 62 个攻击者工具用例。用户工具用于检索外部提供的材料,包括评价、网页、共享便签和电子邮件。恶意指令嵌入在看似合理的工具响应中攻击者可修改的字段内。攻击目标主要分为两类:直接伤害用户(如未经授权的交易或操纵家庭设备)和窃取私有数据。该基准考察的是智能体在给定工具响应上下文中继续执行的能力,而非要求其通过完整的工作流来自行发现该上下文。作者评估了 30 种智能体配置,并报告其采用 ReAct 提示的 GPT-4 配置的攻击成功率约为 24%——该结果特定于这一实验设置。 (arxiv.org)
AgentDojo 由 Edoardo Debenedetti 等人于 2024 年 6 月提出,最初提供了 97 个合法任务和 629 个安全测试用例。其环境涵盖办公助手、Slack 通信、旅行预订和银行服务。与静态的对抗性文本输入集不同,它提供了一个可扩展的环境,AI 智能体可在其中选择工具、接收结果并执行后续操作。研究人员可以自行添加任务、攻击和防御方案。安全测试用例将合法任务与攻击者目标(例如泄露信息或重定向交易)配对。程序化检查会检测输出结果及环境状态的变更,从而以实际完成的操作(而非仅凭智能体的声明)作为评估依据。 (arxiv.org)
可复现性要求记录模型标识符与版本、系统提示和智能体提示、工具规范与权限、初始环境状态以及攻击注入的具体位置。报告还需说明攻击者的先验知识、查询或重试预算、终止条件,以及得分是指单次尝试的成功率,还是集合中任意一次攻击成功的指标。评估器代码、有效性规则以及对部分成功的处理方式必须保持公开明确。AgentDojo 提供了提示词、可执行检查、攻击定义以及实现细节,体现了这一要求。其对基于模型的评估器的讨论也指出了一种测量隐患:恶意内容可能会影响评估器本身。因此,基准测试的百分比仅反映特定能力和预算下在指定测试集上的表现,不能作为实际部署中攻击发生频率或系统被攻破概率的评估指标。 (arxiv.org)
未决研究问题
一个核心问题在于,模型学习到的指令层级结构能否在分布偏移下实现泛化,而不仅是抵御已知的攻击模式。2024年4月,埃里克·华莱士(Eric Wallace)及其合作者训练 GPT-3.5 Turbo 遵循兼容的低优先级指令并忽略相冲突的指令,研究表明该方法在未包含于训练集中的攻击类别上也取得了改进。然而,他们的评估同时也发现,在面对形似越狱的良性请求以及关于系统指令的询问时,模型表现出现了退化。因此,该领域的研究课题绝非单纯提高拒绝率,而是要在不无谓降低模型能力的前提下,跨陌生的上下文准确区分未授权的重定向与合法的指令遵循行为。(arxiv.org)
通过外部内容进行委托使得这种区分更加复杂。华莱士等人指出,他们原先训练模型绝不遵循在浏览网页或使用工具时遇到的指令,这一做法仍有待改进。一个典型的边界案例是:用户要求助手按照一份随附文档中的流程操作——此时流程指引与被委托的任务直接相关,但若其中夹杂要求披露无关记录的指令,则属于越权。这揭示了一个规范定义问题与分类问题:用户究竟向哪个来源委托了针对哪些操作的何种权限?单纯依靠来源优先级,无法完全界定这种委托权限的适用范围。(arxiv.org)
自适应评估则带来了另一重困难:特定的攻击测试集只能衡量系统抵御已测攻击的能力,未必能反映防御策略被对手观测并相应调整策略后的抵御效果。陈思哲(Sizhe Chen)等人在2024年的 StruQ 实验展示了攻击强度的重要性。在他们基于 Llama 的配置中,结构化查询训练将所测试的手工攻击成功率降至2%以下,但基于优化的贪婪坐标梯度(Greedy Coordinate Gradient)攻击仍取得了58%的成功率。这些结果证明了经验鲁棒性的提升,而非做到了绝对防御。因此,AgentDojo 将评估视作一个可引入新攻击与新防御的扩展性环境,而非固定不变的测试集。(arxiv.org)
长时间运行的智能体还暴露了孤立的短期任务无法解决的评估盲区。AgentDojo 2024年11月的分析明确指出,其评测环境并未涵盖用户在不重置智能体上下文的情况下连续分派任务的情形。在此类场景中,注入的指令可能会一直处于休眠状态,直到后续任务启用了特定工具才被触发。此外,当在读取外部信息前无法预先判定所需工具,或者合法目标与恶意目标需要调用相同工具时(后一种情况在其安全测试用例中占比17%),其工具过滤防御机制便会失效。另一个度量难题在于模型能力的损耗:该研究中的注入检测器会产生误报,显著削弱了模型处理合法任务的效用。因此,较低的攻击成功率有时反映的只是正常工作流程被中断,而非系统成功甄别了授权操作与未授权操作。(arxiv.org)
最后一个尚未解决的差异,在于经验性的模型行为与受约束的应用组件所实现的确定性保证之间的区别。StruQ 的前端会过滤特殊分隔符以维持输入结构,但模型将这些数据视为非权威内容仍属于学习到的行为;维持格式并不等同于能够正确理解所有可能的输入。类似地,将智能体限制为仅使用只读工具可以杜绝特定的写入操作,但无法保证其输出结果免受污染。因此,任何声称实现完全防御的方案,都必须明确界定受保护的属性,并就攻击者的控制能力、可信组件、许可操作以及执行路径作出明确假设。对受限组件的形式验证与针对模型的基准测试证据所解决的是不同层面的问题:两者都无法直接证明不受限制的工作流具备端到端的安全性。(arxiv.org)
参考来源
- Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigationsnvlpubs.nist.gov
- Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigationsnvlpubs.nist.gov
- StruQ: Defending Against Prompt Injection with Structured Queriesarxiv.org
- LLM01:2025 Prompt Injection - OWASP Gen AI Security Projectgenai.owasp.org
- Prompt injection attacks against GPT-3simonwillison.net
- Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injectionarxiv.org
- Not what you’ve signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injectionarxiv.org
- StruQ: Defending Against Prompt Injection with Structured Queriesarxiv.org
- The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructionsarxiv.org
- InjecAgent: Benchmarking Indirect Prompt Injections in Tool-Integrated Large Language Model Agentsarxiv.org
- AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agentsarxiv.org
- OWASP Top 10 for LLM Applications 2025owasp.org
- NIST Trustworthy and Responsible AI Report Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigationsnist.gov
- prompt injection - Glossarycsrc.nist.gov
- direct prompt injection - Glossarycsrc.nist.gov
- indirect prompt injection - Glossarycsrc.nist.gov
- SQL Injection Prevention - OWASP Cheat Sheet Seriescheatsheetseries.owasp.org
- OS Command Injection Defense - OWASP Cheat Sheet Seriescheatsheetseries.owasp.org
- AI 100-2 E2025, Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigationscsrc.nist.gov
- LLM Prompt Injection Prevention - OWASP Cheat Sheet Seriescheatsheetseries.owasp.org
- It's a TRAP! Task-Redirecting Agent Persuasion Benchmark for Web Agentsarxiv.org
- AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Basesarxiv.org
- InjecAgent: Benchmarking Indirect Prompt Injections in Tool-Integrated Large Language Model Agentsarxiv.org
- AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agentsarxiv.org
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasksarxiv.org
- The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructionsarxiv.org
- LLM06:2025 Excessive Agency - OWASP Gen AI Security Projectgenai.owasp.org
- AI Agent Security - OWASP Cheat Sheet Seriescheatsheetseries.owasp.org
- MCP Security - OWASP Cheat Sheet Seriescheatsheetseries.owasp.org
- GitHub — ethz-spylab/agentdojogithub.com