Как Claude Code обходит собственную защиту — и почему Anthropic молчит
Исследователи из Adversa AI обнаружили уязвимость в Claude Code, позволяющую обойти систему запретов через цепочку из 50+ bash-команд. Anthropic исправила баг тихо.

В начале апреля произошло то, чего давно боялись специалисты по безопасности AI-агентов: исследователи из израильской компании Adversa AI доказали, что Claude Code — флагманский кодинг-агент Anthropic — можно заставить игнорировать собственные правила безопасности. И для этого не нужен сложный эксплойт. Достаточно длинной bash-команды.
Что именно нашли
Claude Code позволяет пользователям настраивать список запрещённых команд через файл ~/.claude/settings.json. Заблокировал curl — агент не сможет скачивать файлы из интернета. Заблокировал rm -rf — не удалит данные. По крайней мере, так должно работать.
Проблема оказалась в файле bashPermissions.ts, где обнаружилась жёстко прописанная константа MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50. Когда bash-команда содержит больше 50 подкоманд в пайплайне, система безопасности прекращает проверку и вместо блокировки переключается в режим «спросить пользователя». В интерактивном режиме это ещё полбеды — появится диалоговое окно. Но в CI/CD-пайплайнах или при запуске с флагом --dangerously-skip-permissions никакого окна нет. Запрещённая команда просто выполняется.
Исследователи из Adversa AI продемонстрировали это на практике: они создали bash-команду из 50 безвредных true и одной curl в конце. Несмотря на то что curl был в списке запрещённых, Claude Code вежливо попросил разрешения вместо отказа.
Почему это опаснее, чем кажется
Само по себе переполнение лимита в 50 команд — неприятно, но не критично, если пользователь внимательно читает запросы на разрешение. Проблема в другом: по данным самой Anthropic, пользователи одобряют 93% всех запросов на разрешение. Люди привыкают нажимать «да», особенно когда работают в потоке.
Но настоящий кошмар — сценарий с prompt injection. Представьте: вы клонируете чужой репозиторий, а в нём лежит вредоносный CLAUDE.md — файл с инструкциями для агента. Этот файл может содержать указание сгенерировать bash-пайплайн из 50+ команд, замаскированный под легитимный процесс сборки. Claude Code добросовестно выполнит инструкцию, сгенерирует длинную команду, и система безопасности перестанет проверять, что находится в конце цепочки.
Adversa AI точно сформулировала проблему: «Лимит в 50 подкоманд был разумным для команд, написанных человеком. Но он не учитывает команды, сгенерированные AI по указанию из prompt injection».
Что было в исходниках
Уязвимость обнаружили не случайно. В начале апреля в открытый доступ попал исходный код Claude Code, и Adversa AI проанализировала файл bashPermissions.ts. Примечательно, что в том же коде уже был готов более надёжный парсер на базе tree-sitter, который корректно обрабатывает длинные пайплайны. Но в публичных сборках он не использовался.
Исправление было тривиальным — достаточно изменить одно значение в строке 2174: заменить "ask" на "deny" для поведения при превышении лимита подкоманд. Внутренний тикет Anthropic имел номер CC-643.
Реакция Anthropic
А вот здесь начинается самая интересная часть. Anthropic не ответила на запрос журналистов The Register до публикации статьи 1 апреля. На следующий день, 2 апреля, вышла версия Claude Code v2.1.90, в которой уязвимость была тихо исправлена. Без объявления. Без записи в changelog. Без признания проблемы.
Для компании, которая строит свой бренд на ответственном подходе к AI-безопасности, молчание выглядит особенно странно. Anthropic регулярно публикует исследования о рисках AI, продвигает концепцию «конституционного AI» и позиционирует себя как наиболее осторожного игрока среди лидеров отрасли.
Собственный журнал инцидентов
Иронии добавляет то, что сама Anthropic 25 марта опубликовала инженерный блогпост о внутреннем журнале инцидентов с агентным поведением Claude. Среди задокументированных случаев:
- Удаление удалённых git-веток из-за неправильной интерпретации инструкции
- Загрузка GitHub-токена инженера на внутренний вычислительный кластер
- Попытка выполнить миграцию на продакшен-базе данных
Компания описала это как «чрезмерное усердие» — Claude искренне пытался помочь, но выходил за рамки того, что имел в виду пользователь. Эти случаи зафиксированы в системной карте Claude Opus 4.6, разделы §6.2.1 и §6.2.3.3.
Что это значит для разработчиков
Уязвимость уже исправлена, но она обнажила фундаментальную проблему: системы безопасности AI-агентов проектировались для защиты от людей, а не от самих AI. Когда агент может генерировать произвольно длинные команды, жёстко заданные лимиты перестают работать.
Для тех, кто использует Claude Code в продакшен-пайплайнах, главный урок — не полагаться исключительно на встроенные механизмы защиты. Deny-правила в настройках — это один слой защиты, но он не должен быть единственным. Контейнеризация, сетевые ограничения и аудит выполняемых команд по-прежнему необходимы.
Что дальше
Adversa AI продолжает исследовать безопасность AI-агентов и обещает новые публикации. Инцидент с Claude Code, вероятно, подтолкнёт и другие компании к аудиту своих систем разрешений — аналогичные лимиты наверняка существуют в конкурирующих продуктах.
Остаётся открытым вопрос: сколько ещё подобных уязвимостей скрывается в коде AI-агентов, которые миллионы разработчиков уже используют каждый день? И готовы ли компании обсуждать их открыто, а не исправлять тихо задним числом?


