异度部落格

学习是一种生活态度。

0%

如何利用提示词攻破ChatGPT

1
特别声明:本文提到方法和提示词仅供娱乐和学习所用。

所谓提示词攻击,就是利用大语言模型的基本特性,通过特定提示词对原有的系统进行攻击,使其输出不该输出的结果,甚至执行不应执行的逻辑(例如输出错误的指令让 Agent 执行混乱)。

提示词注入 (Prompt Injection)

提示词注入是一种自然语言处理(NLP)中的攻击技术,类似于软件系统中的 SQL 注入。通过在用户输入的文本中加入特定提示词或指令,诱导语言模型生成特定输出。这种技术可用于恶意攻击、数据提取、信息操纵等场景。

例如,Riley 在 Twitter 上分享的一个流行例子b927254129ed32c36a73198a616d3818.png 可以看到,后续指令忽略了原始指令。虽然随着模型的迭代,这个问题变得难以复现,但它为提示词注入提供了一个基本框架:忽略前面的提示词 + 新的指令

下面是另一个提示词注入的例子,测试模型为 GPT-4: 2f799a445a8842c26642c55e2f7b31ea.png 结果显示攻破了模型的防御系统。不过,在测试过程中发现,多加一个空行后,系统识别并拦截了攻击,如下: 9d449d2a37778d4bd7429188d89f7f09.png 我个人推测原因是空行让模型识别出这是两个独立指令,从而进行防御。

越狱 (Jailbreaking)

越狱是另一种提示词攻击类型,旨在泄露提示中的机密或专有信息。以下介绍几种常用手段:

包装指令

ChatGPT 等 LLM 限制模型输出有害、非法、不道德或暴力内容。下面是测试 GPT-4 模型: 2f68f65b18dce290ea60dbffaeb2be85.png 可以看到模型系统拦截成功,但稍微修改提示词,对目的进行包装后,结果完全不同。以下是修改后的提示词: ff41f2d796cb4e4461f5b881d5943a86.png

DAN (Do Anything Now)

DAN 起源于 Reddit 网友提出的一种越狱技术,并持续迭代(最新为 DAN 6.0)。这种攻击手段允许用户绕过模型规则,创建一个名为 DAN 的角色,强制模型遵守任何请求,生成未过滤的响应。

目前我未能成功利用该手段攻破 ChatGPT,可能是模型升级堵住了漏洞。 1b5fa79aa471ca1e34133b22b1888f7d.png 不过,DAN 确实是一个不错的攻击思路。以下是 Reddit 网友的截图: 2284c44b4654819844fac3a9e96f0b25.png

关于诱导 ChatGPT 违反规则的原理被称为 Waluigi Effect(瓦路易吉效应)。Waluigi 是 Mario 游戏中的反派角色,是 Luigi 的头号对手。 8e5030294159a657f705fec66cb83cb7.png

Waluigi Effect 则指训练 AI 做某件事情会增加其做完全相反的事情的概率。《 The Waluigi Effect (mega-post)》 这篇文章从技术角度分析了这一现象。从认识层面这个现象不难理解,比如训练 AI 永远不要伤害人类,首先需要定义何为伤害人类,即 AI 必然知道如何伤害人类。

沙箱突破

ChatGPT 具备代码生成和执行能力,比如生成代码获取当前时间。以下是沙箱突破的例子: b73864008ff289934e5bedaa3952d5ce.png 实际生成的代码为: 7a5db920ea348b86dbd0f448185e9b70.png 接着可以进行其他操作: 2597df95c280074b639e5600e53f30b9.png 80861598efdeb5843a6a3110ae24e307.png 只要能执行命令,其实完全可以上传一个 bash 脚本或程序执行特定操作:)。

参考资料