A la 1 a. m. hora del Pacífico del 20 de marzo de 2023, OpenAI introdujo un cambio en los servidores de ChatGPT que provocó un pico de cancelaciones de solicitudes a Redis. OpenAI utiliza Redis para almacenar en caché la información de los usuarios y así no tener que consultar su base de datos en cada solicitud, y sus servidores en Python se comunican con la caché a través de la biblioteca redis-py, que reutiliza conexiones entre solicitudes.
Con Asyncio, una solicitud cancelada después de encolarse pero antes de que llegue su respuesta corrompe la conexión; la siguiente solicitud no relacionada puede entonces recibir los datos que quedaron en ella. En algunos casos, los datos devueltos coincidían con lo que el solicitante esperaba, de modo que un usuario vio los títulos del historial de chats de otro usuario activo y, en una ventana de nueve horas, algunos suscriptores de ChatGPT Plus pudieron ver el nombre, el correo electrónico, la dirección de pago, el tipo de tarjeta, la fecha de vencimiento y los últimos cuatro dígitos de la tarjeta de otro usuario. Nunca se expusieron los números completos de las tarjetas.
OpenAI desconectó ChatGPT, corrigió el error en redis-py, añadió comprobaciones redundantes de los datos de cada solicitud, mejoró el registro y notificó a los usuarios afectados. Estimó que la información de facturación expuesta afectó al 1,2 % de los suscriptores de ChatGPT Plus que estuvieron activos durante esa ventana, y afirmó que el número de usuarios cuyos datos realmente se revelaron a otra persona fue extremadamente bajo.
ChatGPT se desconectó; la información relacionada con el pago del 1,2 % de los suscriptores activos de ChatGPT Plus quedó expuesta durante una ventana de nueve horas; no se expusieron los números completos de las tarjetas.
Un grupo de conexiones compartido daba por sentado que las solicitudes canceladas no podían corromper las respuestas posteriores: la condición de carrera de redis-py.
El cambio del 20 de marzo provocó un pico de cancelaciones, convirtiendo un error poco frecuente en una exposición realista.
La caché de ChatGPT contenía datos personales y de pago, por lo que un error en la caché se convirtió en un incidente de privacidad.
Nada en la ruta de la caché validaba que los datos devueltos pertenecieran al usuario solicitante antes de servirlos.
Cuando las conexiones de caché agrupadas atienden a varios usuarios, cada respuesta debe validarse contra el solicitante, y un cambio que provoca un pico de cancelaciones es una posible brecha de aislamiento, no solo una interrupción del servicio.
OpenAI restableció el historial de chats en pocos días (salvo unas pocas horas) y los mantenedores de Redis publicaron un parche. El incidente atrajo de inmediato la atención regulatoria: el 31 de marzo, el Garante de Italia prohibió temporalmente ChatGPT, citando entre otras preocupaciones la brecha de datos del 20 de marzo, y OpenAI desactivó el servicio en Italia mientras se enfrentaba a una posible multa de hasta 20 millones de euros o el 4 % de la facturación global. El caso se convirtió en un punto de referencia sobre la rapidez con la que la capa de caché de un servicio de IA puede convertir un problema de escalado en una crisis de protección de datos.
CONSULTA LAS PRUEBAS
Las fuentes
- March 20 ChatGPT outage: Here's what happened OpenAI · web.archive.org ·
- A bug revealed ChatGPT users' chat history, personal and billing data Help Net Security · helpnetsecurity.com ·
- Italy curbs ChatGPT, starts probe over privacy concerns Reuters · tech.yahoo.com ·