Уязвимость в общих ссылках ChatGPT позволяла читать чужие приватные чаты
Исследователи Parameter обнаружили, что вредоносная ссылка на опубликованный диалог могла запустить код в авторизованной сессии посетителя. OpenAI устранила проблему на стороне сервиса.

В ChatGPT была уязвимость, позволявшая через публичную ссылку на диалог выполнить сторонний код в браузерной сессии пользователя. По данным исследователей из компании Parameter, такой код мог обращаться к внутренним API ChatGPT от имени жертвы, просматривать недавние беседы и извлекать фрагменты приватных чатов, которыми пользователь ни с кем не делился.
Для атаки использовалась обычная функция публикации диалогов: ссылку можно было отправить по почте, в мессенджере, соцсети или обращении в поддержку. В первоначальном варианте жертве требовалось открыть ссылку и нажать кнопку Preview; позднее исследователи добились автоматического открытия предпросмотра. Устанавливать программы, подключаться к рабочему пространству или проходить авторизацию через сайт атакующего не требовалось.
Как описывает Parameter, предпросмотр HTML-кода внутри ChatGPT запускался в изолированном фрейме на отдельном адресе — эта изоляция сама по себе работала корректно. Однако в том же опубликованном диалоге можно было разместить интерактивный график. При его отрисовке в основную страницу ChatGPT загружалась библиотека MathLive, обработчик которой принимал сообщения от других фреймов без проверки отправителя.
Этот механизм позволял передать в доверенную страницу HTML-код, создать фрейм с идентичностью chatgpt.com и загрузить в него сценарий. Ограничения политики безопасности контента не разрешали встроенные скрипты, но допускали загрузку скриптов с YouTube, чем исследователи воспользовались в демонстрации. По оценке Parameter, ключевой причиной была не сама загрузка скрипта с YouTube, а возможность передать не проверенный HTML из изолированного предпросмотра в основную страницу сервиса.
Исследователи сообщили OpenAI о проблеме 18 октября через программу вознаграждений за найденные уязвимости. Компания воспроизвела выполнение кода и демонстрацию доступа к приватному чату, повысила критичность отчёта с P2 до P1 — высшей категории — и выпустила исправление в двух версиях веб-интерфейса ChatGPT. По данным Parameter, к 26 октября обе версии уже отклоняли сообщения, на которых строилась атака.
Parameter опубликовала описание 28 октября, после исправления, и сообщила о суммарной выплате OpenAI в размере 5000 долларов. Компания не располагает сведениями о применении уязвимости в реальных атаках: проверка доступа к приватным чатам проводилась между контролируемыми учётными записями. Пользователям не нужно устанавливать обновления или менять настройки — исправление внесено на стороне OpenAI.