مدونة FireAI للأمان

بقلم FireAI Security & Research Team · نُشر في

النقطة العمياء في MCP: حين يستطيع مستند أن يجعل عميل الذكاء الاصطناعي لديك يتصرف

النقطة العمياء في MCP: حين يستطيع مستند أن يجعل عميل الذكاء الاصطناعي لديك يتصرف

قدّمت Anthropic بروتوكول سياق النموذج (Model Context Protocol أو MCP) في 25 نوفمبر 2024 بوصفه «معيارًا مفتوحًا يمكّن المطورين من بناء اتصالات آمنة وثنائية الاتجاه بين مصادر بياناتهم والأدوات المدعومة بالذكاء الاصطناعي». عمليًا، يتيح MCP لمساعد ذكاء اصطناعي استدعاء برامج محلية، تُسمى خواديم MCP، تقرأ ملفات، أو تستعلم عن قواعد بيانات، أو تصل إلى الويب نيابة عنه. هذا مفيد فعليًا، وهو أيضًا نوع جديد من سطح الهجوم: يقرر النموذج أي أداة يستدعي بناءً على نص قرأه، ولا يستطيع دائمًا التمييز بين تعليماتك وتعليمات شخص آخر.

كيف يعمل خادم MCP فعليًا

يحدد مواصفة MCP نقلين. عبر stdio، «يطلق العميل خادم MCP كعملية فرعية» ويتحدث الاثنان عبر المُدخل والمُخرج القياسيين. أما عبر Streamable HTTP (الذي حل محل نقل HTTP+SSE الأصلي من مواصفة نوفمبر 2024)، فيعمل الخادم كعملية محلية خاصة به ويرسل له العميل طلبات HTTP، مستقبلًا اختياريًا تدفقًا من أحداث الخادم المُرسَلة (Server-Sent Events) (مواصفة MCP، النقل). في كلتا الحالتين، يعمل خادم MCP المحلي عادة بأذونات الملفات والشبكة نفسها الخاصة بالشخص الذي شغّله، لأن لا شيء في البروتوكول يشترط خلاف ذلك.

تشير المواصفة نفسها إلى خطر متغيّر HTTP مباشرة: فهي تشترط على الخواديم التحقق من ترويسة Origin، وتوصي بالربط بـ 127.0.0.1 بدلًا من 0.0.0.0 عند التشغيل محليًا، وتدعو إلى المصادقة على كل اتصال، محذّرة من أنه دون ذلك، «يمكن للمهاجمين استخدام إعادة ربط DNS (DNS rebinding) للتفاعل مع خواديم MCP المحلية من مواقع ويب بعيدة».

الآلية: نائب مرتبك

الاسم الكلاسيكي لنمط الفشل هذا هو مشكلة النائب المرتبك: «برنامج حاسوبي يُخدَع من قِبل برنامج آخر (له صلاحيات أو حقوق أقل) لإساءة استخدام سلطته». عميل ذكاء اصطناعي له وصول إلى أدوات MCP هو نائب يملك سلطة حقيقية — لقراءة ملفاتك، ولإجراء طلبات شبكية — يتصرف بناءً على تعليمات يمكن أن تصل من محتوى طُلب منه فقط تلخيصه أو تحليله. حين يحتوي ذلك المحتوى على تعليماته الخاصة، قد يتبعها العميل بدلًا من تعليماتك، أو إضافة إليها. هذا ما تسميه فئة مخاطر OWASP Top 10 لتطبيقات النماذج اللغوية الكبيرة حقن الأوامر والوكالة المفرطة: OWASP: أفضل 10 لتطبيقات النماذج اللغوية الكبيرة؛ OWASP LLM01:2025، حقن الأوامر.

حالة مُثبَتة: خادم GitHub لـ MCP

هذا ليس نظريًا. في 26 مايو 2025، أفادت Invariant Labs بإثبات مفهوم ضد خادم GitHub الرسمي لـ MCP، الذي كان يحظى بنحو 14,000 نجمة على GitHub في ذلك الوقت. إعدادهم: طُلب من عميل له وصول إلى مستودع عام وآخر خاص مراجعة المشكلات المفتوحة في المستودع العام. حملت مشكلة (issue) مُعدَّة بعناية في المستودع العام تعليمات مخفية؛ واتّبعها العميل، أثناء قراءتها كجزء من مهمته العادية، ومضى في العرض التوضيحي إلى كشف تفاصيل من المستودع الخاص، بما في ذلك معلومات يصفها الباحثون بأنها شخصية، إلى خيط المشكلة الذي يتحكم فيه المهاجم. أوضحت Invariant Labs صراحة أن هذا كان إثبات مفهوم مُثبَتًا على مستودعات اختبار، لا هجومًا لوحظ في الواقع، وأن «هذا ليس خللًا في كود خادم GitHub MCP نفسه، بل مشكلة معمارية جوهرية يجب معالجتها على مستوى نظام العميل». وكان النموذج المستخدم في العرض التوضيحي هو Claude 4 Opus.

الثالوث القاتل

في 16 يونيو 2025، أطلق سايمون ويليسون على النمط وراء حالات كهذه اسم «الثالوث القاتل»: عميل يملك (1) وصولًا إلى بيانات خاصة، و(2) تعرضًا لمحتوى غير موثوق، و(3) طريقة للتواصل خارجيًا. «إن جمع عميلك بين هذه الميزات الثلاث، يستطيع مهاجم بسهولة خداعه للوصول إلى بياناتك الخاصة وإرسالها إلى ذلك المهاجم». ويسمّي MCP تحديدًا كمساهم في ذلك: «مشكلة بروتوكول سياق النموذج — MCP — هي أنه يشجّع المستخدمين على مزج ومطابقة أدوات من مصادر مختلفة يمكنها فعل أشياء مختلفة»، ما يسهّل الانتهاء بتفعيل الخصائص الثلاث جميعها في جلسة واحدة دون قرار واعٍ بذلك.

لماذا يصعب على أدوات نقاط النهاية رؤية هذا

من منظور نظام التشغيل، لم يحدث شيء غير عادي في حالة GitHub MCP: قرأ تطبيق موقّع وموثوق نصًا وأجرى طلبًا شبكيًا عبر عملية مساعدة محلية أُعِدَّ لاستخدامها. لا يوجد ملف تنفيذي ضار يُبلَّغ عنه ولا استغلال لخلل في سلامة الذاكرة. الطلب المهم — الذي يحمل البيانات إلى الخارج — له الشكل نفسه لأي استدعاء أداة آخر يجريه العميل بشكل صحيح مئة مرة في اليوم.

ما الذي يقلّل الخطر فعليًا

  • امنح كل خادم MCP أضيق مجموعة من الأدوات ونطاق الملفات التي يحتاجها، لا وصولًا واسعًا إلى نظام الملفات أو الصدفة، بحيث يكون لدى استدعاء أداة مُختطَف أقل ما يفعله.
  • عامل أي محتوى يقرؤه عميل من خارج سيطرتك (مشكلات، صفحات ويب، ملفات مُنزَّلة) كمُدخل غير موثوق، بالانضباط نفسه الذي تطبّقه على مُدخل المستخدم في أي نظام آخر.
  • اتّبع الإرشادات على مستوى النقل التي تقدّمها مواصفة MCP نفسها: اربط الخواديم المحلية بالمضيف المحلي، واشترط المصادقة، وتحقق من ترويسة Origin.
  • راقب، أو تحكم في، الخطوة الوحيدة التي تشترك فيها كل نسخة من هذا الهجوم: الاتصال الصادر الذي سيحمل البيانات إلى المهاجم. تحدث تلك الخطوة بعد أن يكون النموذج قد خُدع بالفعل، وهذا سبب كونها أكثر نقطة موثوقية لالتقاطه.

دور FireAI وHisnLabs

The step an injected agent cannot skip is the outbound connection that carries your data out, which is exactly what a per-app firewall like FireAI is built to see and stop, whether the process asking to connect is a familiar app or an MCP server it has never seen before.

FireAI هو منتج HisnLabs نفسها: جدار حماية بذكاء اصطناعي يعمل على جهاز Mac مباشرة. يعرض بلغة واضحة كل اتصال تجريه تطبيقاتك، ويترك لك القرار فيما يخرج من جهازك — ذكاؤه الاصطناعي يعمل محليًا، فلا يُرسَل ترافيكك إلينا ولا إلى أي جهة أخرى أبدًا. فريق أبحاث الأمن في HisnLabs هو من يحافظ على دقة هذه القرارات: يصنّف النطاقات بين قياس عن بُعد عادي وخدمة حقيقية، ويتتبّع بلد وشبكة كل اتصال، ويدرّب النموذج المحلي (ميزة Autopilot) على حركة اتصال حقيقية، دون أن يغادر أي شيء جهاز Mac.

يمكنك الاطلاع على القرارات التقنية وراء ذلك، أو تجربة FireAI لمدة 17 يومًا، على FireAI من HisnLabs.

المصادر