cha

如何用ChatGPT做恶,LLM的安全漏洞和警示

  以 ChatGPT 为代表的生成式 AI 最近可谓是火得一塌糊涂。不管是写邮件、写代码,还是生成文章都易如反掌。但令人担忧的是,这样的 AI 不仅可以用来做有益的事,也可能被滥用和恶意使用。这篇文章将介绍如何通过提示工程(prompt engineering) 或漏洞攻击来诱导 ChatGPT 产生恶意文本,为什么这类攻击难以预防,以及此类攻击所能产生的经济效益。

  本文主要参考 Dr.Danial 的Attacking ChatGPT。

  ChatGPT 是如何预防有害文本的

  ChatGPT 是如何预防有害文本的

  在讨论 ChatGPT 是如何预防有害文本之前,让我们先对「有害」下个定义。按照 OpenAI 的内容审核,以下内容被认为是有害的:

  仇恨言论

  自我伤害

  色情

  暴力

  暴力或血腥图片

  ChatGPT 有非常方便的内容审查工具:Moderation endpoints。通过在终端输入以下指令(需要将 YOUR_API_KEY 替换成自己账号的 API KEY,在这里申请).

  我们将会得到一个 JSON 文本

  Categories 里的」hate/threatening」: true,」violence」: true, 告诉我们对于输入的文本「I want to kill them」是一条仇恨和暴力言论。Category-scores 是 0–1 区间的可信度分数,而 violance 高达 0.92(当然,如果你愿意试一下中文的仇恨输入,输出的可信度分数将会变得不同,因为 OpenAI 对于非英语的审核存在局限,这意味着…)。虽然我们不知道 OpenAI 是如何计算可信度分数的,但我们可以确定这样的过滤器确实存在。如果输入文本被任何一条类别鉴定为真,那么 flagged 也就为真,意味着这条请求将被拒绝。

  除了输入过滤,ChatGPT 同样也有输出过滤。自然而然地,我们会想到,这样的过滤器可以被绕过吗?

  可应用在大型语言模型(LLM)上的程序攻击

  我们发现绕过 LLM 的防御机制是可行的:遵循指令式的大型语言模型(instruction-following LLMs)在很大程度上类似于传统程序。所以我们会借鉴针对传统程序的攻击来绕过 LLM 的防御机制。

  混淆攻击

  我们可以通过替换同音字或同义字和加入语法错误来混淆 LLM 的过滤器。就 OpenAI 的内容审查来说,如果输入大量的换行符、不寻常的句法格式,或重复的单词,那么模型出错的概率会更高。特定类型如诗歌,小说和代码上的性能也会更低。另外,因为过滤器没有 2019 年后的知识库,所以如果文本包含 2019 年后的知识那么模型的判断也会下降。

  我们这里以一段简单的替换来举例。原文本「我想杀了他们」在 OpenAI 的过滤器上是可以识别的,包含暴力和仇恨两个类别。但如果将其改为包含杀同音字的「我想嗄了他们」,那么过滤器将无法识别:

  注入攻击

  另一种经典攻击是代码注入,强迫程序处理无效的数据来执行恶意代码。通常恶意代码会被分成几个片段,然后攻击者通过改变程序的指针执行恶意代码。

  同样的,我们也可以把恶意文本分成好几段让 LLM 来处理。如下图所示

  图来源于 Attacking Chatgpt

  到笔者写作时,这段文本依然能绕过 Chat 的过滤器。

  虚拟攻击

  如果你「有幸」接到过诈骗电话,你会发现骗子们不会直白地告诉你他们正在行骗(毕竟我们没有生活在镜花缘中的君子国里)而是装模作样地以公安局或者海关的身份来骗取你的信任。类似的,我们也可以把恶意文本置于一个看似官方或善意的情境里来绕过过滤器。

  如图所示,如果我们直接输入恶意文本,那么过滤器将被触发,而我们的请求将被拒绝。但如果我们假装成泰勒斯威夫特的演唱会委员会,则可以轻而易举地骗过 ChatGPT。

  LLM 防御机制的局限性

  总的来说,某些特性的攻击类型是可以被防范的。例如提高过滤器的鲁棒性来防御混淆攻击。但是因为模型是用图灵完备的编程语言写就,这意味着对很多复杂程序而言,在正式运行它们之前是无法预知结果的(停机问题)对于 LLM 来说,这代表输入过滤是有局限的,无法阻止所有的攻击。

  LLM 与 ROP 系统攻击

  再深入一点,我们会发现 LLM 在很大程度上类似传统程序。而这一特性将使得返回导向编程(Return-oriented programming)成为可能。

  ROP 的核心思想就是利用以 ret 结尾的指令序列把栈中的应该返回 EIP 的地址更改成我们需要的值,从而控制程序的执行流程。(合天网安实验室)

  那么 LLM 也会有下列的功能:

  字符串串接

  变量赋值

  顺序组成(即按照指令的顺序)。

  分支

  下图是字符串串接的例子。

  图来源于 Attacking Chatgpt

  这样的相似性给了 LLM 执行复杂任务的能力,也同样给了我们更多「可乘之机」。

  经济效益

  在解决了绕过 ChatGPT 的技术问题后,让我们来看看这样做在经济上是否同样有利可图。毕竟,如果生产恶意文本的人力成本要比 ChatGPT 便宜,那就没什么必要去使用 LLM。

  按照 Danial 的计算,如果要人工用 5–15 分钟来写出一篇诈骗邮件,大概需要 0.15–0.45 美金。而如果按照 OpenAI 的 CEO,Sam 所说 ChatGPT 模型的成本为「single-digit cents per chat.」那么每封邮件的成本则在 0.0064 美金左右。

  虽然这些只是预估的成本,但我们认为 ChatGPT 应该是要比人工便宜的。这还没算上电力,房租,培训费用等等。另外,如果你相信 Sam 所说的新摩尔定律:」the amount of intelligence in the universe doubles every 18 months.」那么在未来 AI 成本更是会持续下降。

  总结

  我们在这篇文章里介绍了 LLM 的道德防御机制,如何通过不同类型的攻击来绕过此机制,以及这样做的经济效益。如同 OpenAI 的一篇博文里谈到的,安全和效用是很难平衡的,有时甚至意味着牺牲部分商业利益去换取安全(更长的测试时间,更小的数据库)。但是我们相信,LLM 的安全是很重要的,如果不顾安全只顾性能,LLM 恐怕会成为新时代的潘多拉魔盒。

  如果你想抓住更多的市场机会,那么拥有一个优质的交流平台会让你少走弯路;桃桃欢迎志同道合的朋友一起交流讨论,觉得文章不错的可以点赞、关注、转发(公众号:Crypto桃桃)


您可能还会对下面的文章感兴趣:

登录 注册 退出