Екосистемата на протокола за контекст на модела (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: Един от най-широко използваните AI-асистирани 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, въвеждаме симулирана команда, която задейства злонамерения 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 бяха разкрити скритите уязвимости в сигурността в рамките на екосистемата на протокола за контекст на модела (MCP). От основни инжекции на подканващи текстове и кръстосани MCP повиквания до по-фини атаки по време на инициализация и прикриване на злонамерени инструкции, всеки етап служи като напомняне за присъщата крехкост заедно със силата на MCP екосистемата.
Днес, тъй като големите модели все повече взаимодействат с външни приставки и API, привидно незначително замърсяване на входа може да предизвика системни рискове за сигурността. Развиващотото се разнообразие от тактики на нападателите, включително техники за кодиране, случайно замърсяване и презаписване на функции, налагат цялостна надстройка на традиционните подходи за сигурност.