← Все статьи
2026-11-01 08:02 · 🤖 AI World

Взлом ChatGPT через HTML Preview: пять шагов, одна ссылка

Исследователи из Parameter Labs раскрыли многоступенчатую атаку на ChatGPT: специально подготовленная share-ссылка позволяла угнать аккаунт авторизованного пользователя — историю переписки, данные профиля, действия от его имени.

Взлом ChatGPT через HTML Preview: пять шагов, одна ссылка

Parameter Labs опубликовали детальный разбор эксплойта против ChatGPT. Вектор атаки — функция HTML Preview (ранее OpenAI называла её Canvas): режим, где модель генерирует интерактивные HTML-приложения, отображаемые в изолированном iframe прямо в интерфейсе. OpenAI исправила уязвимость и выплатила исследователям $5 000 bug bounty.

Контекст

HTML Preview — это не просто красивый рендеринг кода. Это полноценная среда выполнения HTML/JS внутри ChatGPT. OpenAI изолирует её в sandboxed iframe: идея в том, что сгенерированный моделью код не должен иметь доступа к вашим данным. Sandbox — единственная линия защиты между чужим HTML и вашим аккаунтом.

Именно поэтому атака столь показательна. Она не взломала sandbox грубой силой. Вместо этого Parameter Labs выстроили цепочку из пяти логически связанных компонентов, каждый из которых сам по себе — не уязвимость. Уязвима комбинация.

Такой класс атак называют exploit chain или chained vulnerability. Они особенно опасны, потому что каждый отдельный шаг проходит мимо стандартных автоматических сканеров. Найти их — настоящая ручная работа.

Аналитика

Разберём цепочку. OpenAI использует стороннюю библиотеку MathLive для рендеринга математических формул. У MathLive есть встроенная виртуальная клавиатура, которую можно активировать через postMessage() — стандартный браузерный механизм передачи сообщений между окнами. Критически важно: код, принимающий это сообщение, использовал innerHTML для вставки HTML в родительскую страницу. И никакого ограничения на то, кто именно может слать это сообщение, — не было. Sandboxed iframe с HTML Preview тоже мог.

Дальше: innerHTML сам по себе не исполняет <script>-теги напрямую, но позволяет вставить новый iframe — уже без атрибутов sandbox. CSP (Content Security Policy) OpenAI блокировала инлайн-скрипты, но разрешала загрузку скриптов с нескольких доменов — в том числе с YouTube. Endpoint oEmbed на YouTube работал как «рефлектор»: он возвращал JavaScript, который браузер исполнял уже в контексте страницы ChatGPT, а не внутри песочницы.

После получения исполнения кода на родительской странице — тривиально: fetch приватных данных через API OpenAI, утечка через запрос к внешнему изображению. Итог: достаточно создать ChatGPT share-ссылку с подготовленным HTML Preview. Любой авторизованный пользователь, кликнувший по ней, рисковал лишиться данных или стать жертвой действий от своего имени. Simon Willison, один из самых цитируемых комментаторов в AI-пространстве, публично назвал выплату $5 000 скромной для уязвимости такого уровня. Сложно не согласиться.

Кейсы применения в бизнесе

B2B-SaaS стартап с LLM-интеграцией. Если ваш продукт рендерит HTML, сгенерированный моделью, прямо в браузере — вы воспроизводите тот же класс атак. Проверьте: все ли iframe строго sandboxed, есть ли проверка event.origin во всех postMessage-обработчиках, не попадает ли пользовательский или модельный контент в innerHTML. Минимальный шаг — аудит CSP и всех postMessage-листенеров.

Корпорация с внутренними AI-инструментами. Многие компании уже развернули внутренние чат-ассистенты. Если ассистент умеет рендерить HTML (markdown → HTML, code artifacts, custom UI-компоненты) — это потенциальная поверхность атаки. Особенно стоит проверить third-party JavaScript-библиотеки: уязвимость в этом кейсе пришла через MathLive — код, который OpenAI не писала сама. Рекомендация: строгий CSP, список разрешённых доменов в script-src — минимальный.

Малый бизнес и фрилансеры в КР/СНГ, использующие ChatGPT для команды. Уязвимость уже закрыта. Но паттерн — атака через «безопасную» share-ссылку — никуда не денется. Обновите корпоративные правила: share-ссылки ChatGPT из незнакомых источников (Telegram-каналы, чужие рассылки, публичные чаты) — не открывать без проверки. Разграничьте аккаунты: рабочий ChatGPT Team отдельно от личных экспериментов.

Кейсы в личной жизни

Разработчик, строящий AI-продукты. Этот кейс — прямое руководство к действию. Проверьте свой код: есть ли у вас postMessage-обработчики без проверки event.origin? Используете ли вы innerHTML с данными, которые пришли от модели или пользователя? Хорошая практика: DOMPurify для санитизации HTML, строгий sandbox-атрибут для iframe, CSP без wildcard-доменов.

Контент-мейкер или фрилансер, активно работающий в ChatGPT. Пока вы не строите приложения — прямого риска нет, уязвимость закрыта. Но базовая гигиена: не открывайте share-ссылки ChatGPT из источников, которым вы не доверяете полностью. Это работает для любого AI-инструмента, не только ChatGPT.

Студент или начинающий исследователь AI-безопасности. Атака Parameter Labs — учебный пример exploit chain в чистом виде: каждый компонент безобиден сам по себе, опасна их последовательность. Изучите оригинальный write-up — это лучший способ понять, как думают серьёзные исследователи безопасности. Тема LLM-security сейчас растёт быстрее, чем успевают появляться специалисты.

Как применить сегодня

  • В каждом postMessage-обработчике добавьте проверку if (event.origin !== expectedOrigin) return; — это первая линия защиты.
  • Замените innerHTML на textContent для данных, которые не должны рендерить HTML. Если HTML необходим — используйте библиотеку DOMPurify для санитизации перед вставкой.
  • Аудируйте third-party JavaScript-библиотеки: составьте список всех внешних зависимостей, которые обрабатывают postMessage или работают с DOM. MathLive — это урок о том, что уязвимость может прийти оттуда, где вы её не ждёте.
  • Проверьте script-src в вашем CSP: YouTube, CDN-провайдеры, сторонние аналитические сервисы в whitelist — красный флаг. Минимизируйте список до абсолютно необходимого.
  • Для команд, использующих ChatGPT: введите правило — share-ссылки из внешних источников открываем только в режиме инкогнито или без авторизации.
← Все статьи