Chúng tôi đã đưa ChatGPT ngoại tuyến vào đầu tuần này do lỗi trong thư viện nguồn mở cho phép một số người dùng xem tiêu đề từ lịch sử trò chuyện của người dùng đang hoạt động khác. Cũng có khả năng tin nhắn đầu tiên của cuộc trò chuyện mới tạo đã hiển thị trong lịch sử trò chuyện của người khác nếu cả hai người dùng đều hoạt động cùng lúc.
Lỗi hiện đã được vá. Chúng tôi đã có thể khôi phục cả dịch vụ ChatGPT và sau đó là tính năng lịch sử trò chuyện của nó, ngoại trừ một vài giờ lịch sử. Như đã hứa, chúng tôi sẽ công bố thêm chi tiết kỹ thuật về vấn đề này bên dưới.
Sau khi điều tra sâu hơn, chúng tôi cũng phát hiện ra rằng lỗi tương tự có thể đã gây ra tình trạng vô tình hiển thị thông tin liên quan đến thanh toán của 1,2% người đăng ký ChatGPT Plus đang hoạt động trong một khung thời gian chín giờ cụ thể. Trong những giờ trước khi chúng tôi đưa ChatGPT ngoại tuyến vào thứ Hai, một số người dùng có thể thấy tên và họ, địa chỉ email, địa chỉ thanh toán, loại thẻ tín dụng và bốn chữ số cuối (chỉ) của số thẻ tín dụng và ngày hết hạn của thẻ tín dụng của một người dùng đang hoạt động khác . Số thẻ tín dụng đầy đủ không bị lộ vào bất kỳ lúc nào.
Chúng tôi tin rằng số lượng người dùng có dữ liệu thực sự bị tiết lộ cho người khác là cực kỳ thấp. Để truy cập thông tin này, người đăng ký tài khoản ChatGPT Plus sẽ cần thực hiện một trong những thao tác sau:
+ Mở email xác nhận đăng ký được gửi vào Thứ Hai, ngày 20 tháng 3, từ 1 giờ sáng đến 10 giờ sáng theo giờ Thái Bình Dương. Do lỗi, một số email xác nhận đăng ký được tạo trong thời gian đó đã được gửi đến người dùng không đúng. Những email này chứa loại thẻ tín dụng và bốn chữ số cuối của số thẻ tín dụng của người dùng khác, nhưng số thẻ tín dụng đầy đủ không xuất hiện. Có thể một số ít email xác nhận đăng ký đã được gửi không đúng địa chỉ trước ngày 20 tháng 3, mặc dù chúng tôi chưa xác nhận bất kỳ trường hợp nào như vậy.
+ Trong ChatGPT, hãy nhấp vào “Tài khoản của tôi”, sau đó nhấp vào “Quản lý đăng ký của tôi” từ 1 giờ sáng đến 10 giờ sáng theo giờ Thái Bình Dương vào Thứ Hai, ngày 20 tháng 3. Trong khoảng thời gian này, tên và họ, địa chỉ email, địa chỉ thanh toán, loại thẻ tín dụng và bốn chữ số cuối (chỉ) của số thẻ tín dụng và ngày hết hạn của thẻ tín dụng của một người dùng ChatGPT Plus đang hoạt động khác có thể đã được hiển thị. Có khả năng điều này cũng có thể xảy ra trước ngày 20 tháng 3, mặc dù chúng tôi chưa xác nhận bất kỳ trường hợp nào về điều này.
Chúng tôi đã liên hệ để thông báo cho người dùng bị ảnh hưởng rằng thông tin thanh toán của họ có thể đã bị lộ. Chúng tôi tin tưởng rằng không có rủi ro nào đang diễn ra đối với dữ liệu của người dùng.
Mọi người tại OpenAI đều cam kết bảo vệ quyền riêng tư của người dùng và giữ an toàn cho dữ liệu của họ. Đây là trách nhiệm mà chúng tôi vô cùng coi trọng. Thật không may, tuần này chúng tôi đã không thực hiện được cam kết đó và không đáp ứng được kỳ vọng của người dùng. Chúng tôi xin lỗi một lần nữa đến người dùng và toàn thể cộng đồng ChatGPT và sẽ nỗ lực hết sức để xây dựng lại lòng tin.
Chi tiết kỹ thuật
Lỗi này được phát hiện trong thư viện mã nguồn mở của máy khách Redis, redis-py. Ngay sau khi xác định được lỗi, chúng tôi đã liên hệ với những người bảo trì Redis để vá lỗi. Sau đây là cách lỗi hoạt động:
+ Chúng tôi sử dụng Redis để lưu trữ thông tin người dùng trên máy chủ nên không cần phải kiểm tra cơ sở dữ liệu cho mọi yêu cầu.
+ Chúng tôi sử dụng Redis Cluster để phân phối tải này trên nhiều phiên bản Redis.
+ Chúng tôi sử dụng thư viện redis-py để giao tiếp với Redis từ máy chủ Python của chúng tôi, chạy bằng Asyncio.
+ Thư viện duy trì một nhóm kết nối được chia sẻ giữa máy chủ và cụm, và tái sử dụng kết nối để sử dụng cho yêu cầu khác sau khi hoàn tất.
+ Khi sử dụng Asyncio, các yêu cầu và phản hồi với redis-py hoạt động như hai hàng đợi: người gọi đẩy một yêu cầu vào hàng đợi đến và sẽ bật phản hồi từ hàng đợi đi, sau đó trả kết nối về nhóm.
+ Nếu một yêu cầu bị hủy sau khi yêu cầu được đẩy vào hàng đợi đến nhưng trước khi phản hồi được bật ra khỏi hàng đợi đi, chúng ta sẽ thấy lỗi: kết nối do đó bị hỏng và phản hồi tiếp theo bị loại khỏi hàng đợi cho một yêu cầu không liên quan có thể nhận được dữ liệu bị bỏ lại trong kết nối.
+ Trong hầu hết các trường hợp, điều này sẽ dẫn đến lỗi máy chủ không thể phục hồi và người dùng sẽ phải thử lại yêu cầu của mình.
+ Nhưng trong một số trường hợp, dữ liệu bị hỏng lại trùng khớp với kiểu dữ liệu mà người yêu cầu mong đợi, do đó, dữ liệu trả về từ bộ nhớ đệm có vẻ hợp lệ, ngay cả khi dữ liệu đó thuộc về người dùng khác.
+ Vào lúc 1 giờ sáng theo giờ Thái Bình Dương vào thứ Hai, ngày 20 tháng 3, chúng tôi đã vô tình giới thiệu một thay đổi cho máy chủ của mình khiến cho số lượng yêu cầu hủy Redis tăng đột biến. Điều này tạo ra một xác suất nhỏ cho mỗi kết nối trả về dữ liệu xấu.
+ Lỗi này chỉ xuất hiện trong ứng dụng khách Asyncio redis-py dành cho Redis Cluster và hiện đã được khắc phục.
Những hành động chúng tôi đã thực hiện
Khi cuộc điều tra của chúng tôi kết thúc, việc hỗ trợ và thông tin cho người dùng là ưu tiên hàng đầu của chúng tôi.
Chúng tôi đã thực hiện các hành động sau để cải thiện hệ thống của mình:
+ Đã thử nghiệm rộng rãi bản sửa lỗi cơ bản của chúng tôi.
+ Đã thêm các kiểm tra dự phòng để đảm bảo dữ liệu trả về từ bộ đệm Redis của chúng tôi khớp với người dùng yêu cầu.
+ Kiểm tra nhật ký theo chương trình để đảm bảo rằng tất cả tin nhắn chỉ có sẵn cho đúng người dùng.
+ Liên kết nhiều nguồn dữ liệu để xác định chính xác người dùng bị ảnh hưởng để chúng tôi có thể thông báo cho họ.
+ Cải thiện việc ghi nhật ký để xác định thời điểm điều này xảy ra và xác nhận hoàn toàn rằng nó đã dừng lại.
+ Cải thiện độ mạnh mẽ và khả năng mở rộng của cụm Redis để giảm khả năng xảy ra lỗi kết nối khi tải cực lớn.
Chúng ta sẽ đi đâu từ đây
Những người bảo trì mã nguồn mở Redis là những cộng tác viên tuyệt vời, nhanh chóng giải quyết lỗi và tung ra bản vá. Redis, cùng với các phần mềm mã nguồn mở khác, đóng vai trò quan trọng trong nỗ lực nghiên cứu của chúng tôi. Tầm quan trọng của chúng không thể bị đánh giá thấp—chúng tôi sẽ không thể mở rộng quy mô ChatGPT nếu không có Redis. Chúng tôi luôn tận tâm hỗ trợ và đóng góp cho cộng đồng Redis.
Xem thêm: mua tài khoản ChatGPT 4 chính hãng giá rẻ