Главное

Вредоносная shared-ссылка ChatGPT могла запустить код злоумышленника в авторизованной сессии любого, кто её открыл, — и дать доступ к приватным переписках. Уязвимость обнаружила команда компании Parameter Security. Исследователи сообщили об уязвимости через программу bug bounty OpenAI 18 октября, и компания устранила её восемь дней спустя, присвоив статус P1 — наивысший приоритет.

⚠ Важно
Уязвимость уже закрыта. Пользователям ChatGPT ничего делать не нужно — патч применён на стороне OpenAI.

Как работал взлом

Атака использовала взаимодействие двух на первый взгляд безобидных функций: изолированного 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, читая приватные переписки и токен сессии.

ℹ Техническая деталь
postMessage — браузерный API для общения между фреймами разных происхождений. Если получатель не проверяет event.origin и event.source, любой фрейм может притвориться доверенным источником.

Хронология событий

ДатаСобытие
13 октября 2026Parameter подтвердила путь MathLive → HTML в продакшен-коде ChatGPT
18 октября 2026Отчёт отправлен в программу bug bounty OpenAI
22 октября 2026OpenAI сообщила об исправлении первой версии фронтенда
26 октября 2026Патч развёрнут на обе версии веб-фронтенда, статус P1
28 октября 2026Parameter опубликовала writeup после исправления
31 октября 2026MathLive 0.111.2 изменила дефолтное поведение на проверку same-origin

Что исправила OpenAI и как отреагировала MathLive

Исправление OpenAI отклоняет кросс-фреймовые сообщения MathLive, используемые в эксплойте, на обеих версиях веб-фронтенда.

31 октября вышла MathLive версии 0.111.2, изменившая дефолтное поведение: теперь по умолчанию включена проверка same-origin.

OpenAI присвоила отчёту статус P1 — наивысшую категорию серьёзности — и выплатила вознаграждение в размере $5 000.

💡 Урок для разработчиков
Если вы встраиваете MathLive или любую другую библиотеку с postMessage-слушателями, убедитесь, что каждый обработчик проверяет event.origin и event.source перед принятием команд. Iframe с srcdoc без атрибута sandbox наследует origin родительского документа.

Контекст и значение для отрасли

Нет никаких свидетельств реального использования уязвимости: Parameter проводила демонстрации только между собственными аккаунтами.

Тем не менее этот случай показывает системную проблему: интеграция сторонних библиотек на крупных AI-платформах создаёт неочевидные векторы атаки. Ключевая проблема возникла из взаимодействия двух на первый взгляд безобидных функций: HTML Preview и интерактивного графика, использующего библиотеку MathLive. Ни одна из них по отдельности не была уязвима — опасной оказалась их комбинация.

Главный урок: postMessage-получатели должны проверять event.origin и event.source перед принятием любых команд, изменяющих состояние страницы.

Do the math — считайте не только матрицы трансформаций, но и цепочки доверия между фреймами.