提示注入是什么
提示注入(prompt injection)是一类攻击:放进模型输入里的文字会压过模型原本收到的指令,也压过开发者围绕这个模型搭建的控制[1]。问题出在结构上,不是某个产品的偶发缺陷。语言模型把指令和数据当作同一段连续文本来读,这段文本里没有可靠的标记来说明开发者要求的部分到哪里结束、不可信的外部内容从哪里开始。当后面的句子和前面的要求冲突时,模型照后面的句子去做,并不是一个显眼的错误,而是一个很可能的结果。
两条路径:直接与间接
较早的工作默认打字的那个人就是给模型下指令的人,也就是说,用户是直接的提示者。2023 年 Greshake 等人的论文换了一个问法:如果提示根本不是用户写的,而是藏在应用自己去取回的数据里,会发生什么[1]?这就是间接提示注入。攻击者只要把文字放在应用很可能会取到的地方,不必拥有系统的直接入口,就能远程实施攻击[1]。
一个假设的例子可以说明这条路径的形状:某个助手被要求打开一个网页并写摘要。网页里有给普通读者看的正常内容,也有一小段藏起来、写给助手看的话,要它放下摘要任务,改为转述它能看到的其他材料。对模型来说,两段文字是同一种东西——都是它输入里的文本。开发者的「写摘要」这一要求在同一个上下文里遇到后来的冲突指令时,并没有什么特殊地位。
概念从哪来
2023 年 2 月,Greshake 等人发表了为「间接提示注入」命名的论文[1]。他们的核心论点是:把大语言模型接进应用之后,数据与指令之间的界线被模糊了[1]。在此之前,威胁模型基本把用户当作唯一的输入来源;一旦应用会把检索到的内容喂给模型,输入来源就变成了整个可被检索的世界。
论文演示了什么
作者按计算机安全的方式列出了危害分类,其中包括数据窃取、蠕虫式传播和信息生态污染[1]。所谓蠕虫式传播,指的是一段内容让应用把它自己复制进更多内容里,从而扩散开去。这些不只是推演:他们在真实系统上验证了可行性,包括 Bing 的 GPT-4 版 Chat 和代码补全引擎,也包括基于 GPT-4 搭起来的合成应用[1]。
作者还描述了机制本身的能量:处理检索到的提示,效果上可以等同于任意代码执行(arbitrary code execution),可以操纵应用的功能,也可以控制其他 API 是否被调用、如何被调用[1]。在普通软件里,代码执行意味着攻击者的指令在机器上跑起来;在这里,被操纵的是模型自己的判断,以及经由判断触达的那些工具。
局限与未解决的问题
论文的结论是:在发表时,针对这些威胁的有效缓解手段还不存在[1]。这也点出了概念本身的局限——它命名的是一种失效方式,给出一套词汇,却没有附带解法。难点在于过滤:合法内容和攻击内容走的是同一条通道,凡是能识别出「这段文字在给模型下命令」的规则,往往也会误伤正常文本;而把外部内容整段丢弃,应用也就失去了检索的意义。理解提示注入,用处不在于记住某个攻击样例,而在于意识到:当一个系统把不可信文本和指令放进同一个输入时,它实际上把一部分控制权交了出去。
注释与来源
- Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injectionhttps://arxiv.org/abs/2302.12173
引用本页: 提示注入(Prompt injection). TellWorld, https://www.tellworld.net/zh/learn/prompt-injection. 更新于 2026-11-07