ChatGPT4.0自问世以来就被网友亲切称呼“yyds”——永远的神。试用过它的人无一例外都被它所圈粉,“它真的太方便了,写代码、写周报、写文案,无所不能。”
意想不到的是,哪怕是AI届也能塌房。一直以来被号称“完美”的GPT-4近期因为泄漏其他用户的聊天记录而瞬间跌下神坛。不少网友开始清醒过来,对ChatGPT的安全性提出了质疑。
事件起因
事情是这样的:
就在上周末,在Reddit(一个社交新闻站点)上,有用户称:打开ChatGPT网页时,在聊天记录栏里发现了很多陌生的对话内容。随后评论里便出现了很多情况相同的人,而推特上,一名用户也发文反映了该情况。一时间,大批量用户都出现了这样的BUG,不禁引起了他们的担心和疑惑。
事态逐渐愈演愈烈,OpenAI终于不得不紧急关闭ChatGPT并出面证实了这个问题:是一个“未命名的开源软件中的 Bug”导致了这个问题,OpenAI 仍在调查确切原因。
OpenAI公开BUG原因
经过几天的排查,直至昨日,OpenAI才正式公开了导致此次事件的原因,是开源库 Redis 中的一个 Bug 才导致了 ChatGPT 服务暴露了其他用户的个人信息和聊天标题。
这究竟是怎么一回事,我们将通过 OpenAI 的官方公告了解事情的始末原由。
为什么会出现这种状况?OpenAI 详细说道,该错误是在 Redis 客户端开源库 redis-py 中发现的。以下是 Bug 的工作原理:
- OpenAI 使用 Redis 在其服务器中缓存用户信息,因此他们不需要为每个请求检索一遍数据库。
- 该团队使用 Redis Cluster 将此负载分布到多个 Redis 实例中。
- OpenAI 使用 redis-py 库,从基于 Asyncio 运行的 Python 服务器与 Redis 交互。
- 该库在服务器和集群之间维护一个共享连接池,并在完成后回收连接以用于另一个请求。
- 当使用 Asyncio 时,redis-py 的请求和响应表现为两个队列:调用者将请求推送到传入队列,然后从传出队列弹出响应,并将连接返回到池中。
- 如果在请求被推送到传入队列之后,但在响应从传出队列中弹出之前,请求被取消,OpenAI 便可以看到错误所在:连接因此被破坏,下一个为不相关的请求去排队的响应可以接收连接中留下的数据。
- 在大多数情况下,这会导致不可恢复的服务器错误,用户将不得不再次尝试他们的请求。
- 但在某些情况下,损坏的数据恰好与请求者期望的数据类型相匹配,因此从缓存中返回的数据看起来是有效的,即使它属于另一个用户。
- 太平洋时间 3 月 20 日星期一凌晨 1 点,OpenAI 无意中对服务器进行了更改,导致 Redis 请求取消数量激增。这为每个连接返回错误数据带来了一个小概率事件。
OpenAI 表示这个错误会带来一些其他的影响,比如可能导致部分订阅者无意中看到了别人的支付相关的信息,包括另一个活跃用户的名字和姓氏、电子邮件地址、支付地址、信用卡号的最后四位(仅)和信用卡到期时间日期。
OpenAI 称已经联系受影响的用户并通知他们的付款信息可能已被泄露。同时,团队也添加了冗余检查,确保 ChatGPT 应用程序的 Redis 缓存返回的数据与请求用户匹配。
个人信息需谨慎
就在这次事件中,OpenAI还发现了另一个关键的财户接管漏洞。
该漏洞绕过了 OpenAI 在 chat.openai[.]com 上实施的保护措施,可以被利用来控制另一个用户的帐户,查看他们的聊天记录,并在他们不知情的情况下访问账单信息。
安全研究员 Gal Nagli是最先发现该BUG的人,并表示OpenAI 在负责任的披露后不到两小时就修复了该漏洞,表明了问题的严重性。
END
OpenAI出现的问题,在互联网行业中,并不是头一起事件。随着人类工作生活使用人工智能的频次越来越高,AI安全问题也应该成为我们在当下及未来相当长一段时间应该重视的问题。
今日话题
「你觉得网络安全应该如何保障?」
欢迎在评论区说出你的感受
还想看什么?速速留言