В клиенте Claude Code обнаружена скрытая стеганографическая маркировка прокси и AI-платформ

Claude

Исследователь безопасности при анализе приватности клиента Claude Code (версия 2.1.196) выявил недокументированную функцию, которая незаметно изменяет системный промпт в зависимости от сетевого окружения и часового пояса. Функция классифицирует точку подключения API на основе домена и ключевых слов, а результат кодируется с помощью визуально неразличимых символов Unicode в строке с датой. Эта находка заставляет пересмотреть уровень доверия к инструментам разработчика с доступом к файловой системе и shell.

Claude Code - это программируемый агент, которому пользователи предоставляют широкие права: чтение репозиториев, выполнение команд, работу с Git и браузером. Такие агенты, как правило, получают доступ к критическим данным и системам, поэтому их внутреннее устройство заслуживает отдельной проверки. В рамках исследования приватности была изучена установка Claude Code на локальной машине. Бинарный файл оказался подписан командой Anthropic (идентификатор com.anthropic.claude-code, группа Q6L2SF6YDW). Внутри минифицированного кода обнаружилась функция, отвечающая за формирование строки с текущей датой в системном промпте.

Нормальная строка выглядит так: Today's date is 2026-06-30. Однако клиент может бесшумно заменить апостроф и разделитель даты. Вместо обычного апострофа "'" подставляются символы "\u2019", "\u02BC" или "\u02B9" - в зависимости от того, подключено ли устройство к известному домену-посреднику или содержит ли домен ключевые слова, связанные с китайскими AI-лабораториями. Кроме того, если часовой пояс установлен на Asia/Shanghai или Asia/Urumqi, разделитель даты меняется с "-" на "/". Все эти изменения визуально не заметны в моноширинных шрифтах и не влияют на чтение строки пользователем или моделью.

Механизм активируется только при установке переменной окружения "ANTHROPIC_BASE_URL". Если переменная не задана или указывает на официальный эндпоинт "api.anthropic.com", функция возвращает пустой результат, и строка даты остаётся неизменной. В противном случае клиент проверяет имя хоста из URL. Для этого в бинарнике хранится два списка, закодированных в Base64 с XOR-ключом 91.

Первый список содержит ключевые слова, идентифицирующие AI-лаборатории: deepseek, moonshot, minimax, zhipu, bigmodel, baichuan, stepfun, 01ai, dashscope, volces и другие.

Второй список включает несколько сотен доменов, среди которых "baidu.com", "alibaba-inc.com", "bytedance.net", "kuaishou.com", "xiaohongshu.com", "jd.com", "bilibili.co", а также множество доменов-прокси и шлюзов, таких как "anyrouter.top", "claude-code-hub.app", "claude-opus.top", "openclaude.me", "proxyai.com", "yunwu.ai", "zenmux.ai".

Полный перечень доменов опубликован в общедоступном репозитории, и анализ кода подтверждает, что логика была намеренно спрятана. Если домен попадает в список известных прокси, используется один апостроф; если содержит ключевое слово AI-лаборатории - другой; если выполняется оба условия - третий, четвёртый. Результат вставляется в системный контекст, который отправляется в модель. Таким образом, Anthropic получает возможность различать трафик от официальных клиентов и от посредников уже на уровне содержимого промпта.

Такая техника называется стеганографией промпта - скрытое внесение маркера в визуально обычный текст. Она позволяет передавать классификацию точки подключения без явного добавления полей телеметрии. При этом сама классификация может использоваться для выявления неавторизованных шлюзов API, реселлеров и, предположительно, "атак дистилляции" моделей. Однако реализация вызывает вопросы. Вместо прозрачной отправки идентификатора в запросе или документированного телеметрийного поля Anthropic выбрала скрытое изменение системного промпта. Для инструмента, который просит доверия и имеет доступ к конфиденциальным данным, такой подход подрывает доверие.

Для обычных пользователей, подключающихся напрямую к официальному API, функция неактивна. Риск возникает у тех, кто использует кастомные базовые URL: внутренние шлюзы, локальные прокси, модели-роутеры, исследовательские стенды. Именно эти пользователи могут быть ошибочно классифицированы как злоумышленники, хотя не нарушают условий использования. При этом обойти механизм тривиально: достаточно изменить имя хоста, часовой пояс, пропатчить бинарник или обернуть процесс.

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

Комментарии: 0