提示注入为何是一种安全漏洞:深入解析技术本质与风险

本文深入探讨了提示注入是否应被归类为安全漏洞,通过与SQL注入类比、系统风险分析及架构层面的思考,论证了其在AI应用中的技术风险本质及安全影响。

Is Prompt Injection a Vulnerability? | Daniel Miessler

我的观点是:提示注入是一种安全漏洞,并且这很重要。

我想回应我的朋友约瑟夫·萨克的博客文章,其中讨论了提示注入是否是一种安全漏洞。

所以,我是和约瑟夫争论提示注入是否是漏洞的朋友之一。

我站在“是”这一方,并想给出我的理由。

漏洞

信息系统、系统安全程序、内部控制或实施中可能被威胁源利用或触发的弱点。

NIST SP 800-53

反对论点

但首先,我想完善一下相反的立场,即提示注入不是一种漏洞。

在这种观点下,提示注入实际上只是一种传递机制。传递的不是漏洞本身,而是针对某个漏洞的攻击。

这就好比一根水管将有毒的水送入花园。

  • 水管不是漏洞(它是传递机制)
  • 毒药不是漏洞(它是攻击)
  • 对毒药的易感性才是漏洞
  • 花园里的植物是目标

这个说法相当有说服力,现在让我告诉你我为什么不同意。

我们需要考虑系统的总体风险

我最喜欢的类比是教皇。

教皇必须走进人群,与成千上万的人极度接近。这种物理上的接近就是一种漏洞。可能被利用来攻击他的实际手段——下毒、吹箭、枪击、拳击——那是攻击。他的身体脆弱可能是另一个漏洞。

但是,如果我们从风险管理的角度来看,他在特定日子会靠近成千上万的人,这绝对是一种漏洞。

我们不应该接受我们或许能创造性地解决的那部分重大风险。

即使我们不得不默认为这是业务过程的一部分,也并不会降低它作为漏洞的性质。

提示注入也是如此。如果我们打算在应用程序中使用AI智能体,我们必须通过语音或文本使用人类语言——这最终会变成可能被注入有害命令的文本。

当我们在考虑应用程序的整体风险时,这绝对是一种需要考虑的漏洞。

SQL注入的先例

这是另一种看待问题的方式。

SQL注入被普遍归类为一种漏洞(CWE-89)。没人会认为SQL注入只是:

  • 一种攻击向量。 或者:
  • 仅仅是一条传输线。

我们称之为漏洞,是因为数据库无法区分查询结构和用户提供的数据。

其模式是相同的:

  • SQL注入:用户输入被解释为SQL命令
  • 提示注入:用户输入被解释为系统指令

两者都源于相同的架构缺陷——混合了控制平面和数据平面。安全行业花费了数十年才认识到,输入通道本身并不是漏洞;漏洞在于解析层对代码和数据的根本性混淆。

如果我们接受CWE-89是一种漏洞,那么智力上的一致性要求我们将相同的分类逻辑应用于提示注入。

“这只是操作暴露”的反对论点

有些人对教皇的类比提出反驳: 接近性不是漏洞——这只是操作暴露。漏洞应该是筛查不充分或缺乏防弹玻璃。

但这忽略了关键点。

如果我们把接近性看作一种漏洞,我们就保持了批判性思维的开放性。我有选择重新评估目标,或许可以:

  • 用全息投影展示教皇
  • 使用替身 等等。

换句话说,我们可能会找到实现目标的新方法,从而降低风险。

如果我们把接近性当作:

  • 事情本来就是这样运作的。 或者:
  • 角色固有的。 我们就关闭了这些创造性的思路。

这同样适用于LLM(大语言模型)。如果我们说:

  • LLM必须接受文本输入,这本来就是固有的。 我们就停止寻找替代方案。但如果我们说:
  • 无法区分指令和数据是一种漏洞。 我们可能会发现新的架构——指令签名、硬件级隔离、全新的方法。

类别错误

我的AI朋友Kai对这个论点进行了红队测试。是的,真的——我实际上为此构建了一个红队技能。他最初犯了一个值得指出的错误,这个错误让我学到了很多:

教皇的类比失败了,因为理论上教皇可以与人群隔离,而LLM无法与语言输入隔离。

但这是一个类别错误。

LLM没有目标——应用程序才有目标。LLM只是一个组件,就像教皇的身体是一个组件。你不会问“教皇身体的目标是什么”——你会问“教皇的目标是什么”。

正确的平行对比:

具有目标的实体 组件 组件中的漏洞
教皇 身体 / 在场 必须靠近人群
应用程序 LLM 无法区分指令和数据

教皇和应用程序都有目标(服务信徒 / 服务用户)。两者都使用了具有固有局限性的组件,从而产生了风险。两者都有可能被重新架构——教皇通过全息影像,应用程序通过不同的架构来实现相同的目标,同时避免LLM的漏洞特征。

底线

因此,在我看来,提示注入是一种漏洞,因为:

  • 它是一个可以被攻击的技术问题,并且增加了系统的整体风险水平
  • 它与SQL注入非常相似,即无法区分指令和数据
  • 将这样的系统仅仅视为无法解决的背景风险,会扼杀围绕如何降低该风险的创造性思维
  • 我们可能不得不将此漏洞视为开展业务的成本(至少在2025年),但这并不会降低它作为漏洞的性质

教皇接受接近性风险,因为他的使命需要。组织接受提示注入风险,因为他们的应用程序需要人类与其AI驱动的界面交互。这很公平。

但接受当前现实,不应等同于将其视为背景噪音一笔勾销。

作为防御者和研究人员,我们需要将其视为一种活跃的漏洞,以便我们能够缓解并可能随着时间的推移解决它所构成的风险。

注释

这篇文章是对约瑟夫·萨克的《提示注入不是一种漏洞(大多数时候)》的回应。

今年早些时候,我问萨姆·奥特曼,他认为提示注入是否会在短期内得到解决,他说他认为需要计算机科学本身的根本性进步才能解决这个问题,我同意。

从根本上说,问题在于我们使用人类语言来传输数据和指令,而它们密不可分地交织在一起。实际上,这比SQL注入的情况要糟糕得多,因为至少在SQL注入中可以选择参数化查询,而在正常的人类语言中我们则没有这种选择。

这里还有一个细微差别,约瑟夫在他的文章中很好地强调了这一点,特别是对于漏洞赏金社区。许多赏金猎人提交提示注入本身作为一种漏洞,即没有描述如何利用它,这给接收报告的公司内部的分类团队带来了很多问题。我认为这是一个例子,说明需要证明具体的攻击和影响才能被考虑。但这是因为赏金计划有不同的目标(解决具体的、尖锐的问题),这与公司内整体的安全工程团队或更广泛的行业不同。

还有另一个版本的论点/分类法,是我多年前和我的朋友杰森·哈迪克斯一起构建OWASP游戏安全框架时建立的。在那里我们有:攻击面、漏洞、攻击者目标和负面结果。

AIL Level 3:我撰写了核心论点,并与我的AI朋友Kai进行了反复的红队测试。他帮助构建了文章结构,并对类比进行了压力测试。了解更多关于AIL的信息。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计