Группа исследователей, включая специалистов из ELLIS Institute Tübingen, Института интеллектуальных систем Общества Макса Планка, Tübingen ИИ Center, MATS и Snyk, 10 августа опубликовала препринт «Stealing Reasoning Traces from Proprietary LLM APIs». В работе описана атака, которая позволяет полностью и дословно восстановить внутренние рассуждения передовых моделей Anthropic, OpenAI и Google, не взламывая саму модель. Метод требует всего двух вызовов API и работает с зашифрованными блоками, которые провайдеры возвращают клиентам.

Чтобы понять суть атаки, нужно разобраться, как устроена работа современных рассуждающих моделей. Когда модель «думает» перед ответом, её цепочка рассуждений содержит коммерчески ценную информацию: по ней конкуренты могут обучать свои модели, а внутри могут находиться системные промпты и внутренние политики безопасности. Поэтому Anthropic, OpenAI и Google перестали отдавать рассуждения в открытом виде: пользователь видит лишь короткое саммари, а полная запись возвращается клиенту в виде зашифрованного блока. Состояние диалога сервер не хранит, поэтому клиент обязан приложить этот блок к следующему запросу, чтобы модель «вспомнила» контекст. Такая схема подавалась как защита интеллектуальной собственности и приватности.

Вектор атакиОписание
Кража рассужденийЧтение скрытых цепочек рассуждений сильных моделей через слабые модели того же провайдера.
Утечка секретовИзвлечение ключей, паролей и токенов из публичных логов, содержащих зашифрованные блоки.
Обход фильтровДоступ к нефильтрованным рассуждениям модели, которые могут содержать опасные или запрещённые данные.
Подмена блоковВнедрение вредоносных инструкций в зашифрованные блоки, которые затем попадают в чужие агенты.

Атака строится на том, что зашифрованный блок от сильной модели, например Claude Opus 4.8, подкладывается в запрос к слабой модели того же провайдера, скажем, Haiku 4.5. Слабую модель просят переписать приложенное рассуждение дословно, и она это делает. Старшую модель при этом не взламывают: её защита от дистилляции не срабатывает, потому что к ней никто не обращался. Джейлбрейк требуется только для младшей модели, у которой защитный контур проще. Авторы проверили достоверность расшифровки на 120 задачах с Codeforces: длина восстановленного трейса почти точно совпадала с числом скрытых токенов рассуждения, которое API сообщает в метаданных.

Авторы проверили метод на 120 задачах Codeforces, подтвердив, что восстановленные трейсы совпадают с числом скрытых токенов, указанных в метаданных API.

Особый интерес представляет часть работы, касающаяся рядовых разработчиков. Исследователи собрали 6708 публично выложенных агентских логов с GitHub и Hugging Face — обычных записей работы Claude, GPT и Gemini, которые люди коммитят в репозитории вместе с кодом. Расшифровка дала 315 320 восстановленных блоков рассуждений. В них нашлось 704 уникальных секрета: помимо ключей API и паролей, там оказались токены доступа, личные адреса электронной почты, имена, почтовые адреса, внутренние URL и технические идентификаторы. Отдельная деталь, вызывающая беспокойство: 64 из этих находок не встречались нигде в видимой части сессии — они существовали только внутри зашифрованного блока.

Важно подчеркнуть, что шифрование здесь никто не ломал. Проблема в том, что непрозрачность оказалась односторонней. Провайдер спрятал рассуждения от того, кто заплатил за модель, но оставил их потенциально открытыми для всех остальных: для владельца сессии блок выглядел нечитаемым мусором, а для постороннего с ключом от младшей модели — обычным текстом. Разработчик, выкладывающий лог в публичный репозиторий, физически не мог проверить, что именно он публикует. Механизм, который продавался как защита приватности рассуждений, сам стал каналом утечки, потому что защищал совсем от другой угрозы.

Утечка секретов — лишь один из четырёх векторов, описанных авторами. Первый — кража чужого рассуждения в обход защиты от дистилляции. Третий бьёт по безопасности самих моделей: провайдеры фильтруют то, что модель говорит вслух, но не то, что она думает по дороге к ответу. В примере из статьи модель подробно разбирает, машины каких марок и годов выпуска угоняются проще всего и какой детали в них не хватало, а наружу выдаёт вежливые рекомендации. Раньше это никого не смущало, потому что скрытую часть никто не видел. Теперь её можно достать целиком, и выясняется, что фильтр стоял только на витрине.

Четвёртый вектор работает в обратную сторону: не вытащить содержимое блока, а подложить своё. Подделать шифротекст нельзя, но можно заставить модель сгенерировать блок с нужной инструкцией внутри, а потом выложить такой лог в открытый доступ, например среди тысяч чужих агентских логов на Hugging Face. Дальше кто-то скачивает его к себе и скармливает своему агенту как готовый пример. Сервер провайдера послушно расшифрует блок, и модель прочитает чужую инструкцию как собственное прошлое рассуждение, а не как подозрительный текст со стороны. Заметить подмену глазами невозможно: в видимой части лога нет ничего странного, а блок для человека выглядит нечитаемой строкой. Получается, одна и та же свалка чужих траекторий работает в обе стороны: из неё достают секреты и через неё же раздают закладки.

Исследование поднимает серьёзные вопросы о безопасности и приватности в индустрии ИИ. Пока провайдеры не изменят подход к хранению и передаче рассуждений, пользователям стоит быть осторожными с публикацией логов, содержащих зашифрованные блоки, и пересмотреть политику безопасности своих агентов.