ChatGPT資料洩露,技術細節公佈

人工智慧洞察站發表於2023-03-28

出品 | OSC開源社群(ID:oschina2013)

在上週一,ChatGPT 遭遇了一次使用者資料洩漏事件,許多 ChatGPT 的使用者都在自己的歷史對話中看到了其他人的對話記錄。不光是對話的歷史記錄,不少 ChatGPT Plus 使用者還在 Reddit 和 Twitter 等平臺發出了截圖,表示在他們的訂閱頁面上看到了其他人的電子郵件地址。

ChatGPT資料洩露,技術細節公佈

事件發生後,OpenAI 臨時關閉了 ChatGPT 服務以調查問題,後續 Open AI 的執行長 Sam Altman 也親自發了推文,承認他們確實遭遇了重大問題,不過當時並沒有公佈問題的細節,只表示是一個開源庫的錯誤導致的。

ChatGPT資料洩露,技術細節公佈

由於一個開源庫的錯誤,我們在 ChatGPT 中出現了一個重大問題,現在已經發布了一個修復程式,我們剛剛完成了驗證。
一小部分使用者能夠看到其他使用者的對話歷史的標題。

經過多日的調查,OpenAI 日前釋出了一份包含技術細節的事件報告,該事件是 Redis 客戶端開源庫中的一個錯誤所引發的,導致 ChatGPT 服務暴露了其他使用者的聊天查詢歷史和大約 1.2% 的 ChatGPT Plus 使用者的個人資訊。

技術細節

這個錯誤是在 Redis 客戶端開源庫 redis-py 中發現的。發現這個 bug 後,OpenAI 就立即聯絡了 Redis 的維護者,提供了一個補丁來解決這個問題。以下是這個錯誤的具體細節:

  • OpenAI 使用 Redis 在他們的伺服器中快取使用者資訊,所以 ChatGPT 不需要為每個請求檢查資料庫。
  • OpenAI 使用 Redis Cluster 將這一負載分佈到多個 Redis 例項上。
  • OpenAI 使用 redis-py 庫,以便讓用了 Asyncio 的 Python 伺服器與 Redis 對接。
  • 該庫在伺服器和叢集之間維護一個共享的連線池,並在完成後回收連線以用於另一個請求。
  • 當使用 Asyncio 時,redis-py 的請求和響應表現為兩個佇列:呼叫者將請求推送到傳入佇列,並從傳出佇列中彈出響應,然後將連線返回到池中。
  • 如果在請求被推送到傳入佇列之後,但在響應從傳出佇列中彈出之前,請求被取消,我們就會看到錯誤:連線因此被破壞,下一個為不相關的請求出列的響應可以接收連線中留下的資料。
  • 在大多數情況下,這會導致一個無法恢復的伺服器錯誤,而使用者將不得不重新嘗試他們的請求。
  • 但在某些情況下,損壞的資料恰好與請求者所期望的資料型別相匹配,因此從快取中返回的資料看起來是有效的,即使這些資料屬於另一個使用者。
  • 在太平洋時間 3 月 20 日星期一凌晨 1 點,OpenAI 無意中給他們的伺服器引入了一個變化,導致 Redis 請求取消的情況激增。這在一定程度上引發了每個連線返回錯誤資料的可能性。
  • 這個錯誤只出現在 Redis Cluster 的 Asyncio redis-py 客戶端,現在已經被修復。

經過深入調查,OpenAI 發現一些使用者有可能看到其他活躍使用者的姓名、電子郵件地址、賬單地址、信用卡號碼的最後四位數和信用卡到期日,OpenAI 特別強調道,完整的信用卡號碼並沒有暴露。

這部分受影響的使用者佔 ChatGPT Plus 使用者總數的 1.2%,目前他們正在聯絡了所有受影響的 ChatGPT 使用者。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027828/viewspace-2942072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章