OpenAI исправила уязвимость веб-версии ChatGPT, которая позволяла запускать JavaScript в сессии вошедшего в аккаунт пользователя и читать его закрытые переписки. Для доставки атаки подходила обычная общедоступная ссылка на специально подготовленный разговор. Компания Parameter опубликовала исследование , уже после устранения проблемы. По данным исследователей, OpenAI завершила исправление и присвоила отчёту категорию P1.
Как работала атака через ссылку ChatGPT
Злоумышленник мог создать разговор с интерактивным графиком и HTML-блоком, опубликовать его через штатную функцию общего доступа и отправить ссылку по электронной почте, в мессенджере, обращении в поддержку или социальной сети. Получателю не требовалось устанавливать приложение, подключаться к чужому рабочему пространству, вставлять код или проходить авторизацию на стороннем сайте. Для доступа к его закрытым чатам использовалась уже действующая сессия ChatGPT в браузере.
В наиболее устойчивом варианте воспроизведения пользователь открывал ссылку и один раз нажимал кнопку «Предпросмотр» (Preview). Позже Parameter добилась автоматического открытия HTML-блока: в этом варианте хватало перехода по ссылке. Исследователи трижды повторили автоматический сценарий в отдельном аккаунте, в том числе после принудительной перезагрузки страницы; тестовое уведомление появлялось примерно через 4,5 секунды.
График и предпросмотр загружались независимо. Чтобы сообщение не потерялось до готовности уязвимого компонента, демонстрационный код некоторое время повторял отправку. Отдельная проверка ограничивала чтение закрытой беседы и передачу тестовых данных одним выполнением.
Какие данные удалось получить
Код выполнялся с правами страницы chatgpt.com в авторизованной сессии. В контролируемом тесте он запросил список недавних разговоров, получил сообщения из выбранной закрытой беседы и передал небольшую часть ответа на сервер Parameter. Эта беседа не была связана с вредоносной ссылкой, и её владелец не предоставлял к ней общий доступ.
Для чтения использовались внутренние API ChatGPT с данными действующей сессии. Поэтому доступ не ограничивался текстом, показанным на экране. По оценке Parameter, тот же уровень прав позволял обращаться и к другим данным и действиям, доступным через авторизованный веб-интерфейс. Непосредственно в демонстрации исследователи подтвердили получение списка бесед, чтение закрытого разговора и отправку выбранных данных наружу.
Проверку проводили между отдельными тестовыми аккаунтами. Parameter не сообщила об использовании этой уязвимости в атаках на реальных пользователей.
Почему изоляция предпросмотра не остановила цепочку
ChatGPT умеет показывать HTML-блок как работающую веб-страницу. В справке OpenAI эта возможность называется предпросмотром; поддерживаемое содержимое выполняется в изолированной среде. Во время исследования HTML-страница открывалась во фрейме на отдельном веб-адресе и не могла напрямую читать основную страницу ChatGPT.
Путь к основной странице появился через интерактивный график в том же разговоре. При его отображении загружалась математическая библиотека MathLive, которая устанавливала обработчик сообщений экранной клавиатуры. Обработчик принимал сообщения из недоверенного фрейма без необходимой проверки отправителя и разрешал передавать HTML в настройках раскладки.
postMessage – браузерный механизм обмена сообщениями между окнами и фреймами, в том числе с разными адресами происхождения. Получатель должен проверять происхождение сообщения и окно-отправитель перед выполнением привилегированных действий.
Предпросмотр отправлял сообщения, заменявшие раскладку клавиатуры и вызывавшие её отображение. MathLive вставляла переданный HTML в основную страницу. Использованный при этом вспомогательный механизм createHTML не очищал содержимое от опасной разметки.
Внедрённый HTML создавал новый iframe с атрибутом srcdoc без sandbox. Такой документ наследовал происхождение chatgpt.com и получал доступ к родительской странице. Исходный фрейм предпросмотра при этом оставался изолированным.
Следующим препятствием была политика безопасности содержимого CSP: она блокировала встроенный JavaScript, но разрешала загрузку скриптов с YouTube. Исследователи использовали обработку JSONP-параметра callback в YouTube oEmbed: ответ содержал исполняемый JavaScript с переданным кодом. Разрешённый внешний источник позволил запустить его в новом фрейме с правами chatgpt.com.
Таким образом, цепочка объединила три ошибки: приём изменяющих настройки сообщений без проверки отправителя, передачу необработанного HTML в раскладке и создание неизолированного документа с происхождением основной страницы. YouTube помог обойти CSP на последнем этапе. Блокировка только этого источника оставила бы возможность внедрять HTML через MathLive.
Когда OpenAI устранила уязвимость
По хронологии Parameter, OpenAI воспроизвела выполнение JavaScript и чтение закрытой беседы, после чего повысила оценку отчёта с P2 до P1. Исправление распространялось на две версии веб-интерфейса ChatGPT.
| Дата, 2026 год | Событие |
|---|---|
| Parameter подтвердила путь от сообщений MathLive к внедрению HTML в рабочем коде ChatGPT. | |
| Исследователи воспроизвели цепочку через обычный интерфейс и добились выполнения произвольного JavaScript. | |
| Подтверждена доставка через общедоступную ссылку между отдельными аккаунтами и рабочими пространствами с одним нажатием «Предпросмотр». | |
| Воспроизведён автоматический предпросмотр при переходе по ссылке, в том числе после принудительной перезагрузки. | |
| Отчёт отправлен в программу OpenAI по поиску уязвимостей. | |
| К отчёту добавлена контролируемая демонстрация раскрытия данных закрытой беседы. | |
| OpenAI воспроизвела проблему; оценка повышена с P2 до P1. | |
| OpenAI сообщила об исправлении одной версии веб-интерфейса; обновление второй продолжалось. | |
| Изменения CSP заблокировали часть исходной цепочки, но исправление второй версии ещё не завершилось. | |
| OpenAI подтвердила, что обе версии отклоняют использованные межфреймовые сообщения. Отчёт закрыт, общая награда составила 5000 USD. |
Техническое описание Parameter вышло 28 октября, после исправления. Изменения действуют на стороне сервиса: для устранения именно этой уязвимости пользователям не требуется устанавливать отдельное обновление или сбрасывать настройки.
Что учитывать при обмене ссылками на чаты
Общий доступ к разговору всё равно требует проверки его содержимого. Согласно документации OpenAI, опубликованный из личного аккаунта разговор может просмотреть любой обладатель ссылки. В управляемых рабочих пространствах действуют отдельные ограничения доступа.
Ранее COMSS.ru рассказывал о попадании опубликованных разговоров ChatGPT в поиск Google; в августе 2025 года OpenAI отключила возможность разрешать их индексацию. В исследовании Parameter риск затрагивал закрытые беседы человека, открывшего чужую ссылку: права на чтение давал внедрённый код в его сессии.
Вывод
Ошибка позволяла связать общедоступный разговор с доступом к закрытым перепискам его посетителя. Исправление закрыло использованный путь между предпросмотром и основной страницей ChatGPT. Исследование показывает, почему изоляция встроенного содержимого должна сопровождаться проверкой сообщений во всех компонентах, которые с ним взаимодействуют.
ChatGPT