当前位置:首页 » 生活资讯 » 正文

ChatGPT聊天记录爆巨大漏洞,OpenAI公布相关Redis缓存技术实现细节

2023年3月26日 12:15:03  分类: 生活资讯  参与: 人  点这评论


OpenAI公司在本周早些时候将ChatGPT下线,因为一个开源库中的漏洞允许一些用户看到另一个活跃用户的聊天历史记录标题。如果两个用户在同一时间活跃,也可能会在某人的聊天历史记录中看到新创建的对话的第一条消息。
目前该漏洞现已修复。官方已经成功恢复了ChatGPT服务,以及稍后的聊天历史记录功能,但有少量历史记录无法恢复。以下是技术实现细节
技术实现细节

图片

该漏洞是在Redis客户端开源库redis-py中发现的,以下是该漏洞的工作原理:

  • OpenAI使用 Redis 将用户信息缓存到服务器上,这样就不需要为每个请求查询数据库。

  • 使用 Redis Cluster 来分发这个负载到多个 Redis 实例上。

  • 使用 redis-py 库来在Python 服务器上与 Redis 进行接口交互,该服务器使用 Asyncio 运行。

  • 该库在服务器和集群之间维护共享连接池,并在完成后将连接回收以供另一个请求使用。

  • 使用 Asyncio 时,redis-py 的请求和响应行为就像是两个队列:调用者将请求推入传入队列,然后从传出队列中弹出响应,然后将连接返回到池中。

  • 如果在将请求推入传入队列之后,但在从传出队列中弹出响应之前取消了请求,我们就会遇到错误:连接因此变得损坏,为非关联请求接收到遗留在连接中的数据的下一个响应。

  • 在大多数情况下,这会导致无法恢复的服务器错误,用户必须再次尝试其请求。

  • 但在某些情况下,损坏的数据恰好与请求者所期望的数据类型相匹配,因此返回缓存的内容似乎有效,即使它属于另一个用户。

  • 在太平洋时间 3 月 20 日星期一凌晨 1 点,OpenAI公司无意中对服务器进行了更改,导致 Redis 请求取消激增。这为每个连接返回错误数据创造了一定的概率。

  • 此错误仅在 Asyncio redis-py 客户端对 Redis Cluster 中出现,现已得到修复。

根据官方消息,目前已采取以下行动来改进系统:
  • 对基础 bug 进行了广泛的测试。

  • 添加了冗余检查,以确保 Redis 缓存返回的数据与请求用户匹配。

  • 通过程序化地检查日志,确保所有消息仅对正确的用户可用。

  • 相关多个数据源,精确定位受影响的用户,以便通知他们。

  • 改进日志记录,以确定何时发生此问题,并完全确认已停止。

  • 提高 Redis 集群的鲁棒性和扩展性,以减少极端负载下的连接错误发生的可能性。


来源:时间去哪儿了博客(微信/QQ号:903918446),转载请保留出处和链接!

本文链接:http://timegowhere.com/post/chatgpt-march-20-chatgpt-outage.html

本文标签:ChatGPT    

<< 上一篇下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关文章

    搜索

    网站分类

    Tags列表

    最新留言

    微信公众号【双语悦读】

      【个人微信】

    站点地图 | 网站标签 | 给我留言

    Copyright © 2014-2022 timegowhere.com. All rights reserved. 粤ICP备15081222号