
Что произошло
20 марта 2023 года пользователи ChatGPT сообщили, что видят в своей истории заголовки чужих диалогов, и OpenAI отключила сервис. Расследование показало, что изменение на серверах OpenAI резко увеличило число отменённых запросов к Redis и спровоцировало редкую ошибку в клиентской библиотеке redis-py. В течение примерно девяти часов часть пользователей могла видеть заголовки чужих чатов, а в ряде случаев и первое сообщение нового диалога. У 1,2% подписчиков ChatGPT Plus, активных в этот период, другим пользователям могли быть показаны имя, адрес электронной почты, платёжный адрес, тип карты, последние четыре цифры и срок действия карты. 24 марта 2023 года OpenAI опубликовала отчёт об инциденте.
Где нарушилась защита
Сервис кэшировал данные пользователей в Redis через общий пул соединений. Если запрос отменялся в определённый момент, соединение оставалось в некорректном состоянии и следующий запрос другого пользователя получал чужой ответ. Граница изоляции между пользователями держалась только на корректности сторонней библиотеки, без дополнительной проверки, что данные из кэша принадлежат запрашивающему.
Последствия
- Заголовки чужих диалогов и в ряде случаев первые сообщения были видны другим пользователям
- У 1,2% подписчиков ChatGPT Plus, активных в течение девятичасового окна, могли раскрываться частичные платёжные данные; полные номера карт не раскрывались
- Затронутые пользователи получили уведомления от OpenAI
Реакция
OpenAI исправила ошибку в redis-py, добавила проверку соответствия кэшированных данных запрашивающему пользователю, усилила устойчивость кластера Redis и уведомила затронутых подписчиков.
Уроки для бизнеса
- Классические ошибки инфраструктуры в AI-сервисах так же опасны, как атаки на модель, потому что в истории чатов накапливаются чувствительные данные
- Изоляция данных пользователей не должна зависеть от корректности одной сторонней библиотеки
- Журналы и история запросов к AI являются полноценным хранилищем чувствительных данных
Меры, которые предотвратили бы инцидент
- Проверять принадлежность данных запрашивающему пользователю на каждом уровне, включая кэш
- Тестировать изоляцию данных под нагрузкой и при массовых отменах запросов
- Оценивать вендоров AI по их практикам изоляции данных и реагирования на инциденты
- Ограничить передачу в публичные AI-сервисы данных, раскрытие которых недопустимо