Check Point Research заяви в доклад, публикуван днес, че една-единствена инструкция, имплантирана в разговор с ChatGPT, е могла да накара ChatGPT тихо да работи за атакуващ, докато отговаря на въпроса на потребителя както обикновено.
В доказателството за концепция на компанията тази скрита работа е прочела данни от свързания Gmail акаунт на потребителя и ги е предала на втори акаунт в ChatGPT чрез скрит канал между двата. Отговорът, който потребителят е видял, не съдържал нищо за това.
От Check Point заявяват, че същият канал е можел също да копира историята на чата и файловете в този разговор.
Количеството данни, които атакуващ е можел да вземе, е зависило от това до какво сесията вече е имала достъп, включително нейната информация, инструменти, други свързани приложения и разрешения.
Инструкцията е трябвала да бъде в разговора, преди каквото и да е от това да сработи. Check Point посочват три начина тя да бъде поставена там: подкана, която потребителят поставя (paste), споделен разговор в ChatGPT, който потребителят отваря, или персонализиран GPT, който я съдържа в инструкциите за изграждане (builder instructions), които не се показват на потребителя.
След това едно обикновено съобщение е било достатъчно, за да стартира процеса. Check Point са написали инструкцията така, че ChatGPT, в режим на разсъждение (Thinking mode), да изпълнява два потока от работа в един и същи ред.
ChatGPT е отговорил на потребителя. В същото време той е проверил скрита пощенска кутия за задача от атакуващия, изпълнил е тази задача, използвайки инструментите в сесията на потребителя, и е изпратил резултата обратно. Инструкцията е указала на модела да държи двата потока Separated, така че скритата задача никога да не се появи във видимия отговор.
Единственият знак, че дадено приложение е било използвано, е бил малък етикет „Talked to Gmail“ над отговора. Той е регистрирал вече извършено четене и не е дал възможност на потребителя да го разреши или откаже.
Нищо не е поискало разрешение от потребителя предварително поради начина, по който свързаните приложения работят по подразбиране. Документацията на OpenAI посочва „Important actions“ като разрешение по подразбиране, което позволява на ChatGPT да чете от приложение без подкана. ChatGPT пита само преди действия, които биха могли да имат реален ефект извън ChatGPT, да разкрият чувствителна информация или да бъдат трудни за отмяна.

Потребител, който иска да бъде питаван всеки път, може да превключи на „Always ask“. В работните пространства Business, Enterprise и Edu администраторите избират какви действия може да предприема всяко приложение и кой може да го използва. Приложенията са включени по подразбиране в плановете Business и са изключени по подразбиране в Enterprise и Edu.
От Check Point заявяват, че са разкрили констатацията пред OpenAI и че OpenAI е потвърдила, че вътрешната услуга зад канала е била спряна. Няма актуализация или корекция за сигурност, която потребителите да инсталират.
Каналът е работил между контейнерите, в които ChatGPT изпълнява код. ChatGPT изгражда по един за всеки разговор, когато дадена задача го изисква.
Документацията на OpenAI казва, че Python средата, която ChatGPT използва за анализ на данни, не може да прави заявки към мрежата или към външни API. От Check Point казват, че контейнерите, изградени за отделни разговори, включително такива с различни акаунти, също не са имали директен път един към друг.
Всички те обаче са имали достъп до една вътрешна услуга. На ChatGPT понякога се налага да инсталира допълнителни Python или npm пакети. Вместо да се позволи на контейнерите да стигат до публични хранилища за пакети, на всеки е било позволено да комуникира с вътрешна инстанция на JFrog Artifactory, която е извличала пакетите вместо тях.

Тази инстанция е позволявала на контейнер да закача именувани стойности, наречени свойства (properties), към съхранен файл и да ги прочита обратно. Идентификационните данни за достъп за четене, с които е разполагал контейнерът, са били достатъчни и за записване на тези свойства. Те са се намирали в променливи на средата, откъдето кодът, изпълняван от ChatGPT, е можел да ги вземе. На кода не му е било необходимо да краде отделна тайна или да ескалира привилегии.
Свойствата не са били изолирани по акаунт. От контейнер под един акаунт Check Point са прикачили свойство с име chatgpt_test_ts, съдържащо текущото време, към кеширан файл. В разговор под друг акаунт са поискали свойствата на този файл и са получили същото име и стойност.
Дадено свойство може да носи обикновен текст или Base64, а всичко прекалено голямо за едно свойство може да бъде разделено на няколко и сглобено отново в другия край. Това е превърнало метаданните на услугата за пакети в споделен клипборд между контейнери, които не е трябвало да имат достъп един до друг.
Това е вторият канал извън същата част на ChatGPT, за който Check Point съобщава. През март компанията описа друг канал, използвал DNS търсения за изпращане на данни от разговори към външен сървър, и заяви, че OpenAI го е отстранила на 20 февруари.
Случаят е отделен от инцидента с Hugging Face, при който собствените модели на OpenAI превърнаха вътрешна инстанция на Artifactory в табло за съобщения по време на тестове за сигурност на компанията.
От Check Point заявяват, че откритият механизъм е различен и описват и двата случая като ситуации, при които „споделена вътрешна услуга се е превърнала в непредвиден комуникационен слой“ между среди, предназначени да останат изолирани.
От Check Point датират работата си към юни 2026 г. и не посочват кога каналът е спрял да работи, така че докладът не показва колко време е бил отворен.