首页 >>  正文

redis中文网

来源:baiyundou.net   日期:2024-09-21

作者 | 屠敏

出品 | CSDN(ID:CSDNnews)

ChatGPT 的火爆,超出了很多人的想象。今年初,根据 UBS(瑞士银行巨头瑞银集团)的一份报告显示,ChatGPT 推出仅两个月后,它在 2023 年 1 月末的月活用户已经突破了 1 亿,成为史上用户数增长最快的消费者应用。

不过,就是这样一款应用,最近却被推上风口浪尖,只因不少用户发现自己竟然可以看到别人与 ChatGPT 的聊天记录。

聊天信息被看光了可还行?

这导致 OpenAI 曾一度选择紧急关闭 ChatGPT。经过几天的排查,直至近日,OpenAI 正式公开了此次事件的技术原因,其表示,是开源库 Redis 中的一个 Bug 才导致了 ChatGPT 服务暴露了其他用户的个人信息和聊天标题。

而这究竟是怎么一回事,我们将通过 OpenAI 的官方公告了解事情的真相。

事件始末

在上周,CSDN 报道过此事,彼时有一位 Reddit 用户率先发现,在与 ChatGPT 聊天记录栏中,多出了许多陌生的对话标题,这也让他产生了“ChatGPT 或我是被黑了吗?”的错觉。

没想到的是,这条帖子迅速引发了多人的关注,也有很多用户在下方留言称自己也遇到了同样的问题,一位 Twitter 用户 Jordan L Wheeler 表示:“我看不到内容,但可以看到他们最近的对话标题。”

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 表示,这个错误只出现在 Redis Cluster 的 Asyncio redis-py 客户端中,在发现的第一时间,便联系了 Redis 维护者,现已修复。

不过,OpenAI 也承认这个错误会在其他地方带来一些影响,比如可能导致 1.2% 的 ChatGPT Plus 订阅者在特定的 9 小时(太平洋时间 3 月 20 日星期一凌晨 1 点到 10 点)无意中看到了别人与支付相关的信息,包括会看到另一个活跃用户的名字和姓氏、电子邮件地址、支付地址、信用卡号的最后四位(仅)和信用卡到期时间日期。

OpenAI 称已经联系受影响的用户并通知他们的付款信息可能已被泄露。同时,该研发团队也添加了冗余检查以确保 ChatGPT 应用程序的 Redis 缓存返回的数据与请求用户匹配。

OpenAI 也修复了关键账户接管漏洞

在另一个与缓存相关的问题中,OpenAI 还解决了一个关键的帐户接管漏洞。

该漏洞最初由安全研究员 Gal Nagli 发现,它绕过了 OpenAI 在 chat.openai[.]com 上实施的保护措施,可以被利用来控制另一个用户的帐户,查看他们的聊天记录,并在他们不知情的情况下访问账单信息。

实现这一目标的方法是,首先创建一个特制的链接,将一个 .CSS 资源加载到 "chat.openai[.]com/api/auth/session/"端点上,并诱使用户点击该链接,导致包含有 accessToken 字符串的 JSON 对象的响应被缓存在 Cloudflare 的 CDN 中。

对 CSS 资源的缓存响应(其 CF-Cache-Status header 值设置为HIT)然后被攻击者滥用,以收获目标的 JSON Web Token(JWT) 凭证并接管账户。

Nagli 表示,OpenAI 在负责任的披露后两小时内就修复了该漏洞,表明了问题的严重性。

开源维护者是否要为商业公司的使用负责到底?

不过,虽然 OpenAI 在公告中一直强调,“Redis 开源维护者是出色的合作者,他们迅速解决了错误并推出了补丁。Redis 和其他开源软件在我们的研究工作中发挥着至关重要的作用。它们的重要性不可低估——如果没有 Redis,我们将无法扩展 ChatGPT。”

但是,对于 ChatGPT 具备捉 Bug 能力,却避免不了自己的 Bug,而且 Redis 承担主责这一情况,也引发了不少网友的讨论,甚至称「ChatGPT 惹的祸,终是要让开源软件来担着了」。

这也让很多人联想到了当初风靡全球的 Log4j 2 漏洞,以及

第三方公司在商业化产品中使用开源项目,从中赚得盆满钵满,而自己从未提供技术资金支持,当遇到问题时,又推回给开源开发者,一味“白嫖”只拿钱不办事,再次增加了开源开发者的负担。

对此,你认为开源维护者是否要为商业软件的安全问题负责到底?

","gnid":"954eb5a1b28ecaf92","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"222","title":"","url":"https://p0.ssl.img.360kuai.com/t01fa6a91e11e5a81bc.jpg","width":"1080"},{"desc":"","height":"934","title":"","url":"https://p0.ssl.img.360kuai.com/t01e3c363ae02193e38.jpg","width":"1080"},{"desc":"","height":"267","title":"","url":"https://p0.ssl.img.360kuai.com/t01f9e8809730232d1c.jpg","width":"729"},{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee.gif","width":"960"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1680082751000,"pure":"","rawurl":"http://zm.news.so.com/6567e1185dc12807bcc3c3d01c75f3f4","redirect":0,"rptid":"e9faa44923c23d92","rss_ext":[],"s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:聊天记录","k":"聊天记录","u":""}],"title":"ChatGPT 修得了别人的 Bug,修不了自己的!OpenAI 直指开源数据库 Redis 漏了底

狄鸿杨4750Redis如何通过本机客户端访问远程服务器段 -
訾虞支13023434308 ______ 1、Redis默认端口号为127.0.0.1,端口号默认为:6379.2、假如本机访问远程IP为132.1.114.44的计算机,则首先要在已经安装了Redis的远程计算机上打开其服务器,redis.server.exe3、接下来在本机运行redis.cli.exe,也可以通过命令行实现:输入-h 远程计算机IP -p 6379即可连接:4、接下来如果想用自己写的客户端什么的连接远程Redis数据库也只需要输入远程计算机的IP就可以了.

狄鸿杨4750如何在.Net中使用Redis -
訾虞支13023434308 ______ Redis安装与启动1.下载RedisRedis本身没有提供Windows版本的,并且在Windows上也不太稳定,一般都将其部署到Linux环境下,Redis可以在其官网上下载,MSOpenTech中提供了Windows版本,这里为了学习安装这一版本.点击跳转到...

狄鸿杨4750Redis非关系性数据库有什么特点? -
訾虞支13023434308 ______ 从以下几点来介绍一下redis:1,redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存...

狄鸿杨4750redis网络丢包怎么解决 -
訾虞支13023434308 ______ redis 常见问题与处理方法1.VIP:port 提供服务:唯一标记一个redis实例的是ip和端口,前端是用tcp方式来访问redis的,我们提供给应用访问的是一个vip+63379(一般使用63379) 端口,,vip一定是在master上面的.因此我们执行如下命令检查...

狄鸿杨4750redis windows怎么使用 -
訾虞支13023434308 ______ 1、下载Windows版本的redis,官网有提供下载说明,如图:2、点击“Learn more”进去即可进入GitHub上的下载页面:3、点击图中右上角那个绿色的那个按钮进行克隆或者下载,这里选择下载,完成后是一个压缩包:4、将压缩文件解压到特定的目录,解压后如下:5、其中redis-cli.exe是客户端,redis-server.exe是服务端,先点击服务端执行文件,执行后如图:6、服务端启动后,即可点击客户端启动进行使用了:学习书籍参考:《Redis入门指南》(第2版)

狄鸿杨4750windows 怎么安装redis -
訾虞支13023434308 ______ 你好,先下载redis,找到下载的压缩包 redis-64.3.0.503.zip,解压后,重命名为redis-3.0,置于某个文件夹下(如D:\Program Files).1. 运行Redis服务器端 直接双击D:\Program Files\redis-3.0目录下的redis-server.exe文件(redis服务器端),...

狄鸿杨4750redis中怎么备份数据 -
訾虞支13023434308 ______ Redis SAVE 命令用于创建当前数据库的备份 下面建立一个set集合,然后备份,删除集合中"if exists , i can backup"值,再恢复,当看到"ifexists , i can backup"值时,说明则说明备份和恢复都成功.建立集合test_backup127.0.0.1:6379> ...

狄鸿杨4750如何解决class redis'not found 这个错 -
訾虞支13023434308 ______ 解决这一类错误,大部分都有一个共同点.例如下面这个错误1. java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory添加包common-logging.jarapache对...

狄鸿杨4750windows下redis集群怎么开启 -
訾虞支13023434308 ______ 下载安装文件,选择稳定版本 w.redis.io/download 直接安装文件 github.com/msopentech/redis/ 解压后找到bin目录下的release下的redis-2.8.17 点击安装exe文件,进行安装.选择好路径,一直到安装结束即可. 点击service查看redis服务是否正...

狄鸿杨4750如何批量删除Redis下特定pattern的keys? -
訾虞支13023434308 ______ 在linux中 批量操作redis中的 keys的方法: 1.统计个数: redis中名称含有OMP_OFFLINE的key的个数; src/redis-cli keys "*OMP_OFFLINE*"|wc -l 2.批量删除 批量删除 0号数据库中名称含有OMP_OFFLINE的key: src/redis-cli -n 0 keys "*OMP_OFFLINE*"|xargs src/redis-cli -n 0 del 在redis的客户端环境中并不支持批量删除.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024