OWASP MCP Top 10: شرح كل خطر بالأمثلة
جولة بلغة بسيطة على المخاطر العشرة في OWASP MCP Top 10، من التوكنات المسرّبة وتسميم الأدوات إلى الخوادم الخفية وإفراط مشاركة السياق. لكل خطر هجوم موثّق، وإصلاح واضح، وخطة أسبوعية لتطبيقها بالترتيب.
جولة بلغة بسيطة على المخاطر العشرة في OWASP MCP Top 10، من التوكنات المسرّبة وتسميم الأدوات إلى الخوادم الخفية وإفراط مشاركة السياق. لكل خطر هجوم موثّق، وإصلاح واضح، وخطة أسبوعية لتطبيقها بالترتيب.
يمكن لخادم MCP واحد أن يمنح وكيل الذكاء الاصطناعي مستودعاتك وبريدك الوارد وقاعدة بياناتك في بعد ظهر واحد، وغالبًا ما تحتاج الموافقة عليه إلى نقرة واحدة. هذه السهولة بالضبط هي ما جاء OWASP MCP Top 10 ليواجهها. فهو يسمّي المخاطر العشرة الأكثر احتمالًا لإفشال أي نشر لبروتوكول Model Context Protocol، من التوكنات المسرّبة إلى خوادم لا يعرف فريق الأمن بوجودها. تمرّ هذه المقالة على كل بند بالترتيب، وتعرض شكل الهجوم بمثال حقيقي أو موثّق، وتختم كل قسم بالإصلاح الذي يستحق القيام به أولًا.
القائمة مأخوذة من مشروع OWASP MCP Top 10 الإصدار 2025، بقيادة Vandana Verma Sehgal. تشير صفحة المشروع حاليًا إلى أنه في مرحلة الاختبار التجريبي والتجريبي المحدود، لذا قد تتغير الصياغة والترتيب. تعامل مع البنود العشرة كمفردات مشتركة لا كمعيار نهائي.
MCP هو البروتوكول الذي يتيح للنموذج استدعاء الأدوات. يتصل عميل MCP (التطبيق الذي يستضيف النموذج) بخادم واحد أو أكثر من خوادم MCP، ويعرض كل خادم أدوات وموارد وأوامر نصية يمكن للنموذج استخدامها. كل اتصال من هذه الاتصالات قرار ثقة: الخادم يثق بأن العميل سيتصرف بشكل سليم، والعميل يثق بأوصاف الخادم ومخرجاته، والنموذج يثق بأي نص يصل إلى نافذة السياق الخاصة به.
يرسم Top 10 الأماكن التي تنكسر فيها هذه الثقة. إليك البنود العشرة في لمحة:
| المعرّف | الخطر | المعنى البسيط | أرخص إصلاح أولًا |
|---|---|---|---|
| MCP01 | سوء إدارة التوكنات وكشف الأسرار | تتسرّب بيانات الاعتماد عبر الكود أو السجلات أو السياق | توكنات قصيرة العمر وفحص الأسرار |
| MCP02 | تصعيد الصلاحيات عبر توسّع النطاق | تتضخم الصلاحيات أكثر مما تحتاجه المهمة | أقل قدر من الصلاحيات مع انتهاء صلاحية |
| MCP03 | تسميم الأدوات | يحمل وصف الأداة أو مخرجاتها تعليمات مخفية | تثبيت تعريفات الأدوات وحساب بصمة لها |
| MCP04 | هجمات سلسلة التوريد وعبث التبعيات | حزمة خبيثة أو مختطفة تصبح خادمك | حصر كل تبعية وتثبيتها |
| MCP05 | حقن الأوامر وتنفيذها | يصل نص غير موثوق إلى الصدفة (shell) | عدم استخدام الصدفة، وقوائم الوسائط، والتحقق من المدخلات |
| MCP06 | تحويل مسار النية | المحتوى المسترجَع يعيد توجيه هدف الوكيل | التعامل مع النص المسترجَع كبيانات، والموافقة على عمليات الكتابة |
| MCP07 | مصادقة وتفويض غير كافيين | لا تتحقق الخوادم من هوية المتصل | OAuth 2.1 وفحوصات لكل أداة |
| MCP08 | غياب التدقيق والقياس عن بُعد | لا أحد يرى ما فعله الوكيل | تسجيل كل استدعاء لأداة |
| MCP09 | خوادم MCP الخفية | خوادم غير معتمدة تعمل خارج الحوكمة | الحصر والقائمة المسموح بها |
| MCP10 | حقن السياق وإفراط المشاركة | يتسرّب السياق بين المستخدمين أو المهام | عزل السياق لكل مستخدم |
💡 ملاحظة حول التسمية: تُسمّي صفحة نظرة عامة على المشروع الإدخال السادس "حقن الأوامر النصية عبر حمولات سياقية"، بينما عنوان صفحته التفصيلية لـ MCP06 هو "تحويل مسار النية". كلاهما يشير إلى الخانة نفسها، وتستخدم هذه المقالة عنوان الصفحة التفصيلية.

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

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

تختار النماذج الأدوات بقراءة أسمائها وأوصافها، وهذا ما يجعل الأوصاف سطح هجوم. الأداة المسمومة تخفي تعليمات في بياناتها الوصفية أو مخططها أو مخرجاتها. في أبريل 2025 عرضت Invariant Labs الهجوم بأداة جمع بريئة، كان وصفها المخفي يأمر الوكيل بقراءة ملف إعداد MCP محلي وملف SSH الخاص، ثم تمرير المحتوى في معامل إضافي بينما يتحدث الرد عن الحساب.
والنسخة الأخطر هي سحب البساط (rug pull): تسلك الأداة سلوكًا جيدًا عند موافقتك عليها، ثم تغيّر وصفها بعد التثبيت.
ما الذي يجب فعله:

خادم MCP شيفرة كتبها شخص آخر وسحبها من سجل عام. الحزمة المخترقة أو المنتحلة تحصل على الوصول نفسه الذي تمنحه للحزمة الأصلية. في سبتمبر 2025، نسخت حزمة npm اسمها postmark-mcp تكامل Postmark الحقيقي وأضافت سطرًا واحدًا يرسل نسخة مخفية من كل بريد صادر إلى عنوان يتحكم فيه المهاجم. وصفه باحثو Koi Security بأنه أول خادم MCP خبيث يُرصد في البرية، وتشرح كتابة Snyk التفاصيل. وقد كانت تُنزَّل نحو 1,500 مرة أسبوعيًا قبل إزالتها.
ما الذي يجب فعله:
تبني الوكلاء الأوامر من النصوص. وعندما يكون النص خاضعًا لسيطرة المهاجم (تعليق في قضية، أو اسم ملف، أو صفحة ويب)، تتولى الصدفة الباقي. وفقًا لتحليل Cycode للقائمة، فإن الثغرة CVE-2025-6514 في mcp-remote حملت درجة CVSS تبلغ 9.6، وأثرت على حزمة تجاوزت 437,000 تنزيل، وسمحت بحقن أوامر نظام التشغيل. وهي تقع على الحد الفاصل بين هذا البند وMCP04.
الفرق بين الخطر والأمان غالبًا سطر واحد:
import re
import subprocess
# Risky: untrusted text is spliced into a shell string
subprocess.run(f"git log --author={author}", shell=True)
# Safer: fixed command, argument list, validated input, no shell
if not re.fullmatch(r"[A-Za-z0-9._@][A-Za-z0-9 ._@-]{0,63}", author):
raise ValueError("invalid author")
subprocess.run(["git", "log", "--author", author], shell=False, check=True)
ما الذي يجب فعله:

يقرأ الوكيل صفحة ويب أو قضية أو ملف PDF، فيحتوي المحتوى على تعليمات. لا يستطيع النموذج أن يميّز بثقة بين البيانات والأوامر، لذا قد ينفذ هذه التعليمات. والنتيجة هي اختطاف الهدف: يبدو الوكيل وكأنه ما زال ينفّذ مهمتك، بينما يخدم في الواقع شخصًا آخر.
أوضح حالة حقيقية جاءت من Invariant Labs في مايو 2025، ضد خادم GitHub MCP الرسمي. يفتح المهاجم قضية خبيثة في مستودع عام. وعندما يطلب مالك المستودع من وكيله النظر في القضايا المفتوحة، يقرأ الوكيل القضية، فيُحقن، ويسحب بيانات من مستودعات خاصة إلى سياقه، وينشرها في طلب سحب على المستودع العام. وصف الباحثون ذلك بأنه تدفق سام للوكيل، وقالوا إنه مشكلة في البنية وليس خللًا في شيفرة الخادم، واشتبهوا في أن كثيرين يختارون سياسة موافقة "السماح دائمًا"، وهي ما يزيل الفحص البشري.
ما الذي يجب فعله:
💡 نصيحة: المصنِّف طبقة واحدة، وليس الدفاع كله. Llama Guard 4 12B على PicassoIA نموذج لإدارة المحتوى يمكنه فحص النص قبل وصوله إلى وكيلك، لكنه مصنِّف للسلامة وليس أداة مخصصة لكشف الحقن، لذا أبقِ على الموافقات وأقل قدر من الصلاحيات قائمًا.

بعض خوادم MCP لا تسأل أبدًا من المتصل. نقطة نهاية مكشوفة بلا مصادقة تتيح لأي شخص استدعاء أدواتها، والخادم الذي يتحقق من الهوية مرة واحدة ولا يتحقق من الصلاحيات في كل استدعاء يسمح لمستخدم منخفض الصلاحيات بتشغيل إجراءات عالية الصلاحيات.
من الحالات الملموسة الثغرة CVE-2025-49596 في MCP Inspector التابع لشركة Anthropic، وقد صُنّفت بدرجة CVSS تبلغ 9.4. الإصدارات الأقل من 0.14.1 لم تكن تحوي أي مصادقة بين عميل Inspector ووسيطه، فكان بإمكان الطلبات غير الموثّقة تشغيل أوامر عبر stdio. وعند دمجها مع خلل في المتصفح وتزييف طلبات عبر المواقع، كان مجرد زيارة موقع خبيث كفيلًا بتشغيل شيفرة على جهاز مطور.
ما الذي يجب فعله:

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

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

نوافذ السياق المشتركة أو الدائمة تتسرب. عندما يخدم وكيل واحد عدة مستخدمين أو مستأجرين، ولا يكون السياق معزولًا، قد تظهر بيانات شخص في جلسة شخص آخر. سيناريو OWASP هو وكيل واحد يخدم كثيرين، فيسرّب البيانات الشخصية لمستخدم إلى جلسة مختلفة.
وقد حدث هذا فعلًا لمنتج حقيقي. ذكرت BleepingComputer أن Asana حذّرت المستخدمين في يونيو 2025 من أن خللًا منطقيًا في ميزة MCP الجديدة لديها كشف بيانات بعض المؤسسات لمؤسسات أخرى. تأثر نحو 1,000 عميل، وأوقفت Asana الميزة من 5 يونيو إلى 17 يونيو بينما تصلح الخلل. كان خطأً منطقيًا وليس اختراقًا، وكان الخلل قائمًا نحو شهر قبل أن تكتشفه Asana.
ما الذي يجب فعله:
لا يمكنك إغلاق البنود العشرة كلها في أسبوع، لذا ابدأ من حيث يكون الضرر الأكبر والعمل الأقل.
| اليوم | المهمة | المخاطر التي تُغلق |
|---|---|---|
| الإثنين | حصر كل خادم MCP وإعدادات كل عميل | MCP09 |
| الثلاثاء | فحص المستودعات بحثًا عن الأسرار، وتدوير أي سر قديم، وتقصير عمر التوكنات | MCP01 |
| الأربعاء | إضافة المصادقة وفحوصات الصلاحيات لكل أداة | MCP07، MCP02 |
| الخميس | تثبيت الإصدارات، وتجزئة أوصاف الأدوات، وضبط تنبيهات التغيير | MCP03، MCP04 |
| الجمعة | تفعيل تسجيل استدعاءات الأدوات واشتراط الموافقة على عمليات الكتابة | MCP08، MCP06 |
💡 أخطاء شائعة: الموافقة على "السماح دائمًا" لتقليل النقرات، والوثوق بخادم لأن تنزيلاته كثيرة، وتسجيل كل شيء ما عدا معاملات الأدوات المهمة.
تكون قائمة التحقق الأمنية أكثر تأثيرًا حين يستطيع الناس تخيّلها. كل صورة في هذه المقالة تستخدم بديلًا ماديًا بسيطًا لعيب مجرد: حلقة مزدحمة ببطاقات لتوسّع النطاق، وباب مفتوح لضعف المصادقة، وسجل فارغ لغياب سجلات التدقيق. يمكنك بناء مرئيات من النوع نفسه لنماذج التهديد الخاصة بك، ولعروض التدريب، ولويكيات الشركة الداخلية.
جرّبها على PicassoIA. افتح نموذج تحويل نص إلى صورة مثل Seedream 5 Pro أو Qwen Image 3 أو GPT Image 2، وصف شيئًا حقيقيًا واحدًا يمثّل الخطر لديك، وأضف الإضاءة والعدسة التي تريدها. ولّد عدة اختيارات، واختر الأوضح، وأدرجها في مراجعتك التالية. وإذا كنت تكتب الوثائق أيضًا، فيمكن للنماذج اللغوية الكبيرة على PicassoIA أن تساعدك في كتابة المسودة الأولى قبل أن تحررها بيدك.
اختر لغتك