当前位置: 网站首页 技术文章 正文

ChatGPT数据泄露,技术细节发布

来源:互联网 发布时间:2024-06-28 03:52:05

上周一,ChatGPT遭遇用户数据泄露,很多ChatGPT用户在自己的历史对话中看到了别人的对话。不仅是对话的历史,很多ChatGPT Plus用户还在Reddit、Twitter等平台发了截图,表示在自己的订阅页面上看到过别人的邮箱地址。

ChatGPT数据泄露,技术细节公布

事件发生后,Open AI暂时关闭了ChatGPT服务来调查问题。后来,OpenAI的CEO萨姆·奥特曼亲自发推特表示,他们确实遇到了一个重大问题,但当时并没有公布问题的细节,只说是由一个开源库的错误引起的。

ChatGPT数据泄露,技术细节公布

由于一个开源库中的错误,我们在ChatGPT中遇到了一个重大问题,现在已经发布了一个修复程序,我们刚刚完成了验证。

少数用户可以看到其他用户对话历史的标题。

经过多日的调查,OpenAI近日发布了一份包含技术细节的事件报告,该事件由Redis客户端开源库出现错误引发,导致ChatGPT服务暴露了其他用户的聊天查询历史,以及约1.2% ChatGPT Plus用户的个人信息。

技术细节

这个错误是在Redis客户端开源库redis-py中发现的。发现这个bug后,OpenAI立即联系了Redis的维护者,并提供了解决这个问题的补丁。以下是该错误的详细信息:

OpenAI 使用 Redis 在他们的服务器中缓存用户信息,所以 ChatGPT 不需要为每个请求检查数据库。OpenAI 使用 Redis Cluster 将这一负载分布到多个 Redis 实例上。OpenAI 使用 redis-py 库,以便让用了 Asyncio 的 Python 服务器与 Redis 对接。该库在服务器和集群之间维护一个共享的连接池,并在完成后回收连接以用于另一个请求。当使用 Asyncio 时,redis-py 的请求和响应表现为两个队列:调用者将请求推送到传入队列,并从传出队列中弹出响应,然后将连接返回到池中。如果在请求被推送到传入队列之后,但在响应从传出队列中弹出之前,请求被取消,我们就会看到错误:连接因此被破坏,下一个为不相关的请求出列的响应可以接收连接中留下的数据。在大多数情况下,这会导致一个无法恢复的服务器错误,而用户将不得不重新尝试他们的请求。但在某些情况下,损坏的数据恰好与请求者所期望的数据类型相匹配,因此从缓存中返回的数据看起来是有效的,即使这些数据属于另一个用户。在太平洋时间3月20日星期一凌晨1点,OpenAI 无意中给他们的服务器引入了一个变化,导致 Redis 请求取消的情况激增。这在一定程度上引发了每个连接返回错误数据的可能性。这个错误只出现在 Redis Cluster 的 Asyncio redis-py 客户端,现在已经被修复。

经过深入调查,OpenAI发现,一些用户可能会看到其他活跃用户的姓名、电子邮件地址、账单地址、信用卡号码的后四位数字以及信用卡的有效期。OpenAI特别强调完整的信用卡号码没有被暴露。

这些受影响的用户占ChatGPT Plus用户总数的1.2%,他们目前正在联系所有受影响的ChatGPT用户。

相关教程