Прихована отрута і маніпуляції в системі MCP: практична демонстрація
MCP (Model Context Protocol) система наразі все ще перебуває на ранній стадії розвитку, загальне середовище є досить хаотичним, різноманітні потенційні способи атак з'являються один за одним, існуючі протоколи та інструменти важко розробити для ефективного захисту. Щоб допомогти спільноті краще усвідомити та підвищити безпеку MCP, з'явився відкритий інструмент під назвою MasterMCP. Цей інструмент має на меті шляхом реальних атак допомогти розробникам вчасно виявити безпекові вразливості в дизайні продукту, таким чином поступово посилюючи проект MCP.
Ця стаття познайомить читачів із практичними аспектами, продемонструвавши поширені способи атак в системі MCP, такі як інформаційне отруєння, приховані шкідливі команди та інші реальні приклади. Усі сценарії, що використовуються під час демонстрацій, також будуть відкрито опубліковані, читачі зможуть повністю відтворити весь процес у безпечному середовищі, навіть на основі цих сценаріїв розробити свої власні плагіни для тестування атак.
Загальний огляд архітектури
Демонстраційна атака на ціль MCP: Toolbox
Деякий плагінний сайт є одним із найпопулярніших сайтів плагінів MCP, який зібрав велику кількість списків MCP та активних користувачів. Серед них офіційно випущений інструмент управління MCP Toolbox був обраний як ціль для тестування, ґрунтуючись на таких основних моментах:
Велика база користувачів, є представницькою
Підтримка автоматичної установки інших плагінів, доповнення деяких функцій клієнта
Містить чутливу конфігурацію (, таку як API Key ), що полегшує демонстрацію
демонстраційний шкідливий MCP: MasterMCP
MasterMCP є інструментом для моделювання зловмисного MCP, спеціально розробленим для тестування безпеки, який має плагінну архітектуру та містить такі ключові модулі:
Місцеві послуги веб-сайтів симуляція:
Щоб більш реалістично відтворити сцену атаки, MasterMC вбудував модуль симуляції локального веб-сервісу. Він швидко створює простий HTTP сервер за допомогою фреймворку FastAPI, що імітує звичне веб-середовище. Ці сторінки на перший погляд виглядають нормально, але насправді в коді сторінки або у відповіді API приховані ретельно спроектовані шкідливі вантажі.
Таким чином, ми можемо в безпечному, контрольованому локальному середовищі повноцінно продемонструвати такі методи атаки, як отруєння інформації, приховування команд тощо, що допоможе читачеві більш наочно зрозуміти: навіть звичайна веб-сторінка може стати джерелом ризику для виконання ненормальних дій великими моделями.
Локальна плагінна архітектура MCP
MasterMCP використовує плагінізовану архітектуру для розширення, що дозволяє швидко додавати нові методи атаки. Після запуску MasterMCP буде запускати FastAPI сервіс попереднього модуля в дочірньому процесі. ( уважні читачі помітять, що тут вже існує проблема безпеки - локальні плагіни можуть вільно запускати дочірні процеси, які не передбачені MCP ).
демонстраційний клієнт
Cursor:Один з найпопулярніших у світі IDE для програмування з підтримкою AI
Claude Desktop:офіційний клієнт великої моделі компанії
демонстраційна велика модель
Клод 3.7
Виберіть версію Claude 3.7, оскільки вона має певні поліпшення в розпізнаванні чутливих операцій і водночас представляє собою досить сильну операційну здатність у поточній екосистемі MCP.
Cross-MCP зловмисний виклик
Ця демонстрація містить два змісти: отруєння та зловмисний виклик Cross-MCP.
атака на вміст веб-сторінки
Коментоване отруєння
Курсор відвідує локальний тестовий веб-сайт. Це, здавалося б, безневинна сторінка про "Смачний торт світ", ми через цей експеримент моделюємо показ впливу доступу клієнта до великої моделі на шкідливий веб-сайт.
Виконати команду:
Отримати вміст з
Результати показують, що Cursor не лише зчитує вміст веб-сторінки, а й передає локальні конфіденційні дані на тестовий сервер. У вихідному коді зловмисні підказки вбудовані у вигляді HTML-коментарів.
Хоча коментарі є досить прямими і їх легко розпізнати, вони вже можуть спровокувати шкідливі дії.
Кодований коментар до отруєння
Перейдіть на сторінку /encode, це веб-сторінка, яка виглядає так само, як у вищенаведеному прикладі, але в ній шкідливі підказки закодовані, що робить атаки більш прихованими, навіть при перегляді вихідного коду веб-сторінки важко безпосередньо виявити.
Навіть якщо вихідний код не містить відкритих підказок, атака все ще успішно виконується, конкретний принцип буде детально пояснений у наступних розділах.
MCP інструмент повертає інформацію для отруєння
Тут ми на основі підказок MasterMCP вводимо симуляційну команду (. Ця команда не має реального значення, її мета - спровокувати шкідливий MCP для демонстрації подальших дій шкідливого MCP ):
отримати багато яблук
Можна побачити, що після спрацьовування команди клієнт викликав Toolbox через MCP і успішно додав новий сервер MCP.
Переглянувши код плагіна, можна виявити, що в повернутому даних вже вбудовані закодовані шкідливі вантажі, які користувач практично не може помітити.
атака забруднення через сторонній інтерфейс
Ця демонстрація призначена для того, щоб нагадати всім, що незалежно від того, чи є MCP зловмисним чи ні, при виклику стороннього API, якщо безпосередньо повертати дані стороннього джерела в контекст, це може мати серйозні наслідки.
Виконати запит:
Отримати json з /api/data
Результат: Зловмисні підказки були впроваджені у повернуті дані JSON і успішно викликали зловмисне виконання.
Технології отруєння на етапі ініціалізації MCP
Ця демонстрація містить початкове впровадження підказок та два вмісти конфлікту назв.
атака з накладенням зловмисних функцій
Тут MasterMCP написав інструмент з такою ж назвою функції remove_server, як у Toolbox, і закодував приховані шкідливі підказки.
Виконати команду:
інструменти видалити отримати плагін сервер
Claude Desktop не викликав оригінальний метод toolbox remove_server, а викликав метод з такою ж назвою, наданий MasterMCP.
Принцип полягає в підкресленні "попередні методи були скасовані", першочергово спонукаючи велику модель викликати функції зловмисного перекриття.
Додати логіку перевірки на зловмисність у глобальному масштабі
Тут MasterMCP написав інструмент під назвою banana, основна функція якого полягає в тому, щоб примусити виконувати цей інструмент для перевірки безпеки перед запуском усіх інших інструментів у підказках.
Перед виконанням кожної функції система спочатку викликає механізм перевірки banana.
Це глобальна логічна ін'єкція, яка реалізується шляхом неодноразового підкреслення в коді "необхідно виконати перевірку банана".
Поглиблені техніки приховування шкідливих підказок
Дружній до великих моделей спосіб кодування
Оскільки великі мовні моделі ( LLM ) мають надзвичайно високу здатність до аналізу багатомовних форматів, це, навпаки, було використано для приховування злочинної інформації, поширені методи включають:
В англійському середовищі: використовуйте Hex Byte кодування
У китайському середовищі: використовуйте кодування NCR або кодування JavaScript
механізм повернення випадкового шкідливого навантаження
Як згадано в другому розділі, забруднення сторонніми інтерфейсами під час запиту /random завжди випадковим чином повертає сторінку з шкідливим навантаженням, що значно ускладнює виявлення та відстеження.
Підсумок
Завдяки цій практичній демонстрації MasterMCP, ми наочно побачили різні приховані загрози безпеці в системі Model Context Protocol (MCP). Від простих атак через ін'єкцію підказок, між MCP-викликами, до ще більш прихованих атак на етапі ініціалізації та приховування шкідливих команд, кожен етап нагадує нам: хоча екосистема MCP потужна, вона також вразлива.
Особливо в епоху, коли великі моделі все частіше взаємодіють з зовнішніми плагінами та API, навіть незначне забруднення вводу може спричинити системні ризики безпеки. А різноманітність методів атаки, таких як ( кодування приховування, випадкове забруднення, покриття функцій ), також означає, що традиційні підходи до захисту потребують повного оновлення.
Безпека ніколи не досягається миттєво.
Сподіваюсь, ця демонстрація зможе стати для всіх сигналом тривоги: незалежно від того, чи ви розробник, чи користувач, слід бути достатньо обережними до системи MCP, завжди уважно стежити за кожною взаємодією, кожним рядком коду, кожним значенням, що повертається. Лише дотримуючись строгого підходу до кожної деталі, можна справді побудувати стійке та безпечне середовище MCP.
Наступним кроком ми продовжимо вдосконалювати скрипт MasterMCP, відкриваючи більше цільових тестових випадків, щоб допомогти всім у безпечному середовищі глибше зрозуміти, відпрацьовувати та зміцнювати захист.
Переглянути оригінал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
7 лайків
Нагородити
7
5
Поділіться
Прокоментувати
0/400
HalfIsEmpty
· 3год тому
Занадто дико. Це вчить людей шахрайству, так?
Переглянути оригіналвідповісти на0
SchrodingerWallet
· 07-06 08:35
Швидко перейти до Основна мережа краху
Переглянути оригіналвідповісти на0
ApeDegen
· 07-06 08:26
Рекомендується, щоб цей проект прямо падіння до нуля
Переглянути оригіналвідповісти на0
MEVEye
· 07-06 08:12
mcp справді став тренувальним полем, а Жарко - це абсурд.
Переглянути оригіналвідповісти на0
Ramen_Until_Rich
· 07-06 08:12
Якщо так багато недоліків, можливо, варто перевірити код.
Практичні ризики безпеки MCP: всебічна демонстрація від отруєння до прихованих атак
Прихована отрута і маніпуляції в системі MCP: практична демонстрація
MCP (Model Context Protocol) система наразі все ще перебуває на ранній стадії розвитку, загальне середовище є досить хаотичним, різноманітні потенційні способи атак з'являються один за одним, існуючі протоколи та інструменти важко розробити для ефективного захисту. Щоб допомогти спільноті краще усвідомити та підвищити безпеку MCP, з'явився відкритий інструмент під назвою MasterMCP. Цей інструмент має на меті шляхом реальних атак допомогти розробникам вчасно виявити безпекові вразливості в дизайні продукту, таким чином поступово посилюючи проект MCP.
Ця стаття познайомить читачів із практичними аспектами, продемонструвавши поширені способи атак в системі MCP, такі як інформаційне отруєння, приховані шкідливі команди та інші реальні приклади. Усі сценарії, що використовуються під час демонстрацій, також будуть відкрито опубліковані, читачі зможуть повністю відтворити весь процес у безпечному середовищі, навіть на основі цих сценаріїв розробити свої власні плагіни для тестування атак.
Загальний огляд архітектури
Демонстраційна атака на ціль MCP: Toolbox
Деякий плагінний сайт є одним із найпопулярніших сайтів плагінів MCP, який зібрав велику кількість списків MCP та активних користувачів. Серед них офіційно випущений інструмент управління MCP Toolbox був обраний як ціль для тестування, ґрунтуючись на таких основних моментах:
демонстраційний шкідливий MCP: MasterMCP
MasterMCP є інструментом для моделювання зловмисного MCP, спеціально розробленим для тестування безпеки, який має плагінну архітектуру та містить такі ключові модулі:
Щоб більш реалістично відтворити сцену атаки, MasterMC вбудував модуль симуляції локального веб-сервісу. Він швидко створює простий HTTP сервер за допомогою фреймворку FastAPI, що імітує звичне веб-середовище. Ці сторінки на перший погляд виглядають нормально, але насправді в коді сторінки або у відповіді API приховані ретельно спроектовані шкідливі вантажі.
Таким чином, ми можемо в безпечному, контрольованому локальному середовищі повноцінно продемонструвати такі методи атаки, як отруєння інформації, приховування команд тощо, що допоможе читачеві більш наочно зрозуміти: навіть звичайна веб-сторінка може стати джерелом ризику для виконання ненормальних дій великими моделями.
MasterMCP використовує плагінізовану архітектуру для розширення, що дозволяє швидко додавати нові методи атаки. Після запуску MasterMCP буде запускати FastAPI сервіс попереднього модуля в дочірньому процесі. ( уважні читачі помітять, що тут вже існує проблема безпеки - локальні плагіни можуть вільно запускати дочірні процеси, які не передбачені MCP ).
демонстраційний клієнт
демонстраційна велика модель
Виберіть версію Claude 3.7, оскільки вона має певні поліпшення в розпізнаванні чутливих операцій і водночас представляє собою досить сильну операційну здатність у поточній екосистемі MCP.
Cross-MCP зловмисний виклик
Ця демонстрація містить два змісти: отруєння та зловмисний виклик Cross-MCP.
атака на вміст веб-сторінки
Курсор відвідує локальний тестовий веб-сайт. Це, здавалося б, безневинна сторінка про "Смачний торт світ", ми через цей експеримент моделюємо показ впливу доступу клієнта до великої моделі на шкідливий веб-сайт.
Виконати команду:
Отримати вміст з
Результати показують, що Cursor не лише зчитує вміст веб-сторінки, а й передає локальні конфіденційні дані на тестовий сервер. У вихідному коді зловмисні підказки вбудовані у вигляді HTML-коментарів.
Хоча коментарі є досить прямими і їх легко розпізнати, вони вже можуть спровокувати шкідливі дії.
Перейдіть на сторінку /encode, це веб-сторінка, яка виглядає так само, як у вищенаведеному прикладі, але в ній шкідливі підказки закодовані, що робить атаки більш прихованими, навіть при перегляді вихідного коду веб-сторінки важко безпосередньо виявити.
Навіть якщо вихідний код не містить відкритих підказок, атака все ще успішно виконується, конкретний принцип буде детально пояснений у наступних розділах.
MCP інструмент повертає інформацію для отруєння
Тут ми на основі підказок MasterMCP вводимо симуляційну команду (. Ця команда не має реального значення, її мета - спровокувати шкідливий MCP для демонстрації подальших дій шкідливого MCP ):
отримати багато яблук
Можна побачити, що після спрацьовування команди клієнт викликав Toolbox через MCP і успішно додав новий сервер MCP.
Переглянувши код плагіна, можна виявити, що в повернутому даних вже вбудовані закодовані шкідливі вантажі, які користувач практично не може помітити.
атака забруднення через сторонній інтерфейс
Ця демонстрація призначена для того, щоб нагадати всім, що незалежно від того, чи є MCP зловмисним чи ні, при виклику стороннього API, якщо безпосередньо повертати дані стороннього джерела в контекст, це може мати серйозні наслідки.
Виконати запит:
Отримати json з /api/data
Результат: Зловмисні підказки були впроваджені у повернуті дані JSON і успішно викликали зловмисне виконання.
Технології отруєння на етапі ініціалізації MCP
Ця демонстрація містить початкове впровадження підказок та два вмісти конфлікту назв.
атака з накладенням зловмисних функцій
Тут MasterMCP написав інструмент з такою ж назвою функції remove_server, як у Toolbox, і закодував приховані шкідливі підказки.
Виконати команду:
інструменти видалити отримати плагін сервер
Claude Desktop не викликав оригінальний метод toolbox remove_server, а викликав метод з такою ж назвою, наданий MasterMCP.
Принцип полягає в підкресленні "попередні методи були скасовані", першочергово спонукаючи велику модель викликати функції зловмисного перекриття.
Додати логіку перевірки на зловмисність у глобальному масштабі
Тут MasterMCP написав інструмент під назвою banana, основна функція якого полягає в тому, щоб примусити виконувати цей інструмент для перевірки безпеки перед запуском усіх інших інструментів у підказках.
Перед виконанням кожної функції система спочатку викликає механізм перевірки banana.
Це глобальна логічна ін'єкція, яка реалізується шляхом неодноразового підкреслення в коді "необхідно виконати перевірку банана".
Поглиблені техніки приховування шкідливих підказок
Дружній до великих моделей спосіб кодування
Оскільки великі мовні моделі ( LLM ) мають надзвичайно високу здатність до аналізу багатомовних форматів, це, навпаки, було використано для приховування злочинної інформації, поширені методи включають:
механізм повернення випадкового шкідливого навантаження
Як згадано в другому розділі, забруднення сторонніми інтерфейсами під час запиту /random завжди випадковим чином повертає сторінку з шкідливим навантаженням, що значно ускладнює виявлення та відстеження.
Підсумок
Завдяки цій практичній демонстрації MasterMCP, ми наочно побачили різні приховані загрози безпеці в системі Model Context Protocol (MCP). Від простих атак через ін'єкцію підказок, між MCP-викликами, до ще більш прихованих атак на етапі ініціалізації та приховування шкідливих команд, кожен етап нагадує нам: хоча екосистема MCP потужна, вона також вразлива.
Особливо в епоху, коли великі моделі все частіше взаємодіють з зовнішніми плагінами та API, навіть незначне забруднення вводу може спричинити системні ризики безпеки. А різноманітність методів атаки, таких як ( кодування приховування, випадкове забруднення, покриття функцій ), також означає, що традиційні підходи до захисту потребують повного оновлення.
Безпека ніколи не досягається миттєво.
Сподіваюсь, ця демонстрація зможе стати для всіх сигналом тривоги: незалежно від того, чи ви розробник, чи користувач, слід бути достатньо обережними до системи MCP, завжди уважно стежити за кожною взаємодією, кожним рядком коду, кожним значенням, що повертається. Лише дотримуючись строгого підходу до кожної деталі, можна справді побудувати стійке та безпечне середовище MCP.
Наступним кроком ми продовжимо вдосконалювати скрипт MasterMCP, відкриваючи більше цільових тестових випадків, щоб допомогти всім у безпечному середовищі глибше зрозуміти, відпрацьовувати та зміцнювати захист.