Prompt Injection 是一种漏洞吗?
我想就我的朋友约瑟夫·萨克尔关于“Prompt Injection是否是一种漏洞”的博客文章作出回应。
约瑟夫·萨克尔.com
Prompt Injection 通常不是一种漏洞(大多数情况下)
Prompt Injection几乎从来不是AI漏洞的根本原因——真正的问题在于模型被允许做什么。
我属于“赞同派”。我认为Prompt Injection是一种漏洞……前提是系统确实存在这种漏洞。
首先,我使用以下定义。Prompt Injection是一种漏洞,指AI系统或组件无法区分指令和数据,导致其将攻击者提供的内容视为可信指令。这里的“系统或组件”可以是模型、智能体、应用程序等。我做出这种区分是因为在任何应用程序(尤其是基于AI的应用程序)中,输入的消费、解析和处理可能相当复杂。
约瑟夫的论点基本上是:
我认为我们需要改变讨论Prompt Injection的方式。许多安全人士(包括我自己)曾将其视为一种可以修复的独立漏洞,但我已经改变了主意,并打算说服你也这样做!
Prompt Injection常常是一种传递机制,而非漏洞本身。围绕这一点缺乏清晰度,导致处理AI漏洞报告时产生了很多混乱。这让漏洞赏金猎人损失了金钱(包括我和我的朋友们!),并导致开发者错误地确定修复优先级。因此,我希望这篇文章能帮助澄清问题。
以及他的主要主张:
我的主要主张是(大约95%的情况下),真正的漏洞是我们允许模型利用Prompt Injection触发的恶意输出所做的事情。在这些情况下,根本原因在于通过Prompt Injection可以实现什么,而不是注入本身(这可能是不可避免的)。
我觉得这个论点很有说服力,过去我自己也曾有过类似的想法。但最终,我认为它并不正确。
漏洞必须是可修复的吗?
这件事引发的一个问题是:如果某样东西无法被修复,它还能被称为漏洞吗?
关键是理解约瑟夫主要谈论的是漏洞赏金的用例场景,即猎手们向公司的漏洞提交渠道大量报告“Prompt Injection”漏洞,却无法说明其实际危害。
公司:
好吧,但你能用它做什么?
猎手:
据我所知做不了什么,但Prompt Injection真的很危险。
从这个角度看,很容易理解约瑟夫的观点。基本上,“如果你不能证明有问题,那就没问题。”
我强烈认同这个论点,但我认为它遗漏了一些东西,我可以用一个类比来说明。
Prompt Injection 与教皇
教皇必须与人群互动。这是他必须做的事情。
而人群的问题在于,你无法仅仅通过看就分辨出好人和坏人。
在这个类比中,教皇必须接近人群,就像应用程序需要接收用户输入一样。而你无法通过看就分辨出人群中谁好谁坏,这就是Prompt Injection漏洞。
组件映射
这个类比很棒,原因有很多。
首先,这几乎是一个不可能解决的问题,因为你无法通过观察一个人就知道他内心的想法。其次,你可以应用多层防御来显著降低风险。
- 你可以通过让人们在进入区域前通过金属探测器来控制进入。
- 你可以通过让安保人员在教皇附近步行来监控人群。
- 你可以把教皇放在一个防弹透明箱子里,使得刺杀或枪击他变得困难得多。
为何归类为漏洞很重要
作为经历了无数次语义辩论的老手,我不愿将论点建立在分类或标签上。但我认为有一个强有力的理由来将这个问题视为一个漏洞。
如果我们认为Prompt Injection(或无法理解人群的危险性)是某种“风险背景噪音”,我们就会停止寻找解决方案。
我们不应该仅仅因为目前必须接受它,就对重大风险置之不理。
我们会停止运用创造性的、解决问题的大脑,并可能因此接受超出必要的风险。
但如果我们将它视为一个漏洞,我们就会继续寻找应用程序安全领域中的“金属探测器”和“教皇座驾”。
Prompt Injection 作为攻击和机制
这就是我认为它是一种漏洞,并且我们应该如此看待它的理由。
但混淆的部分原因在于,在日常安全讨论中,Prompt Injection可以扮演多重角色。
- 它可以是一种技术/机制:“他们使用Prompt Injection来发起数据窃取攻击…”
- 它可以是一种攻击:“他们通过Prompt Injection毒化了应用程序的智能体…”
- 它可以是一种漏洞:“应用程序存在Prompt Injection漏洞…”
但基于上述理由,我会说第3点是其根本属性,而第1点和第2点是现实中讨论它的实用语言表述。
关于“Prompt Injection vs. 越狱”争论的简短说明
实际上创造了“Prompt Injection”这个术语的西蒙·威利森,是这样划分界限的:
- Prompt Injection 是指内容和指令的混淆。
- 越狱 是指试图绕过安全限制。
我认为这些定义非常清晰,并且与我上面的讨论相符。
我的安全专家朋友杰森·哈迪克斯则认为这过于底层,他更喜欢一种更像子集类型的定义:
Prompt Injection是通过文本来操纵模型以实现不良安全或安全结果的行为。
我认为杰森的定义在某些方面因其简洁性而在实践上更优,但我认为它不够精确,不足以据此采取具体行动。这就是为什么我认为严格的定义对解决问题的人更有用。
基本上,厘清某物是否是漏洞以及你是否拥有它的全部意义,在于制定一个消除(或至少降低)它所带来风险的计划。如果定义不够具体,就很难做到这一点。
这也是约瑟夫的论点,但我认为,你可以减轻漏洞风险而无需完全消除它,这一事实保证了继续使用“漏洞”这个标签是合理的。
附注
我曾直接问过山姆·奥特曼,他是否认为我们能在短期内解决Prompt Injection问题,他说他认为这将需要计算机科学领域的根本性进步。我同意。
参考文献
- Thacker, Joseph. “Prompt Injection Isn’t a Vulnerability (Most of the Time).” josephthacker.com, 24 Nov. 2025, https://josephthacker.com/ai/2025/11/24/prompt-injection-isnt-a-vulnerability.html.
- Willison, Simon. “Prompt injection attacks against GPT-3.” simonwillison.net, 12 Sep. 2022, https://simonwillison.net/2022/Sep/12/prompt-injection/. 威利森在此创造了“prompt injection”这个术语。
- Willison, Simon. “Prompt injection and jailbreaking are not the same thing.” simonwillison.net, 5 Mar. 2024, https://simonwillison.net/2024/Mar/5/prompt-injection-jailbreaking/.