← Все новости

Одна ссылка на чужой чат в ChatGPT выполняла код в вашей сессии и читала перепискуA shared ChatGPT link could run code in your session and read your private chats

Parameter Labs показала цепочку, в которой вредоносная ссылка на «общий» чат исполняла код в уже авторизованной сессии жертвы и выкачивала личные диалоги. OpenAI закрыла дыру за восемь дней и оценила её как P1, но выплатила всего $5 000.Parameter Labs showed a chain where a malicious shared-chat link executed code inside the victim's signed-in session and exfiltrated private conversations. OpenAI closed the hole in eight days and rated it P1, but paid only $5,000.

Проблема выросла из механики HTML-preview: интерактивные приложения в ответах ChatGPT живут в песочнице iframe, и от того, насколько надёжно она заперта, зависит доступ к аккаунту. Исследователи из Parameter Labs нашли способ выбраться наружу в четыре шага.

Сначала эксплуатировалась библиотека MathLive, которую OpenAI использует для формул: её экранная клавиатура принимает команды через postMessage() из песочницы. Обработчик в родительской странице вставлял пришедший текст через innerHTML, а проверить отправителя было нечем — значит, вставить HTML мог любой песочничный фрейм, включая превью ответа. innerHTML сам по себе не исполняет скрипты, но позволяет вставить новый iframe уже без атрибута sandbox.

Дальше пригодилась политика CSP: встроенные скрипты она запрещала, зато разрешала загрузку с нескольких доменов, среди которых был YouTube. Его oEmbed-эндпоинт возвращал присланный JavaScript так, что тот исполнялся. Получив выполнение в origin ChatGPT, атакующий мог читать личные данные через API и выносить их картинкой.

Что это значит

Ссылка на общий чат — обычный объект, её отправляют почтой, в мессенджере, в тикете поддержки или в соцсети. Жертве не нужно ничего устанавливать: в самой надёжной версии атаки хватало одного клика по кнопке Preview, в более поздней превью открывалось само.

OpenAI получила отчёт 18 октября, закрыла дыру восемь дней спустя и присвоила ей P1 — максимальную категорию. Вознаграждение составило $5 000, и Саймон Уиллисон назвал сумму скромной для уязвимости такого масштаба. Публично об эксплуатации не сообщалось.

Что делать

Диалоги с ассистентом давно стали хранилищем кода, договоров и внутренних документов, поэтому незнакомые ссылки на «посмотри, какой смешной чат» лучше не открывать, а секреты и ключи в переписку не вставлять.

The problem grows out of the HTML-preview mechanism: interactive apps inside ChatGPT answers run in a sandboxed iframe, and how tightly that sandbox is sealed decides how much of the account is reachable. Researchers at Parameter Labs found a four-step way out.

First came MathLive, the library OpenAI uses for formulas. Its on-screen keyboard accepts messages via postMessage() from the sandbox. The handler in the parent page inserted the incoming text with innerHTML, and nothing verified the sender — so any sandboxed frame, including an answer preview, could inject HTML. innerHTML does not execute script elements by itself, but it does let you insert a new iframe without a sandbox attribute.

Then OpenAI’s CSP helped: it blocked inline scripts but allowed loading from a handful of domains, YouTube among them. YouTube’s oEmbed endpoint reflected the supplied JavaScript back in a form that executed. Once code ran in the ChatGPT origin, reading private data through the APIs and exfiltrating it via an image reference was straightforward.

What it means

A shared-chat link is an ordinary object: people send them by email, in messengers, in support tickets or social posts. The victim installs nothing — in the most reliable variant a single click on the Preview button was enough, and a later version opened the preview automatically.

OpenAI received the report on 18 October, fixed the hole eight days later and rated it P1, its most serious category. The bounty was $5,000, which Simon Willison called cheap for a vulnerability this serious. No public evidence of exploitation has surfaced.

What to do

Assistant chats have become a store of code, contracts and internal documents. Treat unfamiliar “look at this funny chat” links the way you treat any untrusted attachment, and keep secrets and keys out of the conversation.

Источники