ChatGPT服务曝光部分用户隐私,OpenAI积极应对并发布事件报告
文章主题:开源社区, ChatGPT, 服务错误, Redis 客户端
出品 | OSC开源社区(ID:oschina2013)
上周一下载了ChatGPT的众多用户在自己的历史对话中突然发现了他人对话记录的显示。这不仅限于对话记录,更有部分ChatGPT Plus用户在Reddit和Twitter等社交平台上晒出了相关截图,声称在他们的订阅页面中出现了他人的电子邮件地址信息。
在事件发生之后,OpenAI 暂时关闭了 ChatGPT 服务,以便对其进行调查。不久之后,OpenAI 的首席执行官 Sam Altman 也通过社交媒体发布了一则声明,承认他们确实遇到了严重的问题。尽管如此,当时并未公开问题的具体细节,仅仅是表示该问题源于一个开源库的错误。
由于一个开源库的错误,我们在 ChatGPT 中出现了一个重大问题,现在已经发布了一个修复程序,我们刚刚完成了验证。 一小部分用户能够看到其他用户的对话历史的标题。
在经过多天的详尽调查之后,OpenAI 近日公布了一份详尽的报告,其中包含有关技术方面的深入剖析。这份报告主要关注于 Redis 客户端开源库的一个错误,这个错误导致了 ChatGPT 服务的暴露。更为糟糕的是,此事件使得其他用户的聊天记录查询历史以及约 1.2% 的 ChatGPT Plus 用户的个人信息面临泄露的风险。
技术细节
在Redis客户端开源库redis-py中,我发现了一个错误。在报告这个问题之后,OpenAI迅速与Redis的维护者进行了联系,并提供一个修复方案来解决此问题。关于这个错误的详细信息如下:
OpenAI利用Redis在服务器端实现用户信息的缓存,从而使得ChatGPT在处理每个请求时无需额外查询数据库。通过这种方式,OpenAI有效地提高了系统的响应速度和性能表现。
OpenAI 使用 Redis Cluster 将这一负载分布到多个 Redis 实例上。
OpenAI 采用了 redis-py 库,以便实现 Asyncio 基于异步 I/O 的 Python 服务器与 Redis 的高效对接。
该库在服务器和集群之间维护一个共享的连接池,并在完成后回收连接以用于另一个请求。
在应用 Asyncio 的情况下,redis-py 的请求与响应呈现出一种独特的双队列模式:调用方会将请求放入输入队列,接着从输出队列中取出响应,最后将连接返回至连接池。
在请求被加入到处理队列之后,但在此过程中,若请求被取消,我们将观察到错误:连接从而遭受破坏。在这种情况下,后续的一个不相关请求会接收到之前连接所保留的数据。
在大多数情况下,这会导致一个无法恢复的服务器错误,而用户将不得不重新尝试他们的请求。
但在某些情况下,损坏的数据恰好与请求者所期望的数据类型相匹配,因此从缓存中返回的数据看起来是有效的,即使这些数据属于另一个用户。
在太平洋时间 3 月 20 日星期一凌晨 1 点,OpenAI 无意中给他们的服务器引入了一个变化,导致 Redis 请求取消的情况激增。这在一定程度上引发了每个连接返回错误数据的可能性。
这个错误只出现在 Redis Cluster 的 Asyncio redis-py 客户端,现在已经被修复。
经过深入调查,OpenAI 发现一些用户有可能看到其他活跃用户的姓名、电子邮件地址、账单地址、信用卡号码的最后四位数和信用卡到期日,OpenAI 特别强调道,完整的信用卡号码并没有暴露。
这部分受影响的用户占 ChatGPT Plus 用户总数的 1.2%,目前他们正在联系了所有受影响的 ChatGPT 用户。
开源社区, ChatGPT, 服务错误, Redis 客户端
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!