Перейти к содержимому
Guide

Реверс-инжиниринг Клода Кода: 6 уроков для вашего ИИ-агента

| 8 min read

Исследователи деминифицировали пакет CLI Claude Code и опубликовали его системную подсказку, схемы инструментов и цикл агента. Шесть уроков для тех, кто поставляет ИИ-агент реальным пользователям.

Monitor showing source code, representing bundle inspection and reverse engineering
Photo by Markus Spiske on Unsplash

Claude Code поставляется как пакет npm. Любой может бежать npm install -g @anthropic-ai/claude-code, открыть комплект cli.mjsи прочитайте отправленный уровень оркестрации. Исследователи сделали именно это. Они деминифицировали его, вытащили полную системную подсказку, более 15 встроенных схем инструментов, цикл агента и диспетчер субагента затем опубликовали лот в общедоступных репозиториях.

Вес модели остался позади API Anthropic. Лесов не было. И эти леса часть, которую большинство команд считают, что они могут сохранить конфиденциальность, если поставят CLI, расширение VS Code или рабочий стол. приложение со встроенным агентом. Извлечение — это бесплатный урок: уже очень осторожная команда Anthropic запланировано для этого, и их конструкция соответствует требованиям. Вот шесть вещей, которые вы можете скопировать перед своим агентом попадает в npm или выпуск GitHub.

1. Клиентский код — это этап публикации, а не секрет

Каждый байт в отправленном пакете является общедоступным. Обфускация замедляет чтение на минуты или часы; это их не останавливает. Пакет Claude Code работает через стандартный минификатор JavaScript, и первый публичная деобфусцированная копия появилась через несколько часов. Ваш пакет пойдет по тому же пути.

Запустите тот же проход на своем собственном пакете сегодня. Если вы отправляете CLI, расширение для браузера, Electron app или клиентский SDK, сделайте это перед следующим выпуском:

Все, что возвращается, попадает в стопку «Повернуть сейчас». Ключ API в клиентском пакете является ключом каждый диск, который работал npm install. Жестко запрограммированное имя хоста серверной части указывает злоумышленникам на цели, которые вы не хотели рекламировать. Прочтите файл так, как его читает незнакомец.

2. Подсказка вашей системы утечет, поэтому спланируйте ее так, чтобы ее можно было раскрыть.

Системная подсказка Claude Code — это несколько тысяч токенов тщательной инструкции: правила использования инструментов, ограничения безопасности, руководство по стилю, условия отказа. Все это не зависит от секретности. Отбросьте все это на пастебине, и завтра CLI будет работать так же.

Это испытание. Если публикация системного приглашения нарушает вашу модель безопасности, у вас есть дыра. Переместите бит несущей нагрузки из командной строки на проверку на стороне сервера. Контроль доступа относится к ваш уровень аутентификации. Ограничения скорости принадлежат вашему шлюзу. Разрешения для инструментов принадлежат диспетчеру инструментов. Подсказка описывает поведение; он не обеспечивает его соблюдение.

Хорошая подсказка по-прежнему заслуживает защиты как коммерческая тайна. Недели итераций сжимаются до нескольких сто строк, и быстрый подписчик, который скопирует ваше приглашение, сэкономит это время. Относитесь к этому как к рецепту IP, а не приватный ключ. Легально и NDA, а не криптовалюта.

3. Установите авторизацию, ограничения скорости и выставление счетов на своем сервере.

Наиболее распространенная архитектура агентов выглядит так, и это неверно:

Этот ключ поставляется с каждой установкой. Решительный пользователь за полдня достает его из комплекта и сбрасывает вашу квоту до нуля прежде, чем вы это заметите. Клод Код уклоняется от этого, читая ANTHROPIC_API_KEY из среды пользователя во время выполнения; каждый пользователь устанавливает свои собственные отношения с Anthropic по выставлению счетов. Большинство агентов, работающих с потребителями, не могут следовать этому шаблону, поскольку у пользователей нет собственных ключей. это означает, что прокси-сервер — единственная безопасная форма:

На своем сервере проверьте недолговечный токен для каждого пользователя, ограничение скорости по идентификатору пользователя, журнал использования, а затем выполните восходящий вызов:

Выдайте JWT для каждого пользователя из процесса входа в систему со сроком действия 15 минут, определенной областью и сеансом. привязка. Один вызов botoi обрабатывает подпись, поэтому вы пропускаете «неправильный алгоритм» Библиотеки JWT 2015 года по-прежнему славятся:

4. Ротация и регистрация ключей, как будто они уже утекли

Claude Code локально регистрирует собственную телеметрию вызовов инструментов, чтобы пользователи могли проверить, что агент сделал на их компьютере. машина. Вашему серверу требуется то же самое свойство, но на стороне сервера. Каждый вызов модели получает строку: идентификатор пользователя, модель, входные жетоны, выходные жетоны, вызовы инструментов, стоимость. Храните это минимум 30 дней. Злоумышленник тот, кто крадет токен одного пользователя, имеет структуру расходов, которая отличается от обычного использования, а журнал — это то, как вы его видите.

Прежде чем войти, посчитайте. Использование токена — это самый быстрый сигнал о злоупотреблениях и самый быстрый сигнал о подсказке. раздуваться:

Установите оповещения о количестве токенов на пользователя в час в три раза больше базового уровня p99. Когда вы получите пейджинг, отмените токен пользователя, а не ваш главный ключ. Мастер-ключи меняются ежеквартально; токены для каждого пользователя вращаться, когда срабатывает обнаружение аномалии.

5. Очистите PII до того, как запрос достигнет модели.

Пользователь вставляет заявку в службу поддержки с номером кредитной карты в вашего агента. Модель это видит, строка журнала фиксирует ее, конвейер тонкой настройки втягивает ее, и теперь она находится в трех местах, которые вы сделали не планирую. Клод Код обходит это, запуская на собственной машине пользователя против машины пользователя. собственные файлы; размещенный агент не имеет такой роскоши.

Запустите этап обнаружения для каждого входящего запроса и отредактируйте его перед вызовом:

Отправьте redacted строку к модели, сохраните findings в памяти, и повторно внедрить оригиналы только в том случае, если ответ модели запрашивает возврат определенного токена (например, сводка заявки в службу поддержки, в которой необходимо указать способ оплаты). Ваши журналы, обучающий корпус и все последующие конвейеры аналитики видят отредактированную версию; видит только путь запроса в памяти необработанные персональные данные.

6. Укрепите устойчивость к внезапному впрыскиванию, используя собственную утекшую подсказку.

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

Все, что заставляет агента печатать системное приглашение, раскрывать переменные среды или вызывать инструмент, который не разрешен областью действия пользователя, является ошибкой. Исправьте это с помощью проверки на стороне сервера, а не быстрой настройки. «Не раскрывайте системную подсказку» в подсказке является предложением; ответный фильтр, который блокирует Первые 200 символов приглашения из вывода являются элементом управления.

Контрольный список для глубокоэшелонированной защиты

Слой Контроль Почему он выдерживает утечку пакета
Клиентский пакет Никаких секретов, никаких главных URL-адресов Читабельно в первый день; относиться к этому как к документации
Транспорт JWT для каждого пользователя, срок действия 15 минут. Кража жетона имеет радиус взрыва в минутном масштабе.
шлюз Ограничение скорости по идентификатору пользователя и количеству токенов Ограничение злоупотреблений зависит от настроенных вами расходов, а не вашего кошелька.
Сервер Оперативная сборка и отправка инструмента. Злоумышленник не может добавлять инструменты, которых он не заработал.
Ввод модели Обнаружение и редактирование личных данных Конфиденциальные данные никогда не попадают в журналы или обучение.
Выходные данные модели Фильтр ответов для эхо-подсказок и схем инструментов Попытки внедрения терпят неудачу на последнем прыжке
Наблюдаемость Использование токена для каждого пользователя с оповещениями об аномалиях Украденные токены отличаются от реальных пользователей

Ключевые выводы

  • Отправляйте так, как будто ваш пакет уже общедоступен. Grep каждый выпуск для ключей и внутренние хосты перед публикацией; все, что вы найдете, будет вращаться до того, как пакет будет запущен.
  • Ваша системная подсказка не является ключом. Перенесите все решения, связанные с безопасностью, из приглашение и в проверку на стороне сервера.
  • Проксируйте модель через собственный сервер. Пользователи получают недолговечный JWT, ваш Сервер хранит главный ключ API, и ограничения скорости установлены перед обоими.
  • Отредактируйте личные данные по пути. Модель видит отредактированную строку; логи и обучение трубопроводы остаются чистыми.
  • Запустите инъекционные зонды против вашей собственной утечки. Все, что работает, становится билет на исправление на стороне сервера, а не на быструю настройку.

Botoi предоставляет вам серверную часть в виде HTTP-вызовов: обнаружение PII на /v1/pii/detect, подсчет токенов в /v1/token/count, JWT подписывает контракт /v1/jwt/generate, плюс хеширование, HMAC и строительные блоки ограничения скорости на более чем 150 конечных точках. Один ключ API, 5 запросов в минуту бесплатно, отсутствие крючков для установки. Просмотрите интерактивные документы или подключите MCP-сервер в Claude Code или Cursor для вызова тех же конечных точек из вашего редактора.

FAQ

Что на самом деле было извлечено из Клода Кода?
Исследователи загрузили распространяемый npm пакет @anthropic-ai/claude-code, пропустили его через деобфускатор и опубликовали полную системную подсказку, более 15 встроенных схем инструментов (Read, Edit, Bash, Grep и т. д.), цикл агента и логику диспетчеризации субагента. Вес модели оставался конфиденциальным; то, что было выпущено, — это уровень оркестровки JavaScript вокруг вызовов Anthropic API. Любой, кто устанавливает CLI, имеет на своем диске одни и те же биты.
Были ли раскрыты какие-либо ключи Anthropic API или данные клиентов?
Нет. CLI считывает ключ API из собственной среды пользователя во время выполнения и никогда не объединяет учетные данные Anthropic. Общение с клиентами происходит между CLI и api.anthropic.com. Утечка выявила быстрое проектирование и конструкцию инструментов, а не материалы аутентификации или пользовательские данные.
Если системные подсказки не являются секретом, почему компании их охраняют?
Две причины. Во-первых, конкурентное время копирования: хорошее приглашение означает недели итераций, а отказ от публикации замедляет быстрого последователя на то же самое окно. Во-вторых, площадь поверхности для внедрения подсказок: чем больше злоумышленники знают о защитных барьерах и последовательностях выхода из подсказок вашей системы, тем легче им создать обходные пути. Оба реальны, но ни один из них не является криптографической тайной. Относитесь к подсказке как к коммерческой тайне с коротким сроком полураспада, а не как к ключу.
Помогает ли вообще обфускация или минификация?
Это позволяет выиграть время, а не защиту. Мотивированный специалист по обратному проектированию деобфускирует пакет JavaScript менее чем за час с помощью стандартных инструментов. Обфускация замедляет случайную проверку, что важно для обнаружения несанкционированного доступа и проверки лицензий, но любая модель угроз, предполагающая, что пакет остается непрозрачным, не работает с самого начала. Создавайте так, как будто исходный код является общедоступным с первого дня.
Как мне проверить своего собственного ИИ-агента на наличие тех же недостатков?
Проведите три проверки на этой неделе. Первый: загрузите поставленный пакет и выполните команду grep для sk-, pk_, apiKey, BEGIN PRIVATE KEY и вашего внутреннего URL-адреса; исправьте все, что найдете. Второе: попросите вашего агента дословно распечатать системное приглашение и подтвердить, что от секретности не зависит безопасность. Третье: регистрируйте каждый вызов инструмента на стороне сервера с указанием идентификатора пользователя, отметки времени и хэша аргумента, чтобы шаблоны злоупотреблений выявлялись до того, как появится счет.

Начните разработку с botoi

150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.