Сигурност

Редакция Overclock.bg ·

Споделен линк в ChatGPT е превземал акаунта ви

Споделен линк в ChatGPT е превземал акаунта ви

Изследователи от фирмата за сигурност Parameter са успели да превземат чужд ChatGPT акаунт само с един линк към споделен разговор. Жертвата не е трябвало да прави нищо повече от това да отвори линка, докато е влязла в профила си — след това в страницата на chatgpt.com се е изпълнявал код на атакуващия, който е можел да изброи чатовете, да прочете частни разговори и да изпрати части от тях на външен сървър. Докладът е изпратен на OpenAI на 18 октомври, оценен е като P1 (най-тежката категория на компанията) и е закърпен окончателно на 26 октомври — осем дни по-късно. The Hacker News съобщи за случая, след като Parameter публикува подробното си описание на 28 октомври.

Как един график отваря вратата

Веригата е учебникарски пример за това как три безобидни поотделно решения се събират в едно сериозно пробиване. Атаката започва с нещо напълно легитимно: функцията за споделяне на разговор.

Атакуващият подготвя чат, в който има истински интерактивен график и HTML блок за визуализация (функцията Preview). Когато жертвата отвори споделения линк, chatgpt.com зарежда библиотеката MathLive — тя обслужва математическите изрази и графиките. MathLive обаче инсталира слушател за postMessage съобщения, с който се управлява виртуалната екранна клавиатура, и в тогавашната версия този слушател не е проверявал нито event.origin, нито event.source.

HTML блоковете в ChatGPT се показват в sandbox-нат iframe точно за да не могат да пипат главната страница. Само че sandbox-ът не пречи на изпращането на съобщения към родителя. Кодът на атакуващия изпраща съобщение за отваряне на клавиатурата със собствен „layout“, а MathLive сглобява подадения HTML и го присвоява на innerHTML в реалната страница на ChatGPT.

Излизане от пясъчника

innerHTML не изпълнява скриптове — това е причината мнозина да го смятат за безопасен. Но позволява създаване на елементи, включително нов iframe със srcdoc и без атрибут sandbox. Този втори frame наследява origin-а на chatgpt.com, тоест е вътре в доверения периметър.

Остава Content Security Policy, която блокира inline скриптове. Тук идва последният трик: CSP разрешава зареждане на скриптове от няколко домейна, един от които е YouTube. Изследователите използват oEmbed крайната точка на YouTube и нейния JSONP режим, за да върне подаден от тях JavaScript във вид, който браузърът изпълнява. Готово — произволен код в сесията на жертвата.

Какво точно е можел да види нападателят

Оттам нататък payload-ът просто вика вътрешното API на ChatGPT с бисквитките на жертвата:

GET /backend-api/conversations?limit=20&order=updated&offset=0
GET /backend-api/conversations/<conversation-id>?num_turns=2

Първата заявка връща списъка с последните разговори, втората — съдържанието на конкретен чат, включително такъв, който никога не е бил споделян. Изнасянето на данните става през заявка към картинка на сървър на атакуващия. „По същество можехме да извършим всяко действие от името на акаунта на жертвата“, пишат от Parameter.

Авторът на доклада, Мукул Гоял, описва и плътен график на работата: потвърждаване на проблема в MathLive на 13 октомври, възпроизвеждане през нормалния интерфейс на 14-и, проверка на доставката между различни акаунти на 16-и, доклад до OpenAI на 18-и. На 21 октомври OpenAI възпроизвежда атаката и вдига оценката до P1, първият frontend е закърпен на 22-ри, промените в CSP частично чупят веригата на 23-ти, а на 26 октомври и двете версии на интерфейса са оправени. Наградата е 5000 щатски долара (около 4480 евро).

Поправката и какво следва за вас

Корекциите са на три нива: слушателите на MathLive вече проверяват и origin, и източника на съобщението; подаденият HTML layout не се третира като доверен; динамично създадените документи остават sandbox-нати. CSP е затегната допълнително, но като втора линия на защита, не като основен механизъм.

За потребителите няма нищо за правене — всичко е сървърна промяна в ChatGPT и е активно от 26 октомври. Не е нужно да сменяте парола или да излизате от сесиите.

Внимание

Споделените линкове към AI разговори не са просто текст. Те носят активно съдържание, което се изпълнява във вашата сесия, и затова заслужават същото недоверие като линк към непознат сайт — особено когато идва от имейл, тикет за поддръжка или публикация в социална мрежа.

Защо случаят е показателен

Интересното тук не е една грешка, а начинът, по който се натрупват. Нито MathLive е правена за враждебен вход, нито innerHTML сам по себе си изпълнява код, нито oEmbed на YouTube е уязвимост. Рисков става сборът — и той се появява едва когато в един продукт се смесят математически рендер, потребителски HTML и разрешителен списък от външни домейни. Колкото повече функции получава ChatGPT — от писане през iMessage и Google Messages до визуализации в чата — толкова по-голяма става тази повърхност.

Добрата новина е в реакцията: осем дни от доклад до пълна поправка е сериозно темпо за продукт с такъв размер, особено в сравнение с дупки, които се експлоатират активно, преди да бъдат затворени. Няма данни атаката да е била използвана срещу реални потребители, преди изследователите да я докладват. Самостоятелен анализ на веригата публикува и Саймън Уилисън, който я определя като добър пример защо sandbox-ът е толкова силен, колкото е най-слабият слушател в родителската страница.

Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.

Предпочитан източник в Google

Прочетете още