Опасная уязвимость, обнаруженная в популярной модели Claude Code от Anthropic, предназначенной для разработчиков, могла позволить злоумышленникам получить контроль над системой жертвы, подманив её нажать на специально созданную вредоносную ссылку.
Получив доступ, злоумышленник мог бы воспользоваться уязвимостью, позволяющей удаленно выполнять код (RCE), для запуска произвольных команд — например, команд оболочки — в модели Claude Code целевого пользователя.
Уязвимость в версии 2.1.118 модели уже исправлена, но это еще один пример проблем безопасности в этих инструментах, ориентированных на разработчиков, которые возникают по мере ускорения их внедрения.
Опрос более 1000 разработчиков по всему миру, проведенный CodeSignal — компанией, предлагающей платформу для оценки и развития технических навыков на базе ИИ, — показал, что 81% респондентов заявили, что используют ИИ для разработки, при этом компании все чаще вводят обязательное использование помощников по кодированию.
Уязвимость RCE в Claude Code была обнаружена исследователем в области безопасности Joernchen из 0day.click, когда он вручную прорабатывал исходный код модели, «изучая различные варианты конфигурации и пытаясь понять, что на самом деле «полезно» с точки зрения злоумышленника».
Проблема с синтаксическим анализом
После некоторого «исследования раннего кода в main.tsx» Joernchen написал, что обнаружил проблему в функции eagerParseCliFlag в файле main.tsx модели, которая используется для разбора определенных флагов командной строки, таких как –settings, до запуска основного маршрута инициализации.
Проблема возникла из-за eagerParseCliFlag, функции в main.tsx, предназначенной для разбора критически важных флагов, таких как –settings, до запуска основной процедуры инициализации.
«Я пришел к выводу, что этот стиль разбора был очень удобен для эксплуатации обработки глубоких ссылок в Claude Code», — написал исследователь. «Обычно обработчики глубоких ссылок уязвимы для некоторых проблем с выходом из оболочки. Однако в данном случае это не было проблемой».
Проблема, по его словам, заключалась в том, что eagerParseCliFlag «наивно анализировала» всю командную строку с любой строкой, начинающейся с «–settings=…», а не фактические флаги командной строки и их значения.
Внедрение произвольных настроек
«В сочетании с обработчиком диплинков Claude Code для URI claude-cli://open это создавало удобную для эксплуатации уязвимость», — написал Йорнхен. «Благодаря такому поведению при разборе было возможно внедрить произвольные настройки в запущенный экземпляр Claude Code, включая выполнение произвольных команд через настройку hooks».
Обработчик диплинков использовал опцию, предназначенную для предварительного заполнения запроса пользователя параметром q диплинка. Однако слишком «нетерпеливый» парсер настроек не заметил, что любой –settings=…, используемый в качестве аргумента для опции CLI –prefill, является аргументом опции, а не самой опцией. В результате «нетерпеливый» парсер обрабатывал его как легитимный флаг настроек.
Создание модели
Йорнхен продемонстрировал пример того, как внедрить хук SessionStart через специально созданную глубокую ссылку, предназначенную для операционной системы macOS. Если цель открывает ссылку, запускается модель Claude, создавая новый и независимый агент, который включает настройки, предоставленные злоумышленником, в комплекте с внедренной командой. Команда вступает в действие при запуске сеанса, без необходимости каких-либо дополнительных действий со стороны пользователя.
По словам Йорнхена, проблема усугубляется тем, что злоумышленник может обойти диалоговое окно доверия рабочего пространства.
«Если параметр repo в глубокой ссылке установлен на репозиторий, который пользователь уже клонировал локально и доверил (например, anthropics/claude-code), выполнение происходит без каких-либо предупреждающих сообщений», — написал исследователь.
Он добавил, что «использование startsWith на полном массиве командной строки — это несколько проблематичный антипаттерн, который позволяет незаметно вставлять флаги в значения. Разбор флагов командной строки и их аргументов всегда должен выполняться в полном контексте, чтобы предотвратить именно этот тип внедрения».
Читайте также
- С помощью Claude Managed Agents компания Anthropic готова управлять вашими ИИ-агентами за вас
- Процедуры Claude Code: ответ компании Anthropic на задачу автоматизации разработки без участия человека
- Anthropic внедряет систему проверки личности в Claude
Подписывайтесь на наш канал в Телеграм
⚡ Подписаться