Взлом ChatGPT через shared-ссылку: как это работало
Исследователи Parameter Security захватили аккаунты ChatGPT через обычную публичную ссылку — без установки ПО и без кликов. OpenAI уже выпустила патч.
Главное
Вредоносная shared-ссылка ChatGPT могла запустить код злоумышленника в авторизованной сессии любого, кто её открыл, — и дать доступ к приватным переписках. Уязвимость обнаружила команда компании Parameter Security. Исследователи сообщили об уязвимости через программу bug bounty OpenAI 18 октября, и компания устранила её восемь дней спустя, присвоив статус P1 — наивысший приоритет.
Как работал взлом
Атака использовала взаимодействие двух на первый взгляд безобидных функций: изолированного HTML Preview в ChatGPT и интерактивного графика, загружавшего математическую библиотеку MathLive.
MathLive устанавливала postMessage-слушатель (механизм обмена сообщениями между фреймами браузера) в основной странице ChatGPT для настройки виртуальной клавиатуры, но слушатель не проверял отправителя сообщений и принимал сырой HTML в качестве данных раскладки.
Вредоносный HTML Preview, изолированный на своём origin (веб-происхождении), отправлял сообщения, заставляя MathLive внедрять HTML злоумышленника в основную страницу через innerHTML. Созданный таким образом iframe наследовал origin сайта chatgpt.com, давая атакующему полноценную «точку опоры» внутри домена.
Поскольку домен YouTube был разрешён политикой безопасности контента ChatGPT (CSP), колбэк запускал произвольный JavaScript с идентификатором chatgpt.com.
flowchart LR
A["Атакующий делится ссылкой с графиком и Preview"] --> B["Жертва открывает /share ссылку"]
B --> C["График загружает MathLive в chatgpt.com"]
C --> D["Preview отправляет postMessage без проверки origin"]
D --> E["MathLive записывает HTML через innerHTML"]
E --> F["srcdoc iframe наследует идентификатор chatgpt.com"]
F --> G["Произвольный JS работает как chatgpt.com"]
G --> H["Чтение приватных чатов и захват аккаунта"]
Что мог сделать злоумышленник
«Мы могли выполнять любые действия от имени аккаунта жертвы в ChatGPT» — команда Parameter Security
Уязвимость позволяла атакующему перечислять переписки жертвы, получать содержимое приватных чатов, которые никогда не публиковались, и отправлять выбранные данные на внешний сервер — без необходимости устанавливать приложение, вступать в рабочее пространство, вставлять код или открывать инструменты разработчика.
В финальной версии атаки достаточно было просто открыть ссылку — примерно через 4,5 секунды JavaScript уже работал от имени chatgpt.com, читая приватные переписки и токен сессии.
event.origin и event.source, любой фрейм может притвориться доверенным источником.Хронология событий
| Дата | Событие |
|---|---|
| 13 октября 2026 | Parameter подтвердила путь MathLive → HTML в продакшен-коде ChatGPT |
| 18 октября 2026 | Отчёт отправлен в программу bug bounty OpenAI |
| 22 октября 2026 | OpenAI сообщила об исправлении первой версии фронтенда |
| 26 октября 2026 | Патч развёрнут на обе версии веб-фронтенда, статус P1 |
| 28 октября 2026 | Parameter опубликовала writeup после исправления |
| 31 октября 2026 | MathLive 0.111.2 изменила дефолтное поведение на проверку same-origin |
Что исправила OpenAI и как отреагировала MathLive
Исправление OpenAI отклоняет кросс-фреймовые сообщения MathLive, используемые в эксплойте, на обеих версиях веб-фронтенда.
31 октября вышла MathLive версии 0.111.2, изменившая дефолтное поведение: теперь по умолчанию включена проверка same-origin.
OpenAI присвоила отчёту статус P1 — наивысшую категорию серьёзности — и выплатила вознаграждение в размере $5 000.
event.origin и event.source перед принятием команд. Iframe с srcdoc без атрибута sandbox наследует origin родительского документа.Контекст и значение для отрасли
Нет никаких свидетельств реального использования уязвимости: Parameter проводила демонстрации только между собственными аккаунтами.
Тем не менее этот случай показывает системную проблему: интеграция сторонних библиотек на крупных AI-платформах создаёт неочевидные векторы атаки. Ключевая проблема возникла из взаимодействия двух на первый взгляд безобидных функций: HTML Preview и интерактивного графика, использующего библиотеку MathLive. Ни одна из них по отдельности не была уязвима — опасной оказалась их комбинация.
Главный урок: postMessage-получатели должны проверять event.origin и event.source перед принятием любых команд, изменяющих состояние страницы.
Do the math — считайте не только матрицы трансформаций, но и цепочки доверия между фреймами.