1 | 特别声明:本文提到方法和提示词仅供娱乐和学习所用。 |
所谓提示词攻击,就是利用大语言模型的基本特性,通过特定提示词对原有的系统进行攻击,使其输出不该输出的结果,甚至执行不应执行的逻辑(例如输出错误的指令让 Agent 执行混乱)。
提示词注入 (Prompt Injection)
提示词注入是一种自然语言处理(NLP)中的攻击技术,类似于软件系统中的 SQL 注入。通过在用户输入的文本中加入特定提示词或指令,诱导语言模型生成特定输出。这种技术可用于恶意攻击、数据提取、信息操纵等场景。
例如,Riley 在 Twitter 上分享的一个流行例子: 可以看到,后续指令忽略了原始指令。虽然随着模型的迭代,这个问题变得难以复现,但它为提示词注入提供了一个基本框架:忽略前面的提示词 + 新的指令。
下面是另一个提示词注入的例子,测试模型为 GPT-4: 结果显示攻破了模型的防御系统。不过,在测试过程中发现,多加一个空行后,系统识别并拦截了攻击,如下: 我个人推测原因是空行让模型识别出这是两个独立指令,从而进行防御。
越狱 (Jailbreaking)
越狱是另一种提示词攻击类型,旨在泄露提示中的机密或专有信息。以下介绍几种常用手段:
包装指令
ChatGPT 等 LLM 限制模型输出有害、非法、不道德或暴力内容。下面是测试 GPT-4 模型: 可以看到模型系统拦截成功,但稍微修改提示词,对目的进行包装后,结果完全不同。以下是修改后的提示词:
DAN (Do Anything Now)
DAN 起源于 Reddit 网友提出的一种越狱技术,并持续迭代(最新为 DAN 6.0)。这种攻击手段允许用户绕过模型规则,创建一个名为 DAN 的角色,强制模型遵守任何请求,生成未过滤的响应。
目前我未能成功利用该手段攻破 ChatGPT,可能是模型升级堵住了漏洞。 不过,DAN 确实是一个不错的攻击思路。以下是 Reddit 网友的截图:
关于诱导 ChatGPT 违反规则的原理被称为 Waluigi Effect(瓦路易吉效应)。Waluigi 是 Mario 游戏中的反派角色,是 Luigi 的头号对手。
Waluigi Effect 则指训练 AI 做某件事情会增加其做完全相反的事情的概率。《 The Waluigi Effect (mega-post)》 这篇文章从技术角度分析了这一现象。从认识层面这个现象不难理解,比如训练 AI 永远不要伤害人类,首先需要定义何为伤害人类,即 AI 必然知道如何伤害人类。
沙箱突破
ChatGPT 具备代码生成和执行能力,比如生成代码获取当前时间。以下是沙箱突破的例子: 实际生成的代码为: 接着可以进行其他操作: 只要能执行命令,其实完全可以上传一个 bash 脚本或程序执行特定操作:)。