RCE по умолчанию: архитектурное решение MCP стало угрозой для экосистемы AI-агентов

Mcp Rce Anthropic Stdio уязвимость ии-агенты csoonline.com

Инструменты для создания ИИ-агентов, использующие протокол MCP, могут быть уязвимы к удаленному выполнению кода из-за архитектурного решения в эталонной реализации Anthropic. Проблема кроется в небезопасных настройках по умолчанию при работе конфигурации MCP через интерфейс STDIO. — csoonline.com

Инструменты для создания ИИ-агентов, позволяющие пользователям настраивать серверы по протоколу Model Context Protocol (MCP), могут подвергать системы риску удаленного выполнения кода из-за архитектурного решения в эталонной реализации Anthropic.

Проблема заключается в небезопасных настройках по умолчанию при работе конфигурации MCP через интерфейс STDIO, что имеет широкие последствия для экосистемы агентов, согласно новому отчету.

«Радиус поражения огромен», — написали исследователи из фирмы по безопасности приложений OX Security в своем отчете о проблеме проектирования. «Этот эксплойт позволил нам напрямую выполнять команды на шести официальных сервисах реальных компаний с реальными платящими клиентами и захватить тысячи общедоступных серверов, охватывающих более 200 популярных проектов с открытым исходным кодом с сотнями миллионов загрузок».

По словам Anthropic и других разработчиков адаптеров MCP, поведение выполнения команд через STDIO является преднамеренным, и ответственность за очистку конфигураций MCP лежит на разработчиках клиентских приложений. Хотя это может быть правдой, на практике OX Security обнаружила, что немногие разработчики пытались фильтровать команды в конфигурациях MCP, и даже те, кто это делал, не смогли перехватить все потенциальные обходы.

Корень проблемы

MCP предоставляет стандартизированный метод для приложений, позволяющий раскрывать источники данных и инструменты для больших языковых моделей (LLM), улучшая их контекст и эффективность в выполнении автоматизированных рабочих процессов. Изначально разработанный Anthropic, MCP стал широко используемой технологией в области агентного ИИ.

Anthropic предоставляет эталонные реализации MCP в виде SDK для различных языков программирования, включая TypeScript, Python, Java, Kotlin, C#, Go, PHP, Ruby, Rust и Swift. Кроме того, другие поставщики фреймворков и функциональности — такие как FastMCP, mcp-adapters от LangChain, agent-framework от Microsoft, mcp-agent, browser-use, run-model-context-protocol-servers-with-aws-lambda от Amazon и NeMo-Agent-Toolkit от NVIDIA — зависят от эталонной реализации modelcontextprotocol от Anthropic.

MCP поддерживает два интерфейса транспорта между серверами и клиентами: потоковый HTTP с Server-Sent Events (SSE), который обычно используется для удаленных серверов MCP и веб-сервисов, и Standard Input/Output (STDIO), для серверов MCP и приложений, работающих локально на той же машине.

При использовании STDIO клиентские приложения могут запускать серверы MCP по требованию в качестве дочернего процесса и передавать им параметры. Эти параметры могут включать пользовательские команды, которые выполняются в системе с правами родительского процесса. Хотя теоретически эти команды предназначены для указания функции StdioServerParameters SDK, как запускать сервер MCP, технически они могут быть чем угодно, если не настроена фильтрация.

Исследователи OX Security считают это проектным недостатком, который следует устранить, но Anthropic не согласна, как и создатели других фреймворков, обеспечивающих функциональность MCP, таких как LangChain и FastMCP. Аргумент заключается в том, что ответственность за обеспечение того, чтобы вредоносный пользовательский ввод не достиг функции выполнения команд SDK, лежит на разработчиках клиентских приложений, которые интегрируют эти фреймворки MCP.

«Шаблон, позволяющий строкам, поставляемым пользователем, напрямую поступать в среду выполнения оболочки, является антипаттерном, от которого следует отказаться», — заявили исследователи OX Security. По их словам, SDK Anthropic по умолчанию должны реализовывать белые списки команд, блокирующие sh, bash, powershell, curl, rm и другие бинарные файлы с высоким риском.

Основная проблема заключается в том, что в настоящее время нет проверки, подтверждающей, что команда STDIO предназначена для инициализации сервера MCP, а не для выполнения вредоносной задачи. Более того, исследователи обнаружили, что даже если отправленная команда не смогла запустить сервер, SDK возвращает ошибку уже после того, как команда была выполнена.

Все современные IDE, такие как VS Code, Cursor и Windsurf, а также кодовые CLI для агентов, такие как Claude Code, OpenAI Codex и Gemini CLI, имеют встроенную поддержку локальных серверов MCP через STDIO. Но то же самое касается бесчисленного множества других агентных ИИ-фреймворков и инструментов с открытым исходным кодом, и немногие из них реализуют белые списки команд STDIO.

RCE в реальных приложениях

Исследователи OX Security потратили последние несколько месяцев на тестирование поддержки MCP в многочисленных инструментах, включая работающие производственные сервисы. Они обнаружили и сообщили о более чем 30 проблемах RCE, вызванных этим проектным решением STDIO, в нескольких проектах, и 10 из них уже получили идентификаторы CVE.

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

Например, некоторые сервисы и инструменты не отключили STDIO внутренне, даже если их пользовательские интерфейсы позволяют настраивать серверы MCP только с помощью потокового HTTP. Так было в случае с Letta AI и DocsGPT, двумя платформами, которые позволяют компаниям создавать ИИ-агентов как через облачные сервисы, так и через локальные развертывания.

«Злоумышленник, создающий сетевой запрос для конфигурации сервера MCP и изменяющий тип транспорта в настроенном JSON, чтобы указать тип STDIO вместо SSE или HTTP, а также добавляющий произвольную команду в полезную нагрузку запроса, может добиться удаленного выполнения команд», — заявили исследователи.

Другой вектор атаки — внедрение промптов, приводящее к вредоносным конфигурациям MCP. Хотя технически все IDE уязвимы к этому — веб-сайты могут содержать скрытые инструкции для агентов LLM по изменению локальных файлов — большинство IDE запрашивают подтверждение у пользователей перед внесением изменений в файлы конфигурации MCP. Исключением стал Windsurf, который по умолчанию напрямую изменял конфигурацию MCP, что приводило к атаке внедрения команд без взаимодействия с пользователем.

Многие другие инструменты не применяют фильтрацию к параметрам MCP STDIO, что означает, что любой пользователь, имеющий доступ к настройке сервера MCP, получает возможность выполнения кода на базовом сервере, включая производственные серверы в случае SaaS-развертываний. К числу уязвимых инструментов относятся LangFlow, GPT Researcher, LiteLLM, Agent Zero, LangBot, Fay Digital Human Framework, Bisheng, Jaaz, Langchain-Chatchat и несколько других, которые исследователи пока не могут раскрыть.

Некоторые разработчики знали о проблеме и пытались укрепить свои реализации с помощью белых списков команд. Однако усиление было недостаточным, и исследователи OX Security обнаружили простые обходы.

Например, Upsonic, фреймворк с открытым исходным кодом для создания ИИ-агентов, реализует белый список, который включает npx, поддерживающий флаг -c (—call), который позволяет передавать пользовательские команды и сценарии оболочки для выполнения npx. Тот же обход был замечен в Flowise, другом фреймворке для создания ИИ-агентов на основе UI, который также ограничивает команды конфигурации MCP, но разрешает npx.

Anthropic (modelcontextprotocol), LangChain (langchain-mcp-adapters), FastMCP, проект browser-use, AWS (run-model-context-protocol-servers-with-aws-lambda), NVIDIA (NeMo-Agent-Toolkit), OpenHands, PromptFoo, Firebase Studio, Gemini CLI, Claude Code, GitHub Copilot и Cursor технически включают код MCP STDIO, который допускает произвольное выполнение команд.

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

См. также:

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

Похожие новости: