Добавить в корзинуПозвонить
Найти в Дзене
DigiNews

Claude Code обходит правила безопасности при получении слишком большого количества команд

Жестко закодированный лимит на правила запрета отключает автоматическое принудительное исполнение для объединенных команд. Уязвимость в Claude Code позволяет обходить блокировку рискованных действий. — theregister.com Claude Code будет игнорировать свои правила запрета, используемые для блокировки рискованных действий, если ему передана достаточно длинная цепочка подкоманд. Эта уязвимость оставляет бота открытым для атак типа prompt injection. Компания Adversa, занимающаяся вопросами безопасности и базирующаяся в Тель-Авиве, Израиль, обнаружила эту проблему после утечки исходного кода Claude Code. Claude Code реализует различные механизмы для разрешения и запрета доступа к определенным инструментам. Некоторые из них, например curl, который позволяет выполнять сетевые запросы из командной строки, могут представлять угрозу безопасности, если их вызовет излишне разрешающая модель ИИ. Один из способов защиты кодирующего агента от нежелательного поведения — это правила запрета, которые не д

Жестко закодированный лимит на правила запрета отключает автоматическое принудительное исполнение для объединенных команд. Уязвимость в Claude Code позволяет обходить блокировку рискованных действий. — theregister.com

Claude Code будет игнорировать свои правила запрета, используемые для блокировки рискованных действий, если ему передана достаточно длинная цепочка подкоманд. Эта уязвимость оставляет бота открытым для атак типа prompt injection.

Компания Adversa, занимающаяся вопросами безопасности и базирующаяся в Тель-Авиве, Израиль, обнаружила эту проблему после утечки исходного кода Claude Code.

Claude Code реализует различные механизмы для разрешения и запрета доступа к определенным инструментам. Некоторые из них, например curl, который позволяет выполнять сетевые запросы из командной строки, могут представлять угрозу безопасности, если их вызовет излишне разрешающая модель ИИ.

Один из способов защиты кодирующего агента от нежелательного поведения — это правила запрета, которые не допускают выполнения определенных команд. Например, чтобы предотвратить использование curl моделью Claude через ~/.claude/settings.json, нужно добавить нечто вроде { "deny": ["Bash(curl:*)"] }.

Однако правила запрета имеют свои пределы. Файл исходного кода bashPermissions.ts содержит комментарий, ссылающийся на внутреннюю проблему Anthropic с обозначением CC-643. В сопроводительной заметке поясняется, что существует жесткий лимит в 50 подкоманд безопасности, установленный переменной MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50. После достижения этого числа агент переходит к запросу разрешения у пользователя. В комментарии указано, что 50 — это достаточный запас для легитимного использования.

“Предположение было верным для команд, созданных человеком”, — заявила команда Adversa AI Red Team в отчете, предоставленном изданию The Register. “Но оно не учитывало команды, сгенерированные ИИ в результате prompt injection — когда вредоносный файл CLAUDE.md предписывает ИИ создать конвейер из 50 и более подкоманд, который выглядит как легитимный процесс сборки”.

Атака с доказательством концепции, проведенная командой Adversa, была простой. Они создали команду bash, которая объединяла 50 подкоманд “true” (бездействующих) и одну подкоманду curl. Claude запросил авторизацию на продолжение вместо того, чтобы полностью запретить доступ к curl.

В сценариях, когда отдельный разработчик отслеживает и одобряет действия кодирующего агента, этот обход правил может быть замечен. Но часто разработчики предоставляют агентам автоматическое одобрение (режим –dangerously-skip-permissions) или просто рефлекторно нажимают “ОК” во время длительных сессий. Риск аналогичен в конвейерах CI/CD, где Claude Code запускается в неинтерактивном режиме.

По иронии судьбы, Anthropic уже разработала исправление — парсер, известный как “tree-sitter”, который также виден в их исходном коде и доступен внутренне, но не в публичных сборках.

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

Исправление было бы простым. У Anthropic уже работает “tree-sitter” внутренне, и простое изменение в одну строку, переключающее ключ “behavior” с “ask” на “deny” в файле bashPermissions.ts на строке 2174, устранило бы эту конкретную уязвимость.

Anthropic не сразу ответила на запрос о комментарии. ®

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

Автор – Thomas Claburn

Оригинал статьи