Ссылка на чат ChatGPT позволяла читать приватные переписки жертвы
Исследователи из компании Parameter показали, что вредоносная публичная ссылка на чат ChatGPT могла выполнить код злоумышленника в авторизованной сессии любого, кто её открыл. Код получал доступ к приватным разговорам пользователя и отправлял их фрагмент на сервер исследователей.

Главное в цифрах
- Выплата исследователям за отчёт: $5 000
- Сообщение в bug bounty: 18 октября
- Срок исправления: восемь дней
- Приоритет уязвимости повышен с P2 до P1
Для атаки достаточно было открыть ссылку. В основной версии жертве нужно было один раз нажать кнопку Preview, а в более поздней версии страница открывала Preview сама. Ссылка могла прийти по почте, в сообщении чата, в обращении в поддержку или в посте в соцсети. Ничего устанавливать или входить через аккаунт злоумышленника не требовалось.
Выполнившись в сессии жертвы, код вызывал собственные API ChatGPT напрямую, получал список последних разговоров и открывал приватный чат, которым пользователь ни с кем не делился. Исследователи писали, что могли выполнить любое действие от имени аккаунта жертвы. Тест проводился на отдельных аккаунтах исследователей, сообщений о реальных атаках нет.
Как работала цепочка
Функция Preview превращает HTML из чата в небольшую веб-страницу и запускает её в изолированном фрейме на отдельном адресе, который не может читать основную страницу ChatGPT. Песочница сработала, а обход начинался со второй функции той же переписки.
В общем чате была интерактивная диаграмма, отрисовка которой загружала в основную страницу ChatGPT математическую библиотеку MathLive. Она оставляла слушатель сообщений, отвечающий за экранную клавиатуру. Слушатель принимал сообщения от любого отправителя и пропускал в них произвольный HTML. Так Preview могла передать HTML в доверенную страницу, а тот создавал фрейм, который браузер считал частью chatgpt.com. Код для него подгружался со YouTube: политика безопасности ChatGPT блокировала встроенный код, но разрешала скрипты с YouTube.
По словам Parameter, проблема заключалась в трёх совпавших проектных решениях, а YouTube был лишь последним обходным путём. Блокировка только YouTube оставила бы возможность передавать HTML в основной сайт.
Исправление
Исследователи сообщили о проблеме в программу bug bounty OpenAI 18 октября. Компания воспроизвела выполнение кода и доступ к приватному чату, повысила приоритет с P2 до P1 и через восемь дней выпустила исправление для двух версий веб-интерфейса ChatGPT. К 26 октября обе версии отклоняли сообщения, на которых строилась атака. Пользователям ничего делать не нужно: исправление работает на стороне OpenAI.
Parameter опубликовала подробный разбор 28 октября, уже после исправления. OpenAI выплатила за отчёт $5 000.

