Уязвимость выполнения команд в MCP: что нужно знать командам безопасности
Источник: VentureBeat · Louis Columbus
Компания Anthropic создала Model Context Protocol (MCP) в качестве открытого стандарта для взаимодействия агентов ИИ с инструментами. OpenAI приняла его в марте 2025 года. Google DeepMind последовала её примеру. В декабре 2025 года Anthropic передала MCP Linux Foundation. Количество загрузок превысило 150 миллионов. Затем четверо исследователей из компании OX Security обнаружили архитектурную проблему, которая затрагивает все эти системы.
Транспорт STDIO в MCP, используемый по умолчанию для подключения агента ИИ к локальному инструменту, выполняет любую поступающую команду операционной системы. Без какой-либо фильтрации. Без границ выполнения между конфигурацией и самой командой. Вредоносная команда возвращает ошибку уже после того, как она была запущена. Цепочка разработки (toolchain) не поднимает никаких тревог.
Исследователи из OX Security Моше Симан Тов Бустан (Moshe Siman Tov Bustan), Мустафа Наамних (Mustafa Naamnih), Нир Задок (Nir Zadok) и Рони Бар (Roni Bar) просканировали экосистему и обнаружили 7 000 серверов с активным транспортом STDIO на публичных IP-адресах — по их оценкам, исходя из этого соотношения, общее число уязвимых экземпляров составляет 200 000. Они подтвердили возможность произвольного выполнения команд на шести живых продакшн-платформах, обслуживающих реальных клиентов. В ходе исследования было выявлено более 10 CVE с высоким или критическим уровнем опасности в LiteLLM, LangFlow, Flowise, Windsurf, Langchain-Chatchat, Bisheng, DocsGPT, GPT Researcher, Agent Zero, LettaAI и других продуктах.
Кевин Карран (Kevin Curran), старший член IEEE и профессор кибербезопасности в Ольстерском университете, независимо от других сообщил изданию Infosecurity Magazine, что данное исследование обнажило «шокирующий пробел в безопасности фундаментальной инфраструктуры ИИ».
Компания Anthropic подтвердила, что такое поведение заложено в архитектуру изначально, и отказалась менять протокол, охарактеризовав модель выполнения STDIO как безопасную по умолчанию, а фильтрацию входных данных — как ответственность разработчика. Такую формулировку дают исследователи из OX; единственное слово, которое Anthropic официально произнесла в качестве комментария — это «ожидаемо» («expected»). Anthropic не выпускала отдельных публичных заявлений и не ответила на запрос VentureBeat о комментарии.
В OX считают, что рассчитывать на правильную фильтрацию входных данных со стороны 200 000 разработчиков — и есть главная проблема. Самый сильный технический контраргумент Anthropic заключается в следующем: очистка STDIO либо сломает сам транспорт, либо сместит полезную нагрузку на один уровень ниже. Обе позиции технически обоснованы. Вопрос в том, что делать, пока эти дебаты продолжаются.
Все ведущие издания осветили это раскрытие уязвимости. Однако ни одно из них не подготовило конкретный пошаговый аудит для каждого продукта, который необходим директору по информационной безопасности для приоритизации рисков в собственных развертываниях MCP. Эта статья — исключение.
Пять вопросов помогут определить, подвержены ли ваши развертывания MCP риску, действуют ли ваши патчи и что именно нужно предпринять в понедельник утром.
Подвержен ли я угрозе?
Если ваши команды развернули любой подключенный к MCP агент ИИ с использованием транспорта STDIO по умолчанию — да. Уязвимость не является ошибкой кодирования в каком-то отдельном продукте. Это конструктивная особенность спецификации MCP от Anthropic, которая перекочевала во все официальные SDK для языков программирования: Python, TypeScript, Java и Rust. Каждый сторонний проект, который доверился протоколу, унаследовал эту проблему.
Специалисты из OX выделили четыре семейства эксплуатаций. Инъекция неаутентифицированных команд через веб-интерфейсы платформ ИИ (продемонстрировано на LangFlow и LiteLLM). Обход средств защиты (hardening) в инструментах, реализующих белые списки команд (продемонстрировано на Flowise и Upsonic, где исследователи обошли белые списки с помощью инъекции аргументов через `npx -c`). Нуль-кликовые (zero-click) инъекции промтов в средах разработки для ИИ (AI-IDE), когда вредоносный HTML-код изменяет локальные конфигурационные файлы MCP. Windsurf (CVE-2026-30615) оказалась единственной IDE, где для эксплуатации не требовалось никаких действий со стороны пользователя, хотя Cursor, Claude Code и Gemini-CLI также уязвимы для этого класса атак. А также распространение вредоносных пакетов через реестры MCP, куда OX отправила безобидный концепт-эксплуант в 11 реестров, и девять из них приняли его без всякой проверки безопасности.
Картер Рис (Carter Rees), вице-президент по ИИ и машинному обучению в компании Reputation и член Комиссии по ИИ штата Юта, заявил издании VentureBeat, что саму концепцию необходимо полностью пересмотреть. «MCP stdio — это привилегированная среда выполнения, а не простой коннектор. Корпоративным командам следует относиться к ней как к производственному доступу к командной строке (shell). Запрещать по умолчанию, использовать белые списки, изолировать в песочнице и перестать надеяться, что проверка входящих данных на стороне потомков сработает в масштабах всей компании», — подчеркнул Рис.
Семейство IDE заслуживает особого внимания, поскольку затрагивает рабочие станции разработчиков, а не серверы. Разработчик, зашедший на контролируемый злоумышленником веб-сайт, может инициировать изменение своего локального файла конфигурации MCP — а в случае с Windsurf это изменение выполняется немедленно без каких-либо запросов на подтверждение. В Cursor, Claude Code и Gemini-CLI требуется определенное взаимодействие с пользователем, но если интерфейс отображает изменение конфигурации, не раскрывая последствий выполнения, нажатие кнопки «одобрить» не является осознанным согласием.
Устранил ли мой вендор уязвимость с помощью патча?
Некоторые — да. Некоторые — частично. Другие еще ничего не подтвердили. Приведенная ниже матрица сопоставляет каждый уязвимый продукт с типом эксплуатации, статусом патча и оставшимися брешами. Самый критический столбец — «Исправлен ли протокол?». В каждой строке стоит «НЕТ».
|
Продукт |
Тип эксплойта |
Есть патч? |
Исправлен протокол? |
Оставшиеся бреши |
Действия |
|
LiteLLM |
Инъекция команд через пользовательский интерфейс адаптера |
ДА |
НЕТ |
LiteLLM исправлен. Новые конфигурации STDIO вне LiteLLM наследуют ту же небезопасную настройку по умолчанию. |
Зафиксируйте версию v1.83.7-stable или новее (CVE-2026-30623). Проверьте соответствие бюллетеню GitHub. Проведите аудит всех остальных определений STDIO. |
|
LangFlow |
RCE через публичный auto_login + STDIO |
Частично |
НЕТ |
Токен аутентификации свободно доступен через публичный эндпоинт. STDIO выполняет всё, что следует далее. |
Заблокируйте публичный auto_login. Изолируйте все службы MCP от хост-оС в песочнице. |
|
Flowise / Upsonic |
Обход белого списка (инъекция аргументов через npx -c) |
Защита усилена, обход подтвержден |
НЕТ |
Белый список создает ложное чувство безопасности. Команда OX его обошла. Задача тривиальная. |
Не полагайтесь на белые списки команд. Обеспечьте изоляцию на уровне процессов (песочницу). |
|
Windsurf (CVE-2026-30615) |
Нуль-кликовая инъекция промтов до локального RCE |
СООБЩЕНО, не подтверждено |
НЕТ |
Единственная IDE с полноценным эксплойтом без взаимодействия с пользователем. Затрагивает рабочие станции разработчиков, а не серверы. |
Отключите автоматическую регистрацию серверов MCP. Проверьте все активные конфигурации вручную. |
|
Cursor / Claude Code / Gemini-CLI |
Инъекция промтов для изменения локальной конфигурации MCP |
Cursor пропатчен (CVE-2025-54136); у остальных по-разному |
НЕТ |
Требуется взаимодействие с пользователем, но интерфейс изменения конфигурации не сообщает о последствиях выполнения. Одобрение не равно осознанному согласию. |
Проведите аудит файлов конфигурации MCP (~/.cursor/mcp.json и аналогичные пути). Отключите авторегистрацию. Проверяйте все ожидающие изменения конфигурации перед их одобрением. |
|
Langchain-Chatchat (CVE-2026-30617) |
RCE через транспорт MCP STDIO |
СООБЩЕНО, не подтверждено |
НЕТ |
Сторонний фреймворк чат-ботов наследует тот же дефолтный STDIO. Статус патча не подтвержден. |
Проведите инвентаризацию всех развертываний Langchain-Chatchat. Изолируйте от хост-ОС. Следите за бюллетенями вендора на предмет выхода патча. |
|
Реестры MCP (9 из 11) |
Приняли вредоносный PoC без проверки |
Н/П |
НЕТ |
В реестрах отсутствует проверка безопасности при подаче пакетов. Установка несет риск получения бэкдора. |
Используйте реестры с документированной процедурой проверки присланного кода. Сверяйте установки с известными безопасными хэшами. |
Устраняет ли патч уязвимость полностью?
Нет. Каждый патч на уровне продукта исправляет лишь конкретную точку входа в этот продукт. Ни один из них не меняет поведение протокола MCP в отношении STDIO. Директор по безопасности, который сегодня пропатчит LiteLLM, а завтра настроит новый сервер MCP STDIO, унаследует ту же небезопасную конфигурацию по умолчанию на новом сервере. Патчи необходимы, но их недостаточно.
Это было предсказуемо. Когда VentureBeat впервые сообщил о проблемах безопасности в MCP в январе, Мритт Бэр (Merritt Baer), директор по информационной безопасности в Enkrypt AI и бывший заместитель CISO в AWS, предупреждала: «MCP поставляется с той же ошибкой, которую мы видели при внедрении каждого крупного протокола: небезопасные настройки по умолчанию. Если с первого дня мы не заложим аутентификацию и принцип наименьших привилегий, мы будем разгребать последствия взломов еще целое десятилетие». Cloud Security Alliance независимо подтвердила выводы OX в отдельной аналитической записке и рекомендовала организациям относиться к инфраструктуре с поддержкой MCP как к активной, неисправленной угрозе. Настройки по умолчанию не изменились. Поверхность атаки увеличилась.
Рис аргументировал свою позицию тем, что подход Anthropic, будучи внутренне непротиворечивым, не выдерживает столкновения с корпоративными реалиями. «Это перестает быть ошибкой разработчика и превращается в системный сбой распределенного характера, когда один и тот же тип сбоя воспроизводится во множестве независимых реализаций», — заявил он в интервью VentureBeat. — «Рекомендации не заменяют архитектурный контроль. Полагаться на то, что тысячи сторонних разработчиков будут единообразно интерпретировать границы доверия — известный антипаттерн в корпоративной безопасности».
Компания Anthropic обновила свой файл SECURITY.md спустя девять дней после того, как специалисты OX связались с ними в январе 2026 года, добавив примечание о том, что адаптеры STDIO следует использовать с осторожностью, однако никаких архитектурных изменений внесено не было. Оценка этого обновления исследователями звучала так: «Это изменение ничего не исправило».
Рис занял более сдержанную позицию. «Стоит отдать Anthropic должное, — отметил он в разговоре с VentureBeat. — После публикации они обновили рекомендации по безопасности, посоветовав проявлять осторожность с адаптерами stdio. Это значимый шаг вперед, даже если исследователи утверждают, что это не решает проблему на уровне протокола».
Что изменилось на уровне протокола?
Ничего в архитектурном плане. Anthropic не внедрила выполнение исключительно на основе манифестов, белые списки команд в официальных SDK или какие-либо другие защитные механизмы на уровне протокола. Все три пункта рекомендовала компания OX. Единственным изменением стало обновление рекомендаций в файле SECURITY.md. Исследование OX началось в ноябре 2025 года и включало более 30 процедур ответственного раскрытия уязвимостей в экосистеме перед публикацией материалов 15 апреля.
Разногласия носят принципиальный характер. Архитектурный аргумент Anthropic имеет право на существование. STDIO — это локальный транспорт подпроцессов, предназначенный для запуска процессов на машине, которая их настроила. В модели Anthropic граница доверия проходит там же, где находится контроль над конфигурационным файлом. Если у вас есть возможность записать данные в конфигурацию MCP, вы по определению являетесь лицом, уполномоченным выполнять команды на этой машине. С этой точки зрения то, что выглядит как инъекция команд, на самом деле является штатной функцией. Ограничение того, что STDIO может запускать на уровне протокола, либо нарушит основную функцию транспорта (поскольку его цель — запуск произвольных локальных процессов), либо сместит поверхность атаки внутрь самого запускаемого процесса. Аргумент об универсальном стандарте без навязывания мнения тоже имеет право на жизнь: универсальный протокол, жестко кодирующий ограничения на выполнение, перестает быть универсальным. Возражение OX из их бюллетеня безопасности звучит так: «Перекладывание ответственности на разработчиков не устраняет риск. Оно лишь скрывает, кто его создал».
Не ждите исправления на уровне протокола. Относитесь к каждой конфигурации MCP STDIO как к ненадежному источнику входных данных, независимо от того, в каком именно продукте она используется.
Последовательность действий по устранению уязвимостей в понедельник утром
Проведите инвентаризацию (Enumerate). Выявите все развертывания серверов MCP в средах разработки, тестирования и продакшна. Найдите файлы конфигурации MCP (mcp.json, mcp_config.json) в домашних директориях разработчиков и путях конфигурации IDE (~/.cursor/, ~/.codeium/windsurf/, ~/.config/claude-code/). Перечислите запущенные процессы, соответствующие бинарным файлам сервера MCP. Отметьте все процессы, использующие транспорт STDIO с доступностью по публичному IP-адресу. Специалисты OX обнаружили 7 000 таких серверов на публичных IP. В вашей инфраструктуре могут оказаться экземпляры, о существовании которых вы даже не подозревали.
Установите патчи (Patch). Зафиксируйте версии всех уязвимых продуктов на их пропатченных релизах. Версия LiteLLM v1.83.7-stable включает исправление уязвимости CVE-2026-30623. DocsGPT, Flowise и Bisheng также выпустили исправления. По состоянию на 1 мая 2026 года Windsurf и Langchain-Chatchat остаются в статусе «сообщено» (reported). Программа Cursor была пропатчена от более ранней связанной уязвимости (CVE-2025-54136), но наследует ту же конфигурацию протокола по умолчанию. Обязательно проверьте бюллетени каждого вендора утром перед выполнением этого шага.
Изолируйте в песочнице (Sandbox). Изолируйте каждую службу с поддержкой MCP от операционной системы хоста. Никогда не давайте серверу полный доступ к диску или привилегии выполнения командной строки. Обход белого списка в Flowise/Upsonic доказывает, что одного лишь ограничения команд недостаточно.
Проведите аудит реестров (Audit registries). Проверьте каждый сервер MCP, установленный из стороннего реестра. Девять из 11 реестров приняли концепт-эксплуант от OX без какой-либо проверки безопасности. Используйте реестры с документированными процессами проверки присылаемого кода. Удалите любые серверы MCP, происхождение которых вы не можете подтвердить.
Относитесь к конфигурации STDIO как к недоверенной. Этот шаг будет актуален и для любых будущих патчей, и для любых будущих продуктов. Настройки протокола по умолчанию не изменились. Каждое определение сервера STDIO представляет собой среду выполнения команд. Относитесь к нему так же, как вы относитесь к вводу пользователя в SQL-запросе: считайте его потенциально враждебным до тех пор, пока он не пройдет валидацию.
Ваша уязвимость не может ждать исправления протокола
Anthropic и OX Security расходятся во мнениях относительно того, на ком лежит ответственность за обеспечение безопасности транспорта MCP STDIO. Эти разногласия не будут урегулированы на текущей неделе. Что действительно можно решить на этой неделе, так это провести инвентаризацию ваших развертываний MCP, установить патчи, поместить их в песочницы и начать относиться к ним как к ненадежным средам выполнения, какими они и являются.
Как выразился Рис: «Главный вопрос здесь касается архитектурной политики, а не самих эксплойтов». Бэр предупреждала в январе, что небезопасные настройки по умолчанию приведут именно к такому исходу. Специалисты OX задокументировали 200 000 серверов, работающих с полем конфигурации, которое одновременно служит средой выполнения. Разработчик протокола утверждает, что все работает так, как и задумывалось. Ваш вопрос в понедельник утром заключается вовсе не в том, кто прав. Вопрос в том, какие именно из ваших серверов подвержены угрозе.



