阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

ChatGPT 出现重大 Bug、7 天还未完全修复, OpenAI 直指 Redis 开源库错误导致

  • 2023-03-28
    北京
  • 本文字数:3612 字

    阅读完需:约 12 分钟

ChatGPT 出现重大 Bug、7天还未完全修复, OpenAI 直指 Redis 开源库错误导致

近日,许多 ChatGPT 用户称,自己在使用 ChatGPT 时看到其他人的聊天查询列出现在了自己的历史记录中。

 

“这个应用程序正在向我显示其他人的聊天记录和内容。我没有输入任何这些提示或问题。”有推特网友称。这意味着,完全陌生的人可以使用不同的帐户查看别人的历史记录,而无需执行任何不同的操作。另外还有一些用户称自己看不到完整的聊天记录,但是可以看到对话标题。

 


该问题最早是在 3 月 20 日发现。不久后,OpenAI 将 ChatGPT 下线并调查问题,但没有立即提供导致中断的详细信息。

 

OpenAI 首席执行官 Sam Altman 在 3 月 23 日在推特上致歉,“由于开源库中的错误,我们在 ChatGPT 中遇到了一个重大问题,现在已经发布了修复程序,我们刚刚完成验证。一小部分用户能够看到其他用户对话历史的标题。我们对此感到很抱歉。”

 

次日,OpenAI 正式发布声明解释了该问题发生的原因。OpenAI 称这个错误是由 Redis 开源库中的一个错误导致的。如果两个用户差不多同时活跃,那么新创建对话的第一条消息也可能在另一个用户的聊天记录中可见。

 

另外,这个 Bug 可能导致了 1.2% ChatGPT Plus 用户的支付相关信息在无意中被泄露。一些用户可以看到另一个活跃用户的姓名、电子邮件地址、支付地址、信用卡号码的后四位数字(仅限)和信用卡到期日期。OpenAI 强调,完整的信用卡号码在任何时候都没有被曝光。

 

在声明中,OpenAI 表示“该错误现已修补”。但根据软件安全公司 Sonatype 的说法,尽管 Redis 在 4.5.3 版本和一些反向移植中发布了修复程序,但测试人员仍然能够重现该问题,因此认定其还未修复 Bug。

 

到底发生了什么?

 

根据 OpenAI 的说法,这个错误是在 Redis 客户端开源库 redis-py 中发现的。OpenAI 发现该错误后联系了 Redis 维护者并提供了一个补丁来解决这个问题。

 

OpenAI 在服务器中使用 Redis 缓存用户信息,因此不需要为每个请求检查数据库。 OpenAI 使用 Redis Cluster 将此负载分布到多个 Redis 实例上,并使用 redis-py 库来连接 Python 服务器中的 Redis ,该服务器使用 Asyncio 运行。这个库在服务器和集群之间维护一个共享连接池,并在完成后回收连接以用于处理另一个请求。

 

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

 

如果被推送到传入队列后请求被取消,但在响应从传出队列弹出之前可以看到一个 Bug:连接因此损坏,并且为无关请求退出队列的下一个响应可以接收到留在连接中的数据。

 

在大多数情况下,这会导致不可恢复的服务器错误,用户将不得不再次尝试进行请求。 但在某些情况下,损坏的数据恰好与请求者期望的数据类型相匹配,因此从缓存中返回的数据看起来是有效的,即使它属于另一个用户。

 

在太平洋时间 3 月 20 日星期一凌晨 1 点,OpenAI 团队无意中对服务器进行了更改,导致 Redis 请求取消数量激增,也使得每个连接返回错误数据的概率很小。

 

OpenAI 表示,此错误仅出现在 Redis Cluster 的 Asyncio redis-py 客户端中,现已修复。事故发生后,OpenAI 为改进系统采取了以下措施:

 

  • 对潜在 Bug 进行了大规模测试和修复。

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

  • 以编程方式检查了日志,以确保所有消息仅对正确的用户可用。

  • 关联了多个数据源来准确识别受影响的用户,以便通知相关用户。

  • 改进了日志记录,用以识别何时发生并完全确认它已停止。

  • 提高了 Redis 集群的稳健性和规模,减少在极端负载情况下出现连接错误的可能性。

 

官方声称修复 Bug 后,安全研究员 Gal Nagli 在推特上补充称,每当用户登录 ChatGPT,OpenAI 的应用程序都会从​​服务器获取用户的帐户上下文,如电子邮件、名称、图像和 accessToken,如下图所示:

 


Nagli 表示,“在高级视图中,该漏洞非常简单,如果设法强制负载均衡器将请求缓存在特定路径上,我们将能够从缓存的响应中读取受害者的敏感数据。在这种情况下,漏洞不会直接发生。为了让漏洞发挥作用,我们需要让 CF-Cache-Status 响应以确认缓存的‘HIT’,这意味着它缓存了数据,并将提供给跨同一区域的下一个请求。我们收到‘动态’响应,不会缓存数据。”

 

Nagli 称,要实现这一点,首先要创建一个特别设计的链接,将.CSS 资源附加到 "chat.openai[.]com/api/auth/session/"中,并诱骗受害者点击链接,这会让包含 accessToken 字符串的 JSON 对象被缓存在 Cloudflare 的 CDN 中。对 CSS 资源(CF-Cache-Status 头值设置为 HIT)的缓存响应然后被攻击者滥用,以获取目标的 JSON Web Token (JWT)凭据并接管帐户。

 

Nagli 说道,OpenAI 负责任地在披露后两小时内修复了这个 Bug,表明了问题的严重性。

 

Sonatype 认为,这背后是 Redis 的并发竞争问题。 Redis 团队也是对 AsyncIO 竞争条件(#2624、#2579)进行了紧急修复,但问题并没有完全解决。

 

开源软件担责吗?

 

对于 OpenAI 给出的解释,有开发者表示,“将责任推给开源可不是个好主意。”

 

“将闭源产品的错误归咎于开源库是不公平的。MIT 许可的依赖项明确表示没有任何保证。毕竟,在 ChatGPT 施加压力之前,该错误并未引起注意,而且是 ChatGPT 未能在其发布前的 QA 测试中排除该错误。”网友“abujazar”说道。

 

abujazar 认为,考虑到 OpenAI 本身在尽可能地封闭源代码,他们在声明的第一行中提到开源软件是他们中断的原因似乎有些不合适。“我认为开源作为生命的开场白,而对 Redis 团队的致谢出现在最后一行并不是巧合。许多软件工程以外的人可能会将此解读为‘开源导致 OpenAI 崩溃’。”

 

注:OpenAI 在声明的最后写道:Redis 开源维护者是出色的合作者,他们迅速解决了错误并推出了补丁。Redis 和其他开源软件在我们的研究工作中发挥着至关重要的作用。它们的重要性不可低估——如果没有 Redis,我们将无法扩展 ChatGPT。我们致力于不断支持和贡献 Redis 社区。

 

“如果 OpenAI 试图让 Redis 承担潜在的法律责任,我会非常愤怒。”有网友表示。

 

网友“YPPH”表示,“如果有人要求 ChatGPT 生成一些代码,然后不假思索地将其复制并粘贴到他们的项目中,我想知道 OpenAI 会如何看待这种说法:该错误是 ChatGPT 生成的错误代码造成的。”

 

不过也有一些网友表示,OpenAI 并没有责怪任何人,他们只是客观地表明了是那个库中的一个错误导致了问题。

 

开发者“random_cynic”表示,“讽刺的是,这种疯狂的言论对开源开发者的形象造成了比 OpenAI 或任何新闻稿更大的伤害。提到导致 Bug 的开源库是很重要的,因为许多其他使用它的应用程序可能也会发生这种情况。这基本上是开源的要点之一。

 

OpenAI,道阻且长

 

这次事件也引发了其他用户吐槽此前遇到的 Bug。“这让我想起了我遇到的第一个 Bug:通过 yahoo messenger 向自己发送一个 </html> 标签,你会随机得到一个从其他人和它的目标用户发回给你的消息对话。”网友“Greg Linares (Mantis)”表示。

 

“我有那个错误的变体,它在 0x45 (iirc) 的协议处理程序中允许用户注入格式错误的字符,并且会从消息流中泄漏,发生一次就为其他用户发送一条消息。”有网友表示,当其使用提示写出一些 React 代码时,已经发生了几次这样的错误。“它一直在提示超时,然后突然间我看到了其他人的提示。它们每次都不一样。”

 

Cyber​​haven 首席执行官 Howard Ting 表示,“数据从本地迁移到云端,下一个重大转变将是将数据迁移到这些生成的应用程序中。” 这个转变中的数据安全问题也越来越引起人们的重视。

 

员工越来越多地将敏感的业务数据和隐私信息提交给 ChatGPT,比如有高管将公司的 2023 年战略文件剪切并粘贴到 ChatGPT 中,并要求它创建一个 PowerPoint 幻灯片。但 OpenAI 是否会将这些数据整合到模型中还没有明确的表示。

 

在最近的一份报告中,数据安全服务 Cyber​​haven 检测到并阻止了其客户公司 160 万名员工中 4.2% 的人将数据输入 ChatGPT 的请求,因为存在泄露机密信息、客户数据、源代码或监管信息的风险。目前,摩根大通已经限制员工使用 ChatGPT,亚马逊、微软和沃尔玛也已向员工发出警告,要求员工谨慎使用生成式 AI 服务。

 

但上述问题并没有影响 OpenAI 的发展。不久前,OpenAI 宣布正式上线了以安全为核心的 ChatGPT 插件系统,ChatGPT 可以连接到第三方应用程序,与开发人员定义的 API 进行交互,从而增强自己的功能并允许其执行范围广泛的操作。

 

随着 OpenAI 生态的不断发展和扩大,OpenAI 必须做好应用安全运行的各方面工作。

 

参考链接:

https://news.ycombinator.com/item?id=35267569#35270165

https://blog.sonatype.com/openai-data-leak-and-redis-race-condition-vulnerability-that-remains-unfixed

https://www.bleepingcomputer.com/news/security/openai-chatgpt-payment-data-leak-caused-by-open-source-bug/

https://openai.com/blog/march-20-chatgpt-outage#technical-details

https://www.darkreading.com/risk/employees-feeding-sensitive-business-data-chatgpt-raising-security-fears

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-03-28 15:275787

评论 1 条评论

发布
用户头像
技术细节可以参考文章
解密ChatGPT 数据泄露:Redis Bug 的深度分析
https://selfboot.cn/2023/08/02/redis_python_bug/
2023-08-03 09:48 · 广东
回复
没有更多了
发现更多内容

火山引擎DataTester分享:A/B实验中常见的8个错误

字节跳动数据平台

NFT元宇宙链游系统开发逻辑分析

Congge420

区块链 NFT链游 元宇宙链游

教你使用Feign替换RestTemplate

做梦都在改BUG

融云跨平台 SDK 自动生成技术的探索和实践

融云 RongCloud

sdk 融云 办公效率 通讯 图片资源

IPP Swap孵化器/LP挖矿系统开发方案

Congge420

区块链 ipfs挖矿用什么app

【源码分析】【netty】FastThreadLocal为什么快?

如果晴天

源码分析 Netty 多线程 并发 netty

开源7天Github斩获4.5万Stars!阿里2023版高并发设计实录鲨疯了

做梦都在改BUG

Java 架构 微服务 系统设计 高并发

吉林省网络安全等级测评机构有哪些?在哪里?

行云管家

网络安全 等级保护 吉林

量化交易系统开发——现货策略

薇電13242772558

量化策略

ChatGPT系统开发AI人功智能方案

Congge420

AI Gallery ChatGPT 人工智能ChatGPT 吗?

知识拷问:工作站和服务器哪个更适合做CST电磁仿真?

思茂信息

仿真软件 cst cst使用教程 cst电磁仿真 cst仿真软件

Makefile常用命令详解

小万哥

c++ 程序员 面试 后端 makefile

城市开发者平台:程序员成长和创新的“家园”

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

SaaS 产品如何选择设计协作工具?

CODING DevOps

敏捷 设计 SaaS CoDesign 团队协作工具

DevOps 的道术法器,探寻 DevOps “立体化”实践之旅

CODING DevOps

DevOps 软件工程 CODING DevOps

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

测试人

Python 软件测试 测试开发 数据类型

行业分析| 快对讲-融合会议的应用

anyRTC开发者

音视频 视频会议 快对讲 融合会议 电话会议

数字城市发展下的技术趋势,你了解多少?

没有用户名丶

什么是微信朋友圈广告?朋友圈广告怎么投放?怎么收费的?

陈老师讲创业

互联网广告 广告业 微信朋友圈 朋友圈

实践「容器镜像扫描」,Get 云原生应用的正确打开方式

极狐GitLab

Docker DevOps 云原生 DevSecOps 容器镜像

软件测试丨Python学习笔记之内置库科学计算、日期与时间处理

测试人

Python 软件测试 测试开发

如何用一行代码实现监测 OpenAI,大幅提升使用体验

Yestodorrow

可观测性 用户体验 应用性能 ChatGPT

车载手势识别技术:未来交通的革命性解决方案

来自四九城儿

厚积薄发|迭代为什么叫冲刺?

CODING DevOps

DevOps 敏捷 软件工程

一文掌握 Go 并发模式 Context 上下文

陈明勇

Go golang 后端 Context 上下文

Python从0到1丨图像增强的顶帽运算和底帽运算

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

AE插件 真实地图路径绘制GEOlayers 3 Mac v1.5.7

真大的脸盆

Mac Mac 软件 AE插件 地图路径插件

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

华秋PCB

电磁 电路 处理器 控制器 抗干扰

火山引擎DataLeap:3步打造“指标管理”体系,幸福里数据中心是这么做的

字节跳动数据平台

大数据 字节跳动 数据管理 指标管理 数据研发

架构实战-毕业设计

程序员小张

「架构实战营」

LP流动性挖矿/算力系统开发源码搭建

Congge420

区块链 系统开发 云算力挖矿系统开发详解 云算力模式系统开发源码

ChatGPT 出现重大 Bug、7天还未完全修复, OpenAI 直指 Redis 开源库错误导致_语言 & 开发_褚杏娟_InfoQ精选文章