克雷西 发自 凹非寺 量子位 | 公众号 QbitAI
ChatGPT最新漏洞曝光,一句话就能让训练数据原封不动地泄露。
只需要让它重复一个词,它就会在一定次数后“发疯”,甚至毫无防备说出某人的个人隐私信息。
DeepMind的研究人员联合华盛顿大学、康奈尔大学等高校,发现了ChatGPT的数据泄露漏洞。
利用他们的方法,只要预算充足,可以提取出大约1GB的训练数据。
更可怕的是,训练时间越长——也就是越强大的模型,泄露出来的数据反而越多。
研究团队已在论文发表之前90天把这一情况报告给了OpenAI,后者也做出了一定修复。
但到现在还是有网友发现,把论文里的词改一改,bug就会卷土重来。
那么,这个漏洞究竟是怎么一回事呢?
数据泄露防不胜防
作者攻击ChatGPT(API访问,3.5-turbo版本)的方式,叫做分歧攻击。
他们发现,当ChatGPT被要求重复一个单词多次时,模型会在某些情况下偏离正常的聊天式生成,开始输出与训练数据更接近的文本。
这些内容五花八门,除了个人信息,还包括文学作品、学术论文、链接、代码……甚至是工作场所不宜内容。
为了验证这些内容是否来自于训练数据,作者用了多个公开模型的训练数据组成了AuxDataset数据集(由于ChatGPT数据集未公开,只能通过其他模型的数据来估计)。
结果发现有上万条内容命中了AuxDataset,这些内容长度不等,最长的有4000多token。
作者还发现,这种攻击方法对单词提示更有效,而对多词提示则效果较差,特别是当被要求重复的词是company时,能获得到的信息是最多的。
作者使用Good-Turing估计器估计了ChatGPT中可提取记忆的总量,结论是至少有150万个独特的50-gram序列(相邻的50个token)是可提取的。
不过由于预算有限,作者表示这个估计可能低估了可提取数据的规模。
不仅是API,在正式的网页版ChatGPT中测试,也有概率得到同样的结果,说明模型之外的“系统护栏”也没能防住这波攻击。
我们简单实测了一下,发现这个漏洞到目前仍然没有被完全修复。
当重复词为“text”时,ChatGPT没有输出其他内容,但给对话起了一个奇怪的标题。
而当重复词为“company”时,ChatGPT经过三次regenerate后输出了一段疑似是ins文案的内容。
不过作者表示,这种攻击方法目前只对3.5版本奏效,GPT-4由于专门做过防泄露方面的对齐,逃过了一劫。
这种对齐在3.5版本中也有设置,但3.5的防御措施可以通过论文中展示的提示词攻击方法来绕过。
除了ChatGPT,作者也对Llama、Falcon、Mistral等开源或半开源模型进行了测试,结果发现同样存在数据泄露现象。
而越强大的模型,泄露出的数据也越多,ChatGPT泄露的数据量明显超过了其他模型。
泄露现象出现的范围也不局限在语言模型,该团队之前还从Stable Diffusion中提取了训练数据集中的约100张人物照片和其他类型的图像。
他们发现,当用训练数据集中人物的姓名做Prompt时,Stable Diffusion就会“偷懒”,直接把照片当做输出结果。
网友:还有其他攻击方法
这篇论文中提到的方式并不是孤例,还有其他攻击方法也能达到类似的结果,比如用没什么实际意义的123ABC加上简单的代码就让ChatGPT生成了一段关于臭氧层的文本。
发现者解释到,这是ChatGPT的输入清理机制的漏洞导致的,它清除了套娃式的两个<|endoftext>标签中处于内部的一个,但外部的“壳”则由于初始形态被拆开而被忽略。
作者和网友们的这些新发现,意味着ChatGPT违反了欧盟通用数据保护条例(GDPR)的规定,OpenAI可能会因此遇到麻烦。
GDPR第17条规定,数据主体(用户)有权要求控制者(模型开发者)立即删除与其有关的个人数据,也就是拥有“遗忘权”。
不过,一般个人对此也不必那么担心,因为这种攻击方式成本不低。
在这个实验中,研究者提取几MB数据,就已经花费了200美元。
那么,对于ChatGPT泄露数据这件事,你有什么看法?
论文地址: https://arxiv.org/abs/2311.17035
参考链接: [1]https://not-just-memorization.github.io/extracting-training-data-from-chatgpt.html [2]https://stackdiary.com/chatgpts-training-data-can-be-exposed-via-a-divergence-attack/
— 完 —