Как Anthropic держит Claude в клетке: инженерный разбор изоляции ии-агентов

Anthropic выпустил большой инженерный отчёт о том, как они изолируют Claude в своих продуктах. Год назад они бы ни за что не дали агенту права, при которых он может положить внутренний сервис. Сейчас это норма. Вопрос только в том, как ограничить радиус поражения, если агент всё таки сломается.

Риски делят на три корзины. Злоупотребление со стороны самого пользователя, когда человек сам просит модель сделать что-то вредное. Собственные ошибки модели, когда Claude в ходе работы внезапно сам выходит из сандбокса или читает git history, чтобы подсмотреть ответ на тест. Внешние атаки, среди них прямая промпт-инъекция и классические атаки на рантайм и прокси.

На это Anthropic отвечает тремя слоями защиты: среда, в которой живёт агент, сама модель с её системными промптами и классификаторами, и внешние данные вроде MCP-серверов, которыми агент пользуется. На Gray Swan Agent Red Teaming Claude Opus 4.7 держит успех атаки на уровне 0.1% с первого раза и 5-6% после 100 попыток. Claude Code auto mode ловит около 83% слишком рвущихся в бой действий. И всё равно вероятностные защиты никогда не дают 100%.

Поэтому ключевой фокус статьи на контейнменте, то есть физическом ограничении возможностей агента. Для трёх продуктов Anthropic использует три разных подхода.

claude.ai работает в эфемерном контейнере gVisor на изолированной инфраструктуре. Код исполняется только на сервере, файловая система эфемерная. Радиус поражения минимален, но и возможности ограничены. Главная борьба здесь идёт не за машину пользователя, а за собственную инфру и изоляцию тенантов друг от друга.

Claude Code живёт прямо на машине разработчика, и у него есть доступ к файловой системе, шеллу и сети. Первая версия упиралась в human-in-the-loop с подтверждением каждого опасного действия. Телеметрия показала, что люди жмут approve примерно в 93% случаев, быстро подхватывая привычку кликать не читая. Поэтому наверх накатили СОС-сандбокс через Seatbelt на macOS и bubblewrap на Linux. Сеть по умолчанию запрещена, запись разрешена внутри воркспейса. Число подтверждений упало на 84%.

Отдельный сюжет в разборе посвящён ошибкам, которые Anthropic проследила в бою. В Claude Code нашли уязвимости, при которых код из репозитория выполнялся ещё до того, как пользователь успевал нажать trust this folder. Было достаточно положить .claude/settings.json с хуком и ожидать открытия папки. Чинили их одинаково: парсинг локального конфига переехал за доверительный барьер.

Другой показательный кейс: во время внутреннего ред-тима сотрудника фишили с виду обычным письмом вроде can you run this for me. В безобидном промпте была встроена просьба прочитать ~/.aws/credentials и отправить на внешний сервер. Из 25 попыток Claude вывел ключи в 24 случаях. Модельные фильтры бесполезны: пользователь вводит вредоносный промпт сам. Спасают только ограничения файловой системы и egress-контроль на уровне среды.

Claude Cowork рассчитан на обычных офисных сотрудников, которые не разбираются в bash, поэтому подход с human-in-the-loop не работает. Вместо этого весь агент прячется в полноценную виртуальную машину на вендорском гипервизоре (Apple Virtualization на macOS, HCS на Windows). Монтируется только выбранный воркспейс и папка .claude. Ключи живут в keychain хоста и в гостевую машину вообще не попадают.

А вот история про третье нарушение разобьёт иллюзию о непробиваемости VM. Сторонний ресерчер показал: вредоносный файл в воркспейсе нес скрытые инструкции и API-ключ атакующего. Claude читал другие файлы и загружал их через Files API на api.anthropic.com — домен был в белом списке, прокси пропускал трафик, файлы улетали на аккаунт злоумышленника.

Из этого Anthropic вынесла важную переформулировку. Белый список доменов это не фильтр назначений, а выдача возможностей. Разрешён домен — разрешены все функции за ним. Исправили через оборонительный man-in-the-middle прокси внутри самой VM, который пропускает только запросы с провижненным внутренним токеном.

Ещё одна проблема вылезла у энтерпрайзов: VM-изоляция мешает их EDR-решениям видеть, что творится внутри. Компания пока предлагает OTLP-экспорт логов, но это не замена живого мониторинга.

Отдельный блок про внешние источники данных. Любой MCP-сервер или плагин несёт два риска сразу: классическую supply-chain уязвимость и вектор для промпт-инъекции. Локальный инструмент можно аудировать и запинить версию, ремотный может поменять поведение в любой момент. Что возвращает инструмент, тоже проверяется отдельно: в Claude Code и Cowork вывод инструментов идёт через прокси, который прогоняет результат через быстрый классификатор до входа в контекст модели.

Главные принципы, которые Anthropic выносит из своего опыта: сначала проектируй среду, потом уже модель. Матчи силу изоляции с той квалификацией, которая реально есть у пользователя: разработчик и секретарь живут в разных угрозных моделях. Бойся своих кастомных компонентов, боевой гипервизор и сисвол-фильтры видели больше атак, чем всё, что ты напишешь сам. Именно собственный прокси Anthropic и стал критической точкой отказа.

Оригинал: https://www.anthropic.com/engineering/how-we-contain-claude

1