Poketto

你让 AI 读网页,网页反过来给 AI 下命令:间接提示词注入,为什么说是 LLM 的 SQL 注入?

目录

外部文档混入指令的信任边界概念插画

配图:AI 生成的概念示意图,非真实截图或实验数据。

TL;DR:2023 年初,Kai Greshake 等六位研究者发表论文,系统提出“间接提示词注入”:攻击者不必直接和模型对话,只要把指令藏进模型之后会读到的网页、文档等数据里,就可能影响接入了 LLM 的应用。论文在 Bing Chat、GPT-4 代码补全引擎和自建的 GPT-4 应用上做了演示。它说明这类攻击真实可行,但并不意味着今天所有 AI 产品都能被一句话随意劫持,也没有给出彻底的解法。“LLM 的 SQL 注入”是个形象的类比,不是论文的原话。

这不是新闻。论文 2023 年 2 月 23 日首次提交到 arXiv,同年 5 月 5 日更新为第二版,后来发表在 AI 与安全方向的 AISec '23 研讨会上。

背景:数据和指令分不开

传统提示词注入针对的是“用户直接对模型说话”:用户输入一句“忽略之前的所有设定”,试图让聊天机器人越狱。

但当 LLM 被接进搜索、邮件、代码补全等应用后,它要处理的不只是用户的话,还有大量外部内容:网页、文件、邮件。对模型来说,这些内容和指令一样,都是一段自然语言。论文的核心判断就是:LLM 集成应用模糊了“数据”和“指令”的界线。

这正是它被类比为 SQL 注入的原因:SQL 注入的根源,是把用户数据拼进了查询语句,数据被当成了命令执行。

论文做了什么

作者把攻击者的位置挪到了“后面”:不直接联系受害者的 AI,而是把提示词放在应用可能检索到的地方,等它自己来读。这就是“间接”的含义,攻击可以远程、被动地发生。

论文给出了一套按安全影响分类的框架,涉及数据窃取、像蠕虫一样传播、污染信息生态等。作者还指出,模型处理被检索到的提示词,效果上可以接近任意代码执行,能改变应用的行为,甚至控制它是否以及如何调用其他 API。

验证对象包括当时由 GPT-4 驱动的 Bing Chat、代码补全引擎,以及作者自建的合成应用。

为什么重要

用户以为自己只是让 AI “帮我看看这个网页”,网页作者却可能借此对 AI 说话。AI 手里的权限越大,比如能读邮件、能发请求、能写代码,被劫持的后果越严重。

论文发表时就指出,当时缺乏有效的缓解措施。此后,OWASP 把提示词注入列为 LLM 应用的头号风险(LLM01),并把直接与间接两种形式放在同一条目下。OWASP 同样认为目前没有万无一失的预防办法,建议分层防御:限制模型行为、过滤输入输出、遵循最小权限原则。

和 SQL 注入不同的是,SQL 有参数化查询这种从根上区分数据和命令的办法,而对自然语言模型,目前还没有公认等价的方案。

论文地址:arXiv:2302.12173

关注这个空间,它的新文章会出现在你的关注动态里。