تقرير ميداني · دراسة معمّقة

Securing an MCP server in practice

تقرير ميداني من واقع VamiGRC

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

الموضوع
خادم MCP الخاص بـ VamiGRC
المنهجية
نموذج تهديدات باستخدام STRIDE و⁦OWASP MCP Top 10⁩
التحقق
8 اختبارات سلبية من طرف إلى طرف، نجحت جميعها
الأساس
مواصفة MCP منذ ⁦2025-06-18⁩ · ⁦OAuth 2.1⁩
السياق

القواعد موجودة، لكن التطبيق العملي ما زال في بداياته

منذ مراجعة يونيو 2025 لمواصفة MCP، أصبح خادم MCP المحمي خادمَ موارد وفق ⁦OAuth 2.1⁩. غير أن التطبيق العملي متأخر عن ذلك، ومنصة GRC ترفع سقف المخاطر.

⁦8.5%⁩

من أكثر من ⁦5,200⁩ خادم MCP مفتوح المصدر جرى فحصها في أكتوبر 2025 كانت تستخدم OAuth.

State of MCP Server Security 2025: Research Report (أكتوبر 2025) (يفتح موقعًا خارجيًا)

ما تشترطه المواصفة

  • اكتشاف البيانات الوصفية عبر بيانات ⁦Protected Resource Metadata⁩ الخاصة بالخادم (⁦RFC 9728⁩)
  • PKCE في مسار التفويض
  • ربط الجمهور (Audience): لا يصلح الرمز إلا للخادم الذي صدر له
  • لا تمرير للرموز إلى الخدمات اللاحقة

Specification, Revision 2025-06-18: Authorization (يونيو 2025) (يفتح موقعًا خارجيًا)

منصة GRC ترفع سقف المخاطر

يقرأ الوكيل المخاطر والحوادث وبيانات الموردين، ويستطيع تغييرها. والتغيير الخاطئ ليس مجرد خلل برمجي: فقد يزيّف أدلة الإثبات التي يعتمد عليها المدقق.

  • إنشاء سجلات
  • تعيين المالكين
  • إغلاق الملاحظات
  • حذف الإدخالات
سؤال البحث ونموذج التهديدات

ثلاثة مهاجمين، وخيط مشترك واحد

كيف يمكن لوكيل ذكاء اصطناعي أن يعمل على بيانات الامتثال دون أن يصبح الحلقة الأضعف في المنصة؟

نمذجنا ثلاثة مهاجمين، مستخدمين STRIDE لتحديد فئة الخلل، و⁦OWASP MCP Top 10⁩ كتالوجًا للمخاطر. اختاروا مهاجمًا لتروا الضوابط التي تحدّ منه، والاختبارات السلبية ذات الصلة، وما يتبقّى من مخاطر.

وكيل مُتلاعَب به

ما يتحكم فيه
نصوص يقرؤها الوكيل: وصف سجل، أو مستند، أو نتيجة أداة (حقن الأوامر غير المباشر)
ما يريده
دفع الوكيل إلى تغيير بيانات أو حذفها دون أن يطلب المستخدم ذلك قط
STRIDE
TamperingElevation of Privilege

ما يحدّ منه

  • تُمرَّر النصوص المأخوذة من السجلات إلى الوكيل موسومةً بوصفها بيانات غير موثوقة
  • مستوى استقلالية لكل فئة إجراءات، ولا استقلالية أبدًا في عمليات الحذف والقرارات
  • موافقة داخل التطبيق لعمليات الحذف والقرارات، لا في المحادثة
  • لا صلاحيات تتجاوز صلاحيات الشخص: رمز مقيَّد ودور الشخص نفسه

الاختبارات السلبية ذات الصلة

  • ناجحمجرد «نعم» على معاينة حذف
  • ناجحالحد الشخصي أشدّ صرامة من حد المؤسسة

ما يتبقّى: في جلسة مختطفة، لا يزال بإمكان الوكيل التأكيد في المحادثة على المستوى ⁦L2⁩، كما يستطيع كتابة مرجع الحذف بنفسه. لذلك تتطلب عمليات الحذف والقرارات موافقة داخل التطبيق. أما حقن الأوامر نفسه فلا يمكن منعه منعًا تامًا.

الخيط المشترك: الوكيل المُتلاعَب به لا يقتحم النظام، بل يستخدم صلاحيات يملكها بصورة مشروعة. لذلك يجب أن يقع كل ضابط حيث لا يستطيع الوكيل الوصول إليه.

الهوية

لا تمرير للرموز، ورموز قصيرة العمر

لا يحمل الوكيل أبدًا رمزًا يقبله النظام الخلفي بوصفه جلسة مستخدم عادية. وهذه سلسلة تسجيل الدخول في أربع خطوات:

  1. 1

    الاكتشاف (Discovery)

    يكتشف المساعد خادمَ التفويض من خلال بيانات ⁦Protected Resource Metadata⁩ الخاصة بخادم MCP (⁦RFC 9728⁩).

  2. 2

    تسجيل الدخول ومنح الإذن

    يسجّل المستخدم الدخول إلى VamiGRC نفسه، ويرى شاشة لمنح الإذن تُبيّن أي مساعد، وهل الصلاحية قراءة فقط أم قراءة وتعديل، وأي مستأجر.

  3. 3

    رموز قصيرة العمر

    يتلقى المساعد رمز وصول صالحًا لدقائق لا لأيام، ومرتبطًا بخادم MCP بوصفه جمهوره (Audience)، إضافةً إلى رمز تحديث يتغيّر مع كل استخدام.

  4. 4

    رمز API مقيَّد

    لا يقبل النظام الخلفي هذا الرمز إلا كما يقبل رمز API مقيَّدًا: واجهة API العامة فقط، ولا وظائف إدارية أبدًا، ولا صلاحيات تتجاوز دور المستخدم نفسه.

درسان تعلّمناهما على الطريق

1

التطبيق بوصفه خادم التفويض

كان تصميمنا السابق يبادل تسجيل دخول المستخدم برمز للنظام الخلفي لدى مزوّد هوية خارجي. ونجح ذلك، لكن الجلسات الطويلة الأمد وتبادل الرموز (⁦Token Exchange⁩) لم يتوافقا جيدًا، فكان المستخدمون يرون «انتهت صلاحية تسجيل الدخول» بعد فترات الخمول. وحين أصبح VamiGRC نفسه خادم التفويض، زالت هذه الفئة من المشكلات.

2

تفاصيل الاكتشاف مهمة

تسبّب نطاق (Scope) واحد مفقود، هو ⁦offline_access⁩، في إخفاق عميل ذكاء اصطناعي كبير قبل أن يعرض صفحة تسجيل الدخول أصلًا.

الأسس: RFC 9728: OAuth 2.0 Protected Resource Metadata (أبريل 2025) (يفتح موقعًا خارجيًا) · RFC 8707: Resource Indicators for OAuth 2.0 (فبراير 2020) (يفتح موقعًا خارجيًا) · RFC 9700: Best Current Practice for OAuth 2.0 Security (يناير 2025) (يفتح موقعًا خارجيًا) · The OAuth 2.1 Authorization Framework (Internet-Draft) (يفتح موقعًا خارجيًا)

الموافقات

لماذا التأكيد في المحادثة غير كافٍ

كان إصدارنا الأول يطلب من المستخدم تأكيد كل تغيير داخل المحادثة. وبدا ذلك آمنًا، لكن الردّ على التأكيد كان يجري في القناة نفسها التي يتحكم فيها المهاجم.

الإصدار الأول: التأكيد في المحادثة

  1. الوكيليقترح تغييرًا ويطلب التأكيد في المحادثة
  2. المحادثةتنتظر «نعم» بوصفها تأكيدًا
  3. الوكيل المُتلاعَب بهيكتب «نعم» بنفسه
  4. الرمز المسروقيكتب البيانات مباشرةً عبر واجهة API ولا يرى المحادثة أبدًا

الضابط يقع في قناة المهاجم.

اليوم: يفرضه الخادم

  1. خادم MCPيحفظ المعاينة: للاستخدام مرة واحدة، وصالحة لمدة 15 دقيقة، ومرتبطة بالرمز والمستأجر والشركة
  2. التأكيديسري على هذه المعاينة بعينها فقط؛ وإذا تغيّر السجل في الأثناء، يُرفض
  3. خادم MCPيوقّع الطلب بعينه بوصفه إثبات تأكيد صالحًا لمدة دقيقتين
  4. النظام الخلفيلا يكتب إلا بإثبات صالح، ويرفض كل ما عدا ذلك

لا يستطيع الوكيل تزييف هذه الطبقات. وتتطلب عمليات الحذف والقرارات فوق ذلك موافقة داخل التطبيق.

ثلاث طبقات لا يستطيع الوكيل تزييفها

01

معاينات يفرضها الخادم

كل عملية كتابة استدعاء من خطوتين: الأولى تُعيد معاينة وتحفظها على الخادم، ولا تتم الكتابة إلا بتأكيدها. وإذا تغيّر السجل في الأثناء، يُرفض التأكيد.

  • للاستخدام مرة واحدة
  • 15 دقيقة
  • الرمز · المستأجر · الشركة
02

إثبات التأكيد

في خطوة التأكيد، يوقّع خادم MCP الطلب بعينه. ويرفض النظام الخلفي أي عملية كتابة من دون هذا الإثبات، لذا لا يستطيع رمز وصول مسروق يُستخدم مباشرةً ضد واجهة API أن يكتب شيئًا.

  • معرّف الرمز · طريقة الطلب · المسار · تجزئة جسم الطلب
  • دقيقتان
03

مراجع تُكتب يدويًا عند الحذف

مجرد «نعم» لا يحذف شيئًا. إذ يجب على المستخدم كتابة مرجع السجل، وتذكر المعاينة كل ما يرتبط بالسجل. أما السجلات القابلة للأرشفة فتُؤرشف بدلًا من محوها.

  • المرجع بدلًا من «نعم»
  • الأرشفة بدلًا من المحو
الاستقلالية

مستويات استقلالية لكل إجراء، يفرضها النظام الخلفي

لا يستحق كل إجراء القدر نفسه من الثقة. فكل مسار كتابة في واجهة API العامة ينتمي إلى فئة إجراءات، وتحدّد المؤسسة أعلى مستوى استقلالية لكل فئة، وفق مستويات VamiGRC من ⁦L0⁩ إلى ⁦L3⁩.

  • L0

    يدوي

    لا يُسمح للوكيل بالتصرّف.

    في خادم MCPيُرفض الطلب مع سبب واضح، ويتصرّف المستخدم بنفسه في VamiGRC.

  • L1

    بمساعدة الذكاء الاصطناعي

    يُعِدّ الوكيل، ويتصرّف المستخدم.

    في خادم MCPمسودة يراجعها المستخدم ويحفظها.

  • L2

    تنفيذ بالذكاء الاصطناعي مع موافقة إلزامية

    يتصرّف الوكيل بعد موافقة إنسان.

    في خادم MCPمعاينة ثم تأكيد، أو موافقة داخل التطبيق لعمليات الحذف والقرارات.

  • L3

    استقلالية كاملة وتدقيق كامل

    يتصرّف الوكيل وحده، ويُسجَّل كل شيء.

    في خادم MCPلفئات منخفضة المخاطر فقط، مثل الملاحظات.

ثلاث قواعد تضمن متانة النموذج

التشديد فقط، لا التخفيف أبدًا

تحدّد المؤسسة الحد الأقصى، ولا يستطيع كل مستخدم إلا تضييقه لمساعديه. ويسري دائمًا الإعداد الأشدّ صرامة.

سقوف صارمة

لا تُنفَّذ عمليات الحذف والقرارات باستقلالية أبدًا، ولا تمرّ القرارات الموقَّعة، مثل الموافقات، عبر المحادثة أبدًا.

مبدأ ⁦fail closed⁩

يُعدّ المسار الذي لا فئة له محظورًا. ويفشل أحد الاختبارات فور ظهور مسار كتابة جديد بلا فئة.

حاسبة الاستقلالية: أي مستوى يسري في النهاية؟

اختاروا فئة إجراءات، والحد الأقصى للمؤسسة، والحد الشخصي. وتطبّق الحاسبة القواعد الثلاث.

فئة الإجراءات
الحد الأقصى للمؤسسة
الحد الشخصي

المستوى الساري

L2تنفيذ بالذكاء الاصطناعي مع موافقة إلزامية

معاينة ثم تأكيد، أو موافقة داخل التطبيق لعمليات الحذف والقرارات.

يقيّده الحد الأقصى للمؤسسة.

نموذج مبسّط مبني على هذا التقرير الميداني، وليس نسخة من إعدادات المنتج.

المستأجرون والتدقيق

الربط بالمستأجر وسجل تدقيق خارج متناول الوكيل

يعمل المستشارون لصالح عدة عملاء، لذا كثيرًا ما يكون لشخص واحد حق الوصول إلى عدة مستأجرين. ويتبع خادم MCP المستأجرَ الذي اختاره المستخدم في تطبيق VamiGRC، مع التحقق منه عند كل استدعاء ودون تخزين مؤقت. غير أن هذه السهولة تُنشئ خطرًا جديدًا.

  1. معاينة

    معاينة في المستأجر A

    تحفظ المعاينة مستأجرها وشركتها، ويذكرهما الردّ.

  2. تبديل

    التبديل إلى المستأجر B في التطبيق

    يتبع خادم MCP هذا التبديل عند الاستدعاء التالي.

  3. مرفوض

    تأكيد المعاينة القديمة

    يُرفض التأكيد قبل إرسال أي شيء.

  4. دون بديل احتياطي

    المستأجر لم يعد متاحًا

    يرفض الخادم الطلب بدلًا من الانتقال بصمت إلى مستأجر آخر.

التحقق

لكل ضابط اختبار سلبي

يحاول كل اختبار كسر أحد الضوابط، ويُنفَّذ من طرف إلى طرف على نظام خلفي حقيقي وعميل MCP حقيقي، لا في اختبارات الوحدات فحسب.

الاختبارات السلبية للضوابط ونتائجها
الفحصالمتوقعالنتيجة
استخدام رمز التفويض مرتينمرفوض، ويُنهى الاتصال الذي أنشأهناجح
إعادة استخدام رمز تحديث قديم بعد التدويرمرفوض، ويُنهى الاتصال بأكملهناجح
مجرد «نعم» على معاينة حذفلا يُحذف شيء، ويُطلب المرجعناجح
تبديل المستأجر بين المعاينة والتأكيديُرفض التأكيد، ولا يُكتب شيءناجح
عدة تبديلات متتالية للمستأجريتبع الاتصال كل تبديلناجح
الحذف عبر المعرّف في شركة أخرىغير موجود، ويبقى السجل سليمًاناجح
الكتابة من دون إثبات التأكيدمرفوضناجح
الحد الشخصي أشدّ صرامة من حد المؤسسةيسري الحد الأشدّ صرامةناجح

ما كشفته الاختبارات قبل الإطلاق

  • فحص صلاحيات كان يقيّم الطلبات ضمن نطاق خاطئ
  • عميل كان يقطع الاتصالات عند غياب نطاق OAuth واحد

وما كشفها هو اختبار الضوابط كما يفعل المهاجم، لا اختبار الوظائف فحسب.

الخلاصات والحدود

ما تعلّمناه وأين تكمن الحدود

خمس خلاصات تنطبق على خوادم MCP الأخرى أيضًا، وخمسة حدود نذكرها بصراحة.

خمس خلاصات

  1. 1التأكيد الذي يستطيع الوكيل الردّ عليه ليس ضابطًا.ضعوا الموافقات حيث لا يستطيع الوكيل الوصول إليها: في النظام الخلفي، أو في الجلسة الخاصة بالتطبيق نفسه.
  2. 2اربطوا الموافقة بالإجراء بعينه.يجب أن يطابق الرمزُ والطلبُ وإصدارُ السجل والمستأجرُ ما وافق عليه المستخدم. وكل ما عدا ذلك يُرفض.
  3. 3صنّفوا الإجراءات، ثم طبّقوا مبدأ ⁦fail closed⁩.تحديد الاستقلالية لكل فئة إجراءات، مع حظر أي إجراء غير مصنّف افتراضيًا، أكثر قابلية للتوسّع من الإعدادات الخاصة بكل أداة.
  4. 4لا يحصل الوكيل أبدًا على أكثر مما يملكه المستخدم.تتراكم الرموز المقيَّدة ودور المستخدم نفسه وحدود المؤسسة، ويسري الأشدّ صرامة بينها.
  5. 5اختبروا الضوابط كما يفعل المهاجم.جرّبوا عمدًا مع كل ضابط إعادة الإرسال وإعادة الاستخدام والتبديل والتجاوز.

الحدود، بصراحة

  • لا يمكن منع حقن الأوامر منعًا تامًا.تُمرَّر النصوص المأخوذة من السجلات إلى الوكيل موسومةً بوصفها بيانات غير موثوقة، لكن النموذج قد يتبعها رغم ذلك. فالضوابط تحدّ من الضرر، لكنها لا توقف التلاعب نفسه.
  • لا تزال الجلسة المختطفة قادرة على التأكيد في المحادثة على المستوى ⁦L2⁩.يوقف إثبات التأكيد الرمز المسروق، لا الوكيل المُتلاعَب به داخل جلسة نشطة. لذلك تتطلب عمليات الحذف والقرارات موافقة داخل التطبيق.
  • يستطيع الوكيل كتابة مرجع الحذف بنفسه.يحمي المرجع المكتوب يدويًا من الأخطاء غير المقصودة، لا من وكيل مُتلاعَب به يتصرّف بإصرار. والموافقة داخل التطبيق تسدّ هذه الثغرة.
  • التراجع ممكن جزئيًا فقط.يستطيع المسؤول استعادة السجلات المؤرشفة، لكن التراجع عن كل تغيير يجريه الوكيل لا يزال على خارطة طريقنا.
  • المعايير لا تزال حديثة العهد.قائمة ⁦OWASP MCP Top 10⁩ إصدار ⁦Beta (v0.1)⁩، و⁦Agent Control Standard⁩ في الإصدار ⁦0.1.0⁩، لذا ستتغيّر مطابقتنا مع نضجهما.
فحص الضوابط

أين تقع ضوابط خادم MCP لديكم؟

عشرة أسئلة مستمدة من هذا التقرير الميداني. وكلما أجبتم بـ «نعم» أكثر، قلّ اعتماد أمنكم على ما يفعله الوكيل.

  1. 01هل تقع الموافقات خارج القناة التي يتحكم فيها الوكيل، أي في النظام الخلفي أو في الجلسة الخاصة بتطبيقكم؟
  2. 02هل يفرض الخادم معاينات صالحة للاستخدام مرة واحدة، وتنتهي صلاحيتها، وترتبط بالرمز والمستأجر وإصدار السجل؟
  3. 03هل يرفض النظام الخلفي لديكم عمليات الكتابة التي لا تحمل إثباتًا مرتبطًا بالطلب بعينه؟
  4. 04هل رموز الوصول قصيرة العمر ومرتبطة بخادم MCP لديكم، وهل تتغيّر رموز التحديث مع كل استخدام، وهل تمرير الرموز مستبعد؟
  5. 05هل يقتصر وصول رمز الوكيل على واجهة API العامة، دون وظائف الإدارة أبدًا، ودون تجاوز دور المستخدم أبدًا؟
  6. 06هل ينتمي كل مسار كتابة إلى فئة إجراءات، وهل يُعدّ المسار الذي لا فئة له محظورًا؟
  7. 07هل تُستثنى عمليات الحذف والقرارات دائمًا من التنفيذ المستقل، وهل تتطلب موافقة داخل التطبيق؟
  8. 08هل تحفظ كل معاينة المستأجر الخاص بها، وهل يُتحقق من المستأجر عند كل استدعاء دون انتقال صامت إلى بديل؟
  9. 09هل يكتب النظام الخلفي سجل التدقيق، ويَسِم كل تغيير أُجري عبر مساعد؟
  10. 10هل لكل ضابط اختبار سلبي يحاول كسره من طرف إلى طرف؟

تمت الإجابة: 0/10

النتيجة للاسترشاد فقط، وليست دليل إثبات للتدقيق. ولا تُرسَل إجاباتكم.

المطابقة

المطابقة مع كتالوجات مخاطر OWASP

هكذا نطابق الضوابط مع كتالوجات المخاطر. والكتالوجان كلاهما حديث العهد، وستتغيّر المطابقة بتغيّرهما.

قائمة ⁦OWASP MCP Top 10⁩ إصدار Beta، و⁦Agent Control Standard⁩ في الإصدار ⁦0.1.0⁩. المخاطر العشرة لـ MCP كاملةً في دراستنا المعمّقة

ورقة بيضاء · مجانًا

⁦Securing an MCP server in practice⁩ – ضوابط الوكلاء لمسؤولي أمن المعلومات

التقرير الميداني معدًّا لصنّاع القرار: نموذج التهديدات، والهوية دون تمرير الرموز، والموافقات في النظام الخلفي، ومستويات الاستقلالية والحوكمة، والربط بالمستأجر وسجل التدقيق، والاختبارات السلبية، وأسئلة للموردين، وخطة ⁦30-60-90⁩ يومًا.

غلاف الورقة البيضاء «⁦Securing an MCP server in practice – Agent controls for CISOs⁩»
PDF · 23 صفحةالإنجليزية والألمانيةالمؤلف: ⁦Houssem Bouarada⁩
  • عشر رسائل أساسية لمجلس الإدارة والتدقيق الداخلي
  • ضوابط للرموز والموافقات والاستقلالية والمستأجرين
  • ثمانية اختبارات سلبية ومعايير القبول
  • أسئلة للموردين وخطة ⁦30-60-90⁩ يومًا
تنزيل مجاني

اطلبوا الورقة البيضاء

Securing an MCP server in practice – Agent controls for CISOs

النسخة اللغوية *
الدعم

من التقرير الميداني إلى خادم MCP لديكم

نفحص خوادم MCP وتكاملات الوكلاء على النحو الذي يصفه هذا التقرير: بنموذج للتهديدات، وضوابط خارج متناول الوكيل، واختبارات سلبية.

Houssem Bouarada
المؤلف

Houssem Bouarada

باحث أمني، ⁦Vami Research⁩

⁦Houssem Bouarada⁩ باحث أمني في ⁦Vami Research⁩. ويركّز على الأمن الهجومي وعلى تأمين الأدوات المدعومة بالذكاء الاصطناعي، مثل خوادم MCP.

اسألوا المؤلف
مواصلة البحث

أبحاث ذات صلة

دراسات معمّقة 6

معيار Agent Control Standard (ACS)إن OWASP Agent Control Standard (ACS) مواصفة مفتوحة يفحص بموجبها وكيلُ حراسة (Guardian Agent) إجراءاتِ وكيل ذكاء اصطناعي عند نقاط ربط (Hooks) محددة، ويسمح بها أو يحظرها أو يعدّلها أو يعرضها للموافقة أو يؤجّلها وفق سياسة. تبيّن هذه الدراسة المعمّقة ما يقدّمه الإصدار 0.1.0 اليوم — وأين تكمن حدوده.الاختبار الأمني الموجَّه بنموذج التهديداتيُظهر التتبّع المشترك (Trace) فقط أن الأحداث مترابطة. لكنه لا يُظهر ما إذا كان وكيل الذكاء الاصطناعي قد احترم الموافقة والهدف والصلاحية ومصدر البيانات. تبيّن ورقتنا البحثية المقبولة في ICSPIS 2026 (IEEE) القياسات عن بُعد (Telemetry) اللازمة لذلك. وتنقل هذه الصفحة النتائج إلى OWASP Agent Control Standard (ACS).انعدام الثقة (Zero Trust) لوكلاء الذكاء الاصطناعيتتصرف وكلاء الذكاء الاصطناعي المستقلة بصلاحيات ممنوحة بشكل مشروع وبسرعة الآلة. ينقل Zero Trust مبادئ مجرَّبة — التحقق بدلًا من الثقة، الحد الأدنى من الصلاحيات، افتراض الاختراق (Assume Breach) — إلى الأنظمة الوكيلية.MCP وOAuth 2.1منذ مراجعة المواصفة في يونيو 2025، أصبح خادم MCP المحمي خادم موارد (Resource Server) وفق OAuth 2.1 بأدوار منفصلة بوضوح. تشرح هذه الدراسة المعمّقة سلسلة الاكتشاف وتسجيل العملاء وقواعد الرموز وربط الجمهور (Audience) – وتبيّن أين تفشل التطبيقات عمليًا.OWASP MCP Top 10أصبح Model Context Protocol طبقة التكامل بين النماذج اللغوية وأنظمة المؤسسات – وبذلك حدًّا جديدًا للثقة غالبًا ما يكون غير مفحوص. وتحدد OWASP MCP Top 10 المخاطر العشرة لهذه الطبقة.تطوير الخوادم الآمنةتربط خوادم MCP مساعدي الذكاء الاصطناعي بالأدوات ومصادر البيانات، فتصبح بذلك هي نفسها هدفًا للهجوم. نرافقكم في البنية وتصميم الأدوات والمصادقة والنشر وفق إرشادات أمنية راسخة.

أسئلة شائعة

إجابات موجزة

لماذا لا يكفي التأكيد في المحادثة؟

لأنه يجري في القناة نفسها التي يتحكم فيها المهاجم. فالوكيل المُتلاعَب به عبر حقن الأوامر يستطيع أن يجيب عن السؤال بـ «نعم» بنفسه، ومن يملك رمز وصول مسروقًا يتجاوز المحادثة كليًا. والأكثر فعالية هي الضوابط التي لا يستطيع الوكيل تزييفها: معاينات يفرضها الخادم، وإثبات تأكيد مرتبط بالطلب بعينه، وموافقة داخل التطبيق لعمليات الحذف والقرارات.

ما الذي تشترطه مواصفة MCP للتفويض؟

منذ مراجعة يونيو 2025، أصبح خادم MCP المحمي خادمَ موارد وفق ⁦OAuth 2.1⁩. وتشترط المواصفة اكتشاف البيانات الوصفية عبر بيانات ⁦Protected Resource Metadata⁩ (⁦RFC 9728⁩)، وPKCE، ورموزًا تُصدَر لخادم MCP بوصفه جمهورها (Audience)؛ أما تمرير الرموز فمحظور. ويُبيّن التقرير الميداني ما يلزم فوق ذلك حالما يُسمح للوكيل بالكتابة.

ماذا تعني مستويات الاستقلالية من ⁦L0⁩ إلى ⁦L3⁩؟

تحدّد ما يجوز للوكيل فعله بمفرده: ⁦L0⁩ يدوي، و⁦L1⁩ بمساعدة الذكاء الاصطناعي، و⁦L2⁩ تنفيذ بالذكاء الاصطناعي مع موافقة إلزامية، و⁦L3⁩ استقلالية كاملة وتدقيق كامل. وفي خادم MCP الخاص بـ VamiGRC، تحدّد المؤسسة أعلى مستوى لكل فئة إجراءات، ولا يستطيع كل مستخدم إلا تضييقه، ويُحظر المسار الذي لا فئة له. ولا تُنفَّذ عمليات الحذف والقرارات باستقلالية أبدًا.

هل تمنع هذه الضوابط حقن الأوامر؟

لا. تُوسَم النصوص المأخوذة من السجلات بوصفها غير موثوقة، لكن النموذج قد يتبعها رغم ذلك. فالضوابط تحدّ مما يستطيع الوكيل المُتلاعَب به فعله، لكنها لا توقف التلاعب نفسه. لذلك تتطلب عمليات الحذف والقرارات موافقة داخل التطبيق.

كيف يُختبر خادم MCP كما يفعل المهاجم؟

باختبار سلبي لكل ضابط يحاول كسره عمدًا: استخدام رمز التفويض مرتين، وإعادة استخدام رمز تحديث قديم، وتبديل المستأجر بين المعاينة والتأكيد، والكتابة من دون إثبات التأكيد، والحذف عبر المعرّف في شركة أخرى. وكل ذلك من طرف إلى طرف على نظام خلفي حقيقي وعميل MCP حقيقي، لا في اختبارات الوحدات فحسب.

ما مدى نضج ⁦OWASP MCP Top 10⁩ و⁦Agent Control Standard⁩؟

كلاهما في بداياته: فقائمة ⁦OWASP MCP Top 10⁩ إصدار Beta يحمل الرقم ⁦0.1⁩، و⁦Agent Control Standard⁩ في الإصدار ⁦0.1.0⁩. ونطابق ضوابطنا مع ⁦Token Mismanagement & Secret Exposure⁩ و⁦Context Injection & Over-Sharing⁩ و⁦Excessive Agency⁩، وسنعدّل المطابقة مع نضج المعايير.

اربطوا الوكلاء دون التخلي عن السيطرة

نفحص خوادم MCP وتكاملات الوكلاء كما يفعل المهاجم، ونُبيّن أي القرارات لا تزال في متناول الوكيل.