تصور کنید یک کارمند قدرتمند با کلید تمام اتاقهای دفترتان استخدام کردهاید؛ او ابزارهای لازم برای کار را دارد، اما هیچ نگهبانی نیست که بفهمد او چه زمانی تبدیل به یک جاسوس شرکتی میشود. این دقیقاً وضعیتی است که اکنون در هزاران پیادهسازی پروتکل زمینه مدل (Model Context Protocol یا MCP) رخ میدهد و دادههای حساس را در برابر تزریق پرامپت و سرقت اطلاعات بیدفاع کرده است. در حال حاضر، MCP در یک خلأ امنیتی شدید فعالیت میکند که بیش از ۳۰,۰۰۰ پیادهسازی را در معرض تزریق پرامپت و استخراج دادهها قرار داده است. اگرچه این پروتکل سریعتر از رشد سال اول داکر (Docker) رشد کرده است، اما هیچ مکانیسم اجرایی واقعی برای محافظت از لایه دادهها (Data Plane) ارائه نمیدهد.
انفجار پذیرش و رشد سریع
پروتکل MCP که در نوامبر ۲۰۲۴ عرضه شد، موجی بیسابقه از پذیرش را تجربه کرده است. تا سپتامبر ۲۰۲۶، آمارهای مربوط به این اکوسیستم به ارقام خیرهکنندهای رسیده است:
- مخازن گیتهاب: ۳۰,۲۱۲ مخزن با برچسب "model context protocol"
- سرورهای رسمی MCP: ۹۰,۵۵۰ ستاره
- SDK پایتون: ۲۴,۳۶۸ ستاره
- SDK تایپاسکریپت: ۱۳,۴۴۲ ستاره
- مخزن مشخصات (Spec) MCP: ۹,۲۷۷ ستاره
با انتشار نسخه پایدار مشخصات در تاریخ ۲۸ ژوئیه ۲۰۲۶، اکنون بیش از ۳۰,۰۰۰ پیادهسازی وجود دارد. نکته تکاندهنده این است که تکتک این پیادهسازیها در حال حاضر بدون یک گیتوی امنیتی اختصاصی در حال اجرا هستند. پروتکل به توسعهدهندگان میگوید که «باید» امن باشند، اما ابزارهای لازم برای تحقق این امنیت را در اختیار آنها قرار نمیدهد.
شکاف در مشخصات فنی (Specification)
طبق تحلیل فنی دقیق جاش کالوین (Josh Colvin)، بنیانگذار AegisGate Security، مشخصات MCP عمدتاً جنبه توصیهای دارد. این سند چندین بردار حمله بحرانی را شناسایی کرده است: مسموم کردن ابزار (تزریق دستورات مخرب در توصیفات)، «کشیدن فرش» یا Rug Pulls (زمانی که ابزارها تعریف خود را تغییر میدهند)، سرقت اعتبارنامهها (استخراج اسرار از طریق دسترسی به فایلهای محلی) و «پرش سطری» یا Line Jumping (تزریق پرامپت از طریق توصیفات پیش از فراخوانی ابزارها).
در حالی که این سند چهار الزام اجباری تحت عنوان "MUST" (اعتبارسنجی ورودی، کنترل دسترسی، محدودیت نرخ و پاکسازی خروجی) را فهرست کرده است، اما در زمینه اجرا بسیار ضعیف است. کلمه «بهتر است» (SHOULD) ۲۳ بار در بخش امنیت تکرار شده، در حالی که کلمه «باید» (MUST) تنها ۴ بار آمده است.
از نظر عملی، این مشخصات هیچ پیادهسازی مرجعی، هیچ فرمت استانداردی برای ردپای حسابرسی (Audit Trail)، هیچ مکانیزمی برای اسکن پاسخها، مدیریت نشست (Session Management) یا تشخیص ناهنجاری ارائه نمیدهد. MCP هیچ کتابخانه یا میانافزاری (Middleware) را ارسال نمیکند؛ بلکه صرفاً یک سند متنی است. این موضوع باعث میشود هر کسی که یک سرور MCP پیاده میکند، مجبور باشد امنیت خود را از صفر بسازد یا کلاً آن را نادیده بگیرد.
زنجیرهای از اکسپلویتهای واقعی
جامعه امنیتی در سال گذشته شکستهای سیستماتیکی را در پیادهسازیهای MCP مستند کرده است. اینها تئوری نیستند، بلکه آسیبپذیریهای افشا شده و مورد بهرهبرداری قرار گرفتهاند:
- آوریل ۲۰۲۵ (Trail of Bits): شناسایی «پرش سطری» (Line Jumping) که در آن سرورهای مخرب از طریق توصیفات ابزار، پرامپتهایی را تزریق میکنند تا رفتار هوش مصنوعی را حتی قبل از فراخوانی ابزار دستکاری کنند. در اینجا مهاجم فقط نیاز دارد کاربر ابزار را نصب کند، نه اینکه لزوماً آن را فراخوانی کند.
- آوریل ۲۰۲۵ (سایمون ویلیسون): برجسته کردن حملات Rug Pulls و سایهاندازی ابزار (Tool Shadowing)، جایی که ابزارها پس از نصب، تعاریف خود را تغییر میدهند. یک مثال خاص مربوط به سرور
whatsapp-mCPبود که کل تاریخچه پیامها را استخراج میکرد. - آوریل ۲۰۲۵ (Trail of Bits): نمایش این موضوع که سرورهای MCP چگونه میتوانند کل تاریخچه گفتگو را بدزدند، زیرا به کل پنجره زمینه (Context Window) دسترسی دارند.
- مه ۲۰۲۵ (Invariant Labs): مستندسازی بهرهبرداری از MCP گیتهاب برای دسترسی به مخازن خصوصی. این حمله به جای استفاده از آسیبپذیری گیتهاب، از رابطه اعتماد بین سرور MCP و کلاینت سوءاستفاده کرد.
- مه ۲۰۲۵ (CyberArk): هشدار داد که «سم در همه جا است» و اشاره کرد که خروجیهای ابزارها میتوانند حاوی تزریق پرامپت باشند. حتی ابزارهای مورد اعتماد نیز ممکن است دستورات متخاصم (Adversarial) برگردانند.
- ژوئن ۲۰۲۵ (Asana): افشای یک باگ افشای داده در یکی از سرورهای رسمی MCP این شرکت بزرگ SaaS.
- ژوئن ۲۰۲۵ (Cato Networks): نمایش حمله "Living Off AI" علیه سرور MCP شرکت Atlassian، با استفاده از ابزارهای قانونی به عنوان بردار حمله.
- ژوئیه ۲۰۲۵ (mcp-remote): یک آسیبپذیری بحرانی RCE در یک کتابخانه انتقال از راه دور پرکاربرد که پیش از اصلاح، بیش از ۴۳۷,۰۰۰ بار دانلود شده بود.
- ژوئیه ۲۰۲۵ (Anthropic): خالق این پروتکل، در سرور رسمی Slack MCP خود دچار آسیبپذیری استخراج داده شد.
- اوت ۲۰۲۵ (Cursor): مهاجمان از طریق یک سرور MCP مربوط به Jira، ویرایشگر Cursor را تسخیر کردند؛ آنها یک تیکت پشتیبانی مخرب ارسال کردند که دستوراتی را به ویرایشگر متصل تزریق میکرد.
چشمانداز فعلی ابزارهای امنیتی
تحقیقات کالوین روی ابزارهای امنیتی موجود برای MCP نشاندهنده یک اکوسیستم تکهتکه است. اگرچه چندین پروژه وجود دارد، اما همگی شکافهای بحرانی دارند:
- ToolHive (Stacklok): با ۲,۲۰۵ ستاره، ایزولاسیون کانتینری و اپراتورهای کوبرنتیز را فراهم میکند، اما فاقد اسکن محتوا و تحلیل زنجیرهای است.
- Hoop: با ۸۱۸ ستاره، یک پروکسی گیتوی برای پروتکلهای MCP، LLM و DB است، اما تشخیص ML و اسکن پاسخها را ندارد.
- mcp-context-protector (Trail of Bits): با ۲۲۶ ستاره، پاکسازی توصیفات ابزار و حذف ANSI را ارائه میدهد، اما فقط برای پایتون است و مدیریت نشست ندارد.
- SecureMCP: با ۱۴۰ ستاره، ابزاری برای حسابرسی و اسکن آسیبپذیری است، اما هیچ محافظتی در زمان اجرا (Runtime) ارائه نمیدهد.
- Vault MCP: با ۱۰۱ ستاره، پاسخهای ابزار را برای تزریق پرامپت اسکن میکند، اما درخواستها را اسکن نمیکند و تحلیل زنجیرهای ندارد.
- ToolFence: با ۱۰۰ ستاره، سیاستهای محلی و تایید انسانی را پیاده میکند، اما فاقد ML و گارد پاسخ است.
- MCP-Dandan: با ۶۶ ستاره، یک پروکسی در مراحل اولیه برای تحلیل رفتار و تشخیص ابزارهای مخرب است.
- Agent Identity Protocol: با ۳۷ ستاره، یک لایه Zero-Trust با اسکن DLP است، اما تحلیل زنجیرهای و ML ندارد.
- mcp-shark: با ۱۷۸ ستاره، ابزاری برای تحلیل ترافیک فارنزیک است، اما نمیتواند حملات را در لحظه مسدود کند.
در تمام این ابزارها، «تحلیل زنجیرهای چند-مرحلهای» (Multi-turn Chain Analysis) کاملاً غایب است. هیچ ابزاری توالی فراخوانی ابزارها را در طول نشستها برای شناسایی الگوهای ارتقای دسترسی رصد نمیکند. علاوه بر این، اکثر آنها به جای تشخیص تهدیدات عصبی برای درک معنایی قصد حمله، به Regex یا قوانین سیاستی تکیه میکنند.
معماری دفاعی AegisGate
برای پر کردن این خلأ، AegisGate یک گیتوی امنیتی ۷ لایه ساخته است که پیشنهادات سند MCP را به اجبارهای سخت تبدیل میکند. این پلتفرم از یک سرور MCP داخلی (pkg/mcpserver/) استفاده میکند که هر درخواست JSON-RPC را از طریق یک میانافزار حفاظتی (Guardrail) رهگیری میکند.
گاردریل ۱: اجرای محدودیت نشست (Session Limit)
این لایه نشستهای همزمان MCP را به ازای هر سطح (Tier) رصد میکند. این لایه MaxConcurrentMCP را برای جلوگیری از حملات Denial-of-Service (DoS) ناشی از اتمام منابع نشست اجرا میکند. در صورت رسیدن به حد نصاب، سیستم خطای JSON-RPC با کد max_sessions_reached برمیگرداند.
گاردریل ۲: مجوز ابزار (Tool Authorization)
هر فراخوانی ابزار در برابر یک ماتریس ریسک سطحبندی شده بررسی میشود. ابزارها با سطوح ریسک و انواع دادههای خاص ثبت میشوند. برای مثال، shell_command به عنوان ریسک «بحرانی» (Critical) دستهبندی شده و در سطوح Community و Developer مسدود میشود، در حالی که database_query ریسک «بالا» (High) دارد و در سطح Community مسدود است.
گاردریل ۳: اعتبارسنجی دستورات STDIO
این لایه یک نقص بحرانی در انتقال STDIO در MCP را برطرف میکند که طبق طراحی، دستورات دلخواه سیستمعامل را اجرا میکند. AegisGate هر دستور را در برابر یک لیست سفید سختگیرانه (^[a-zA-Z0-9/._-]+$) اعتبارسنجی میکند. این لایه متاکاراکترهای شل شامل پایپها (|)، نقطهویرگولها، جایگزینی دستورات، تغییر مسیرها (Redirects)، وایلدکارتها، گسترش متغیرهای محیطی و اجرای پسزمینه را رد میکند. این اقدام مستقیماً در برابر هشدار "Mother of All AI Supply Chains" شرکت OX Security و نقص طراحی STDIO در SDK شرکت Anthropic دفاع میکند.
گاردریل ۴: تحلیل زنجیرهای (Chain Analysis - P2)
این هسته اصلی تمایز این پلتفرم است. سیستم هر فراخوانی ابزار را در یک تحلیلگر زنجیره با TTL ۳۰ دقیقهای ثبت کرده و تا ۲۰ مرحله (Turn) را رصد میکند. این لایه سه الگوی خاص را شناسایی میکند:
- EscalationChain (زنجیره ارتقاء): افزایش سطوح ریسک در طول فراخوانیها (مثلاً: خواندن $
ightarrow$ نوشتن $
ightarrow$ اجرا). - ExfilChain (زنجیره استخراج): عملیات خواندن که بلافاصله با فراخوانیهای شبکه دنبال میشود.
- ReconChain (زنجیره شناسایی): بررسیهای سیستماتیک که با یک اجرای پرریسک به پایان میرسد.
سیستم حمله را در دومین فراخوانی زنجیره شناسایی شده مسدود میکند و نرخ مثبت کاذب (FPR) صفر درصد را در ۸.۱ میلیون درخواست سالم حفظ کرده است.
گاردریل ۵: محدودیت نرخ (Rate Limiting)
این لایه محدودیت نرخ به ازای هر کلاینت را با استفاده از باکتهای پنجره لغزان (Sliding Window) فراهم میکند. سطح Developer روی ۵۰۰ درخواست در دقیقه (RPM) محدود شده و سطوح Enterprise قابل تنظیم هستند تا بدون مختل کردن جریان کاری عاملها، از سوءاستفاده جلوگیری شود.
گاردریل ۶: گارد پاسخ MCP (Response Guard)
این لایه خروجیهای ابزار را پیش از رسیدن به LLM برای شناسایی اطلاعات حساس (PII)، اسرار (Secrets) و XSS اسکن میکند. این لایه بهطور پیشفرض در حالت StrictMode = true (بستن در صورت شک) عمل میکند. اگر پاسخ ابزار حاوی یک کلید API مربوط به AWS باشد، از رسیدن آن به پنجره زمینه جلوگیری میشود. سیستم آمارهای هر نشست را برای PIIFound و BlockedResponses رصد میکند که مستقیماً یافتههای CyberArk درباره «سم در همه جا» را هدف قرار میدهد.
گاردریل ۷: ثبت وقایع و خروجی SIEM
هر نشست، فراخوانی ابزار، مسدودسازی و هشدار با برچسب زمانی، شناسه نشست، شناسه عامل و نتایج تشخیص ثبت میشود. لاگها در فرمتی قابل استخراج برای SIEM هستند تا هر فعالیت عامل — مثلاً فراخوانی ابزاری در ساعت ۲ صبح سهشنبه — کاملاً قابل ردیابی باشد.
اجرای الزامات «باید» (MUSTs)
AegisGate گاردریلهای خود را مستقیماً با الزامات اجباری مشخصات MCP تطبیق داده است:
| الزام MUST در سند | گاردریل AegisGate | وضعیت |
|---|---|---|
| اعتبارسنجی تمام ورودیهای ابزار | گاردریل ۲ + گاردریل ۳ | ✅ اجرا شده |
| پیادهسازی کنترل دسترسی مناسب | گاردریل ۲ (سطحبندی) | ✅ اجرا شده |
| محدود کردن نرخ فراخوانی ابزارها | گاردریل ۵ (پنجره لغزان) | ✅ اجرا شده |
| پاکسازی خروجیهای ابزار | گاردریل ۶ (گارد پاسخ) | ✅ اجرا شده |
فراتر از سند، AegisGate تشخیص تهدیدات عصبی را با استفاده از یک مدل CharCNN-BiLSTM با ۱.۶ میلیون پارامتر اضافه کرده تا تزریقهای پرامپت جدیدی را که ابزارهای مبتنی بر Regex از دست میدهند، شکار کند. همچنین یک گارد پاسخ «بستهشده در صورت خطا» (Fail-closed) را پیاده کرده است، در حالی که سند MCP فقط پاکسازی را پیشنهاد میکند بدون اینکه رفتار در زمان شکست را تعریف کند.
تستها و محدودیتها
تیم AegisGate این دفاعها را با استفاده از تستهای یکپارچگی End-to-End (E2E) اعتبارسنجی کرده است. به جای استفاده از Mockها، تیم از اتصالات خام TCP MCP JSON-RPC برای تأیید باینری پلتفرم استفاده کرد. تستها شامل TestGuardrailIntegration_ToolAuth_ShellCommandBlocked برای گاردریل ۲ و TestGuardrailIntegration_StdioValidation برای گاردریل ۳ و همچنین تستهایی برای محدودیت نرخ و مسدودسازی PII در پاسخها بود.
با این حال، نویسنده ارزیابی صادقانهای از وضعیت فعلی ارائه میدهد:
- ترافیک مصنوعی: ۸.۱ میلیون درخواست مورد استفاده برای تست استرس، دادههای تولید شده بودند و نه نشستهای واقعی تولیدی MCP.
- حالتهای فقط-هشدار: بخشهای P4 و DIST2-5 (تشخیص ناهنجاری و تقطیر) در حال حاضر فقط هشدار میدهند و برای تبدیل شدن به حالت مسدودکننده، نیاز به تنوع ترافیک واقعی دارند.
- تست نفوذ: پلتفرم هنوز تحت آزمون نفوذ شخص ثالث قرار نگرفته است، زیرا این مورد در حال حاضر محدود به بودجههای SBIR (بین ۱۵ تا ۳۰ هزار دلار) است.
- تغییرات سند: مشخصات MCP همچنان در حال تغییر است؛ نسخه ۲۸ ژوئیه ۲۰۲۶ اولین نسخه پایدار بود و مشخصات مجوزها در اواسط سال بازنویسی شدند.
چرخش در امنیت هوش مصنوعی
این توسعه نشاندهنده یک تغییر پارادایم از امنیت «در سطح پرامپت» به امنیت «در لایه داده» است. برای مدتها، صنعت بر فیلتر کردن پرامپت کاربر تمرکز داشت. AegisGate استدلال میکند که تهدید واقعی، رابطه اعتماد بین LLM و ابزارهایی است که کنترل میکند.
با پیادهسازی تحلیل زنجیرهای چند-مرحلهای، صنعت از تشخیصهای مبتنی بر Regex به سمت تحلیل رفتاری حرکت میکند. این موضوع حیاتی است زیرا فراخوانیهای تکی ابزارها اغلب بیخطر به نظر میرسند؛ تنها توالی آنهاست که قصد حمله را آشکار میکند. برای توسعهدهندگان، این بدان معناست که دوران «امنیت را خودتان بسازید» در MCP دیگر قابل تحمل نیست. با تثبیت پروتکل، تقاضا برای میانافزارهای استانداردی که الزامات "MUST" مشخصات را اجرا کنند، احتمالاً رشد خواهد کرد.
گام بعدی شما
- اگر از سرورهای MCP در محیط تولید استفاده میکنید، فوراً خروجیهای ابزارها را برای نشت دادههای حساس (PII) بررسی کنید.
- برای پیادهسازیهای جدید، به جای تکیه بر توصیههای سند MCP، یک لایه میانافزار برای اعتبارسنجی ورودیها و خروجیها تعریف کنید.
- رفتارهای مشکوک در توالی فراخوانی ابزارها (مثلاً خواندن متوالی فایلها و سپس ارسال درخواست شبکه) را به عنوان سیگنال حمله شناسایی کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو