漏洞細節披露:ChatGPT出現了用戶信息泄露
本文來自微信公眾號: 浮之靜(ID:fuzjing) ,作者:lencx,原文標題:《嚴重漏洞:導致 1.2% ChatGPT Plus 用戶部分信息泄露》,頭圖來自:《冒牌天神》劇照
本周早些時候, 由于一個開源庫中的一個錯誤,ChatGPT 服務出現了嚴重的漏洞。 這個錯誤導致一些用戶可以看到另一個活動用戶聊天歷史記錄中的標題,而且新創建的對話的第一條消息也有可能會在另一個用戶的聊天歷史記錄中可見。
ChatGPT 立即下線并修復了這個錯誤,成功地恢復了服務和聊天歷史記錄功能,除了幾個小時的歷史記錄外。ChatGPT 承諾在下面發布更多有關此問題的技術細節 (查看原文:March 20 ChatGPT outage: Here’s what happened [1] ) 。
經過深入調查,ChatGPT 還發現,同樣的錯誤可能會導致1.2%的 ChatGPT Plus 訂閱用戶在特定的九個小時時間窗口內意外地看到與支付相關的信息。在周一 ChatGPT 下線 [2] 之前的幾個小時內,一些用戶可能會看到另一個活動用戶的姓名、電子郵件地址、支付地址、信用卡號碼的最后四位數字 (僅限) ,以及信用卡到期日期。完整的信用卡號碼在任何時候都沒有被公開。 ChatGPT 相信,實際上被公開給他人的用戶數據數量非常少。
為了訪問這些信息,ChatGPT Plus 訂閱用戶需要執行以下操作:在太平洋時間 3 月 20 日上午 1 點至 10 點之間收到的訂閱確認電子郵件;或者在太平洋時間 3 月 20 日上午 1 點至 10 點之間,在 ChatGPT 中點擊“我的賬戶”,然后點擊“管理我的訂閱”。
在這期間,另一個ChatGPT Plus 用戶的姓名、電子郵件地址、支付地址、信用卡號碼的最后四位數字 (僅限) 、信用卡到期日期可能會可見。ChatGPT 已經聯系受影響的用戶并通知他們可能已經泄露了他們的付款信息。ChatGPT 有信心用戶的數據不存在持續的風險。
OpenAI 的所有成員都致力于保護用戶的隱私和數據安全,這也是他們的責任。不幸地是,本周未能兌現這一承諾,未能達到用戶的期望。所以 OpenAI 團隊也再次向用戶和整個 ChatGPT 社區道歉,并將努力重建信任。
一、技術細節
該漏洞是在 Redis 客戶端開源庫 redis-py [3] 中發現的。OpenAI 一發現該漏洞,就向 Redis 維護者發送了一個修復問題的補丁。以下是該漏洞的工作原理:
-
我們使用 Redis 在服務器中緩存用戶信息,這樣我們不需要為每個請求檢查我們的數據庫。
-
我們使用 Redis Cluster 將這個負載分布到多個 Redis 實例中。
-
我們使用 redis-py 庫從我們的 Python 服務器與 Redis 進行交互,該服務器使用 Asyncio 運行。
-
該庫在服務器和集群之間維護一組共享連接池,并在完成后將連接回收以供另一個請求使用。
-
在使用 Asyncio 時,redis-py 的請求和響應行為類似于兩個隊列:調用者將請求推送到傳入隊列中,然后從傳出隊列中彈出響應,然后將連接返回給池。
-
如果在將請求推送到傳入隊列之后,但在從傳出隊列中彈出響應之前取消了請求,我們會看到我們的漏洞:連接變得損壞,下一個為不相關請求出隊列的響應可能會接收連接中留下的數據。
-
在大多數情況下,這會導致無法恢復的服務器錯誤,用戶將不得不重試他們的請求。
-
但在某些情況下,損壞的數據恰好匹配請求者所期望的數據類型,因此從緩存中返回的內容似乎是有效的,即使它屬于另一個用戶。
-
在太平洋時間 3 月 20 日星期一上午 1 點,我們不經意間引入了一項更改,導致 Redis 請求取消激增。這為每個連接返回錯誤數據創造了一個小概率。
該漏洞僅出現在 Redis Cluster 的 Asyncio redis-py 客戶端中,并已得到修復。
二、采取措施
在 OpenAI 的調查結束后,支持和通知 ChatGPT 用戶是 OpenAI 的首要任務。所以采取了以下行動來改善系統:
-
廣泛測試了我們對潛在漏洞的修復措施。
-
添加了冗余檢查,以確保我們的 Redis 緩存返回的數據與請求用戶匹配。
-
對我們的日志進行了程序化檢查,以確保所有消息只對正確的用戶可用。
-
相關幾個數據源,以精確識別受影響的用戶,以便我們通知他們。
-
改進了日志記錄,以便識別何時發生問題并完全確認問題已經停止。
-
改進了我們的 Redis 集群的強度和規模,以減少在極端負載下連接錯誤的可能性。
三、下一步計劃
Redis 開源維護者一直是 OpenAI 優秀的合作伙伴,迅速解決了漏洞并推出了補丁。Redis 以及其他開源軟件在 OpenAI 的研究工作中發揮了至關重要的作用。它們的重要性不容小視——如果沒有 Redis,OpenAI 將無法擴展 ChatGPT。OpenAI 也致力于繼續支持和貢獻給 Redis 社區。
四、思考
ChatGPT 在為人類夢想插上翅膀的同時,所需要肩負的責任也會越來越重大 (用戶隱私,數據安全是永遠無法繞開的話題) 。ChatGPT 插件的推出,讓人們看到了 AI 更大的可能性。或許正如 OpenAI 所說的,會給互聯網帶來一種新的范式 (你通過自然語言描述需求,AI 會按照你的需求來檢索內容,或者直接生成不存在的內容) 。它最先顛覆的是傳統搜索問題,檢索信息的方式,其次就是思維模式的轉變。
References:
[1]March 20 ChatGPT outage: Here’s what happened: https://openai.com/blog/march-20-chatgpt-outage
[2]周一 ChatGPT 下線: https://www.theverge.com/2023/3/21/23649806/chatgpt-chat-histories-bug-exposed-disabled-outage
[3]redis-py: https://github.com/redis/redis-py
[4]AsyncIO Race Condition Fix: https://github.com/redis/redis-py/pull/2641
[5]Off by 1 - Canceling async Redis command leaves connection open, in unsafe state for future commands: https://github.com/redis/redis-py/issues/2624
本文來自微信公眾號: 浮之靜(ID:fuzjing) ,作者:lencx