Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Anthropic переоценила внимательность программистов

В коде ИИ-агента нашли нелепую ошибку, которая позволяет обходить правила безопасности.

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

Claude Code умеет ограничивать доступ к потенциально опасным инструментам. Например, администратор может запретить агенту использовать curl — утилиту для сетевых запросов — добавив соответствующее правило в файл настроек ~/.claude/settings.json. Казалось бы, надёжная защита. Но в исходном коде агента, который недавно утёк в открытый доступ, Adversa нашла любопытный комментарий.

В файле bashPermissions.ts обнаружилась константа MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50. Она задаёт жёсткий лимит: агент проверяет на соответствие правилам безопасности не более 50 подкоманд в одной строке. Если подкоманд больше, Claude Code вместо автоматической блокировки просто спрашивает у пользователя разрешения. Комментарий в коде поясняет, что 50 — щедрый лимит для нормальной работы. Для команд, написанных человеком, это действительно так. Но создатели агента не учли сценарий, при котором вредоносный файл CLAUDE.md заставляет ИИ самостоятельно сгенерировать конвейер из 50 и более подкоманд, замаскированных под легитимный процесс сборки.

Команда Adversa проверила уязвимость на практике: исследователи составили bash-команду из 50 пустых подкоманд true и одного вызова curl. Агент не заблокировал curl, а запросил разрешение у пользователя. Во время долгих сессий разработчики нередко машинально подтверждают подобные запросы — или вовсе включают режим --dangerously-skip-permissions, при котором агент действует полностью автономно. CI/CD-конвейеры, запускающие Claude Code в неинтерактивном режиме, уязвимы по той же причине.

Примечательно, что Anthropic уже располагает готовым решением. В исходном коде присутствует парсер tree-sitter, способный корректно анализировать bash-команды любой сложности. Кроме того, по данным Adversa, достаточно изменить одну строку в файле bashPermissions.ts — заменить значение ключа behavior с ask на deny. Эта правка закрыла бы уязвимость, однако в публичных сборках Claude Code изменение так и не появилось. Adversa настаивает: речь идёт об ошибке в механизме применения политик безопасности, которая может иметь последствия с точки зрения регуляторных требований.

SecurityLab