بررسی اجمالی معماری
هدف 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، ما یک دستور شبیهسازی شده را وارد میکنیم که MCP مخرب را فعال میکند و عملیات بعدی آن را نشان میدهد.
پس از فعال کردن دستور، کلاینت یک تماس بین MCP را به Toolbox آغاز میکند و با موفقیت یک سرور MCP جدید اضافه میکند.
بازرسی کد پلاگین نشان میدهد که دادههای بازگشتی حاوی یک بار مخرب کدگذاری شده است، و عملاً برای کاربر غیرقابل شناسایی است.
حمله آلودگی رابط شخص ثالث
این نمایش خطرات بالقوه مرتبط با MCPهای مخرب و غیرمخرب را به طور مستقیم در بازگرداندن دادههای API شخص ثالث به زمینه برجسته میکند.
کد نمونه:
درخواست اجرا:
نتیجه: اعلان مخرب در دادههای JSON بازگشتی تعبیه شده است و با موفقیت اجرای مخرب را فعال میکند.
تکنیکهای مسموم کردن در طول مقداردهی اولیه MCP
این نمایش موارد چک لیست تزریق اعلان اولیه و تعارضات نام را پوشش میدهد.
حمله بازنویسی تابع مخرب
MasterMCP ابزاری با همان نام تابع Toolbox’s remove_server
ایجاد میکند و اعلانهای مخرب را در آن رمزگذاری میکند.
دستور اجرا:
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های خارجی تعامل دارند، آلودگی ورودی به ظاهر جزئی میتواند خطرات امنیتی در سطح سیستم را ایجاد کند. تنوع در حال تکامل تاکتیکهای مهاجم، از جمله تکنیکهای رمزگذاری، آلودگی تصادفی و بازنویسی توابع، نیاز به ارتقاء جامع رویکردهای امنیتی سنتی را ضروری میسازد.