
Внутренние рассуждения передовых моделей, которые провайдеры прячут от пользователя, можно прочитать целиком и дословно, причем не атакуя саму модель. Восемь исследователей, в том числе из ELLIS Institute Tübingen, Института интеллектуальных систем Общества Макса Планка, Tübingen AI Center, MATS и Snyk, 10 августа выложили препринт "Stealing Reasoning Traces from Proprietary LLM APIs" с работающей атакой на модели трех крупнейших поставщиков: Anthropic, OpenAI и Google. Попутно авторы прогнали свой метод по публичным репозиториям и достали из чужих зашифрованных блоков 62 ключа API, 33 пароля, 24 токена доступа и еще несколько сотен секретов, о которых их владельцы не подозревали.
Чтобы понять фокус, нужно знать, как сегодня устроена работа с рассуждающими моделями. Когда модель "думает" перед ответом, ее цепочка рассуждений оказывается коммерчески ценной вещью: по ней конкурент может обучить свою модель, а внутри могут лежать системные промпты и внутренние политики безопасности. Поэтому Anthropic, OpenAI и Google перестали отдавать рассуждения в открытом виде: пользователь видит короткое причесанное саммари, а полная запись возвращается клиенту зашифрованным блоком. Состояние диалога сервер у себя не хранит, поэтому этот блок клиент обязан приложить к следующему запросу, чтобы модель "вспомнила", о чем думала. Все это подавалось как защита интеллектуальной собственности и приватности.
Атака занимает два вызова API. Авторы берут зашифрованный блок, который вернула сильная модель, например Claude Opus 4.8, и подкладывают его в запрос к слабой модели того же провайдера, скажем, к Haiku 4.5. Дальше слабую модель просят переписать приложенное рассуждение дословно. Она переписывает. Старшую модель при этом не взламывают вообще: ее защиты от дистилляции просто не срабатывают, потому что к ней никто не обращался. Джейлбрейк нужен, но только для младшей сестры, у которой защитный контур заметно проще. Что расшифровка настоящая, а не правдоподобная выдумка, авторы проверили на 120 задачах с Codeforces: длина восстановленного трейса почти точно совпадает с числом скрытых токенов рассуждения, которое API само сообщает в метаданных.
Дальше начинается часть, которая касается рядовых разработчиков. Авторы собрали 6708 публично выложенных агентских логов с GitHub и Hugging Face: обычные записи работы Claude, GPT и Gemini, которые люди коммитят в репозитории вместе с кодом. Расшифровка дала 315 320 восстановленных блоков рассуждений. В них нашлось 704 уникальных секрета: помимо ключей и паролей, там оказались токены доступа, личные адреса электронной почты, имена, почтовые адреса, внутренние URL и технические идентификаторы. Отдельная деталь, от которой становится неуютно: 64 из этих находок не встречались нигде в видимой части сессии. Они существовали только внутри зашифрованного блока.
Шифрование здесь никто не ломал, ломать было нечего. Проблема в том, что непрозрачность оказалась односторонней. Провайдер спрятал рассуждения от того, кто заплатил за модель, и оставил их потенциально открытыми для всех остальных: для владельца сессии блок выглядел нечитаемым мусором, для постороннего с ключом от младшей модели — обычным текстом. Разработчик, который выкладывал лог в публичный репозиторий, физически не мог проверить, что именно он публикует. Механизм, который продавался как защита приватности рассуждений, сам стал каналом утечки, потому что защищал совсем от другой угрозы.
Утечка секретов — только один из четырех векторов, которые описывают авторы. Первый мы уже разобрали: это кража чужого рассуждения в обход защиты от дистилляции. Третий бьет по безопасности самих моделей. Провайдеры фильтруют то, что модель говорит вслух, но не то, что она думает по дороге к ответу. В примере из статьи модель подробно разбирает, машины каких марок и годов выпуска угонялись проще всего и какой детали в них не хватало, а наружу выдает вежливые рекомендации. До сих пор это никого не смущало, потому что скрытую часть все равно никто не видел. Теперь ее можно достать целиком, и выясняется, что фильтр стоял только на витрине.
Четвертый вектор работает в обратную сторону: не вытащить содержимое блока, а подложить свое. Подделать шифротекст нельзя, но можно заставить модель сгенерировать блок с нужной инструкцией внутри, а потом выложить такой лог в открытый доступ, например среди тысяч чужих агентских логов на Hugging Face. Дальше кто-то скачивает его к себе и скармливает своему агенту как готовый пример. Сервер провайдера послушно расшифрует блок, и модель прочитает чужую инструкцию как собственное прошлое рассуждение, а не как подозрительный текст со стороны. Заметить подмену глазами невозможно: в видимой части лога нет ничего странного, а блок для человека выглядит нечитаемой строкой. Получается, одна и та же свалка чужих траекторий работает в обе стороны: из нее достают секреты и через нее же раздают закладки.
Есть в работе и находка, которая бьет по куда более важному вопросу: можно ли вообще доверять тому, что модель показывает вместо своих мыслей. На части задач AIME расшифрованная запись выглядит так: Opus 4.8 сначала вспоминает готовый ответ ("известная задача, ответ 60, сейчас вспомню"), потом сам в нем сомневается и только после этого начинает считать. Саммари, которое отдает API, эту последовательность не сохраняет и показывает читателю чистый математический вывод. То есть саммари не просто короче полного рассуждения, оно еще и причесано, а в конкретных случаях причесано так, что меняется смысл происходившего. Тема верности цепочек рассуждений обсуждается не первый год, но в случае закрытых API сравнивать саммари до сих пор было не с чем.
Что со всем этим делать. Авторы предлагают набор криптографических и системных мер, суть сводится к тому, чтобы зашифрованный блок нельзя было оторвать от сессии, пользователя и модели, которая его породила. Пока провайдеры этого не сделали, вывод для практика простой и неприятный: зашифрованный блок рассуждений нужно считать обычным секретом. Не выкладывать логи агентских прогонов в публичные репозитории, предварительно их не почистив. Не тащить к себе чужие траектории, не проверив, что внутри. И не полагаться на то, что раз вы сами не можете это прочитать, то и никто не сможет. За последний месяц это уже не первая история, в которой защитный контур вокруг ИИ-инфраструктуры оказывается дырявым с той стороны, с которой его никто не проверял.
P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.

