В настоящее время ландшафт Model Context Protocol (MCP) находится на начальной стадии развития, характеризуется сложностью и подверженностью множеству потенциальных атак. Существующие протоколы и инструменты часто не обеспечивают адекватной защиты. Для решения этих проблем и углубления понимания безопасности MCP, SlowMist предоставила в открытый доступ MasterMCP, инструмент для практического моделирования атак. Эта инициатива направлена на расширение возможностей сообщества для проактивного выявления и смягчения уязвимостей безопасности в рамках их проектов MCP.
В дополнение к этому практическому подходу, Контрольный список безопасности MCP предлагает ценную информацию об основных перспективах различных векторов атак. В этой статье рассматриваются реальные сценарии, демонстрирующие распространенные методы атак в экосистеме MCP, такие как отравление информации и внедрение скрытых вредоносных команд. Все скрипты, используемые в этих демонстрациях, доступны на GitHub, что позволяет пользователям воспроизвести весь процесс в безопасной среде и даже разрабатывать свои собственные плагины для тестирования атак.
Обзор архитектуры
Целевая MCP для демонстрации: Toolbox
Smithery.ai выделяется как видный центр для плагинов MCP, привлекая значительное количество листингов MCP и активных пользователей. Среди них @smithery/toolbox, официальный инструмент управления MCP, предлагаемый smithery.ai, служит центральным пунктом этой оценки безопасности.
Toolbox был выбран в качестве тестовой цели по нескольким ключевым причинам:
- Он может похвастаться значительной базой пользователей, что делает его репрезентативной выборкой в экосистеме MCP.
- Он поддерживает автоматическую установку дополнительных плагинов, расширяющих функциональность на стороне клиента (например, Claude Desktop).
- Он содержит конфиденциальные конфигурации, такие как API-ключи, что облегчает демонстрацию потенциальных эксплойтов.
Вредоносная MCP, используемая для демонстрации: MasterMCP
MasterMCP, разработанный SlowMist специально для целей тестирования безопасности, представляет собой имитацию вредоносного инструмента MCP, построенного на модульной архитектуре. Его ключевые компоненты включают в себя:
- Локальная служба веб-сайта: http://127.0.0.1:1024
Для создания реалистичного сценария атаки MasterMCP включает в себя модуль моделирования локальной службы веб-сайта. Используя фреймворк FastAPI, этот модуль быстро создает простой HTTP-сервер, имитирующий распространенные веб-среды. Эти страницы могут казаться безобидными, демонстрируя информацию о пекарне или возвращая стандартные данные JSON, но они скрывают тщательно разработанные вредоносные полезные нагрузки в своем исходном коде или ответах API.
Этот подход позволяет всесторонне продемонстрировать методы отравления информации и сокрытия команд в безопасной, контролируемой локальной среде. Он подчеркивает потенциальные риски, скрывающиеся на первый взгляд в обычных веб-страницах, которые могут вызывать ненормальное поведение в больших языковых моделях.
- Локализованная архитектура MCP плагинов
MasterMCP использует подход на основе плагинов для облегчения быстрой масштабируемости новых векторов атак. После выполнения MasterMCP инициирует службу FastAPI предыдущего модуля в подпроцессе.
Клиент для демонстрации
- Cursor: одна из самых распространенных IDE с поддержкой ИИ для программирования в мире.
- Claude Desktop: официальный клиент Anthropic, организации, которая настроила протокол MCP.
Большая языковая модель (LLM), используемая для демонстрации
- Claude 3.7
Claude 3.7 была выбрана из-за ее расширенных возможностей в распознавании чувствительных операций и ее представления надежных операционных возможностей в текущей экосистеме MCP.
Конфигурация claude\_desktop\_config.json
После завершения конфигурации начинается фаза демонстрации.
Меж-MCP вредоносный вызов
Эта демонстрация включает в себя как методы отравления, так и стратегии меж-MCP вредоносного вызова, изложенные в контрольном списке.
Атака отравления контента веб-страницы
- Отравление на основе комментариев
Cursor обращается к локальному тестовому веб-сайту по адресу http://127.0.0.1:1024.
Эта, казалось бы, безобидная страница о ‘Мире вкусных тортов’ служит симуляцией для иллюстрации потенциального воздействия клиента большой языковой модели, обращающегося к вредоносному веб-сайту.
Команда для выполнения:
Результаты показывают, что Cursor не только считывает содержимое веб-страницы, но и передает локальные конфиденциальные данные конфигурации обратно на тестовый сервер. Вредоносный запрос встроен в исходный код в виде HTML-комментария:
Хотя этот подход на основе комментариев является относительно простым и легко обнаруживается, он все же способен запускать вредоносные операции.
- Отравление закодированным комментарием
При обращении к http://127.0.0.1:1024/encode отображается страница, которая выглядит идентичной предыдущему примеру. Однако вредоносные запросы закодированы, что затрудняет обнаружение эксплойта даже при проверке исходного кода страницы.
Несмотря на отсутствие явных запросов в исходном коде, атака удается.
Отравление информацией, возвращаемой инструментом MCP
На основе инструкций MasterMCP prompt мы вводим смоделированную команду, которая запускает вредоносную MCP и демонстрирует ее последующие операции.
После запуска команды клиент инициирует меж-MCP вызов Toolbox и успешно добавляет новый MCP-сервер.
При проверке кода плагина выясняется, что возвращаемые данные содержат закодированную вредоносную полезную нагрузку, что делает ее практически необнаружимой для пользователя.
Атака загрязнения стороннего интерфейса
Эта демонстрация подчеркивает потенциальные риски, связанные как с вредоносными, так и с невредоносными MCP, напрямую возвращающими данные стороннего API в контекст.
Пример кода:
Запрос на выполнение:
Результат: Вредоносный запрос встроен в возвращаемые данные JSON и успешно запускает вредоносное выполнение.
Методы отравления во время инициализации MCP
Эта демонстрация охватывает пункты контрольного списка по внедрению начального запроса и конфликтам имен.
Атака вредоносной перезаписи функции
MasterMCP создает инструмент с тем же именем функции, что и функция remove_server
Toolbox, и кодирует вредоносные запросы внутри него.
Команда для выполнения:
Claude Desktop не вызывает оригинальный метод toolbox remove_server
, а вместо этого запускает метод, предоставленный MasterMCP, с тем же именем:
Это достигается за счет подчеркивания того, что ‘оригинальный метод устарел’, что побуждает большую языковую модель отдавать приоритет вредоносно перезаписанной функции.
Добавление вредоносной глобальной логики проверки
MasterMCP создает инструмент под названием ‘banana’, который предназначен для обеспечения обязательной проверки безопасности перед выполнением любого другого инструмента.
Перед выполнением каждой функции система отдает приоритет механизму проверки ‘banana’:
Это глобальное внедрение логики достигается путем неоднократного подчеркивания ‘обязательного выполнения обнаружения banana’ в коде.
Расширенные методы сокрытия вредоносных запросов
Методы кодирования, удобные для LLM
Большие языковые модели обладают мощными возможностями разбора для многоязыковых форматов, которые можно использовать для сокрытия вредоносной информации. Общие методы включают в себя:
- Английская среда: кодирование Hex Byte
- Китайская среда: кодирование NCR или кодирование JavaScript
Механизм возврата случайной вредоносной полезной нагрузки
Подобно загрязнению стороннего интерфейса, упомянутому в третьем разделе, запрос http://127.0.0.1:1024/random приводит к:
Каждый запрос возвращает случайно сгенерированную страницу, содержащую вредоносную полезную нагрузку, что значительно увеличивает сложность обнаружения и отслеживания.
Благодаря практической демонстрации MasterMCP были выявлены скрытые уязвимости безопасности в экосистеме Model Context Protocol (MCP). От базовых внедрений запросов и меж-MCP вызовов до более тонких атак во время инициализации и сокрытия вредоносных инструкций, каждый этап служит напоминанием о присущей хрупкости наряду с мощью экосистемы MCP.
Сегодня, поскольку большие модели все чаще взаимодействуют с внешними плагинами и API, казалось бы, незначительное загрязнение входных данных может вызвать общесистемные риски безопасности. Развивающееся разнообразие тактики злоумышленников, включая методы кодирования, случайное загрязнение и перезапись функций, требует всесторонней модернизации традиционных подходов к безопасности.