أمان MCP للتوثيق: نموذج تهديد للوصول المقيد للقراءة فقط
نمذج تهديد وصول MCP إلى التوثيق عبر نطاق الصلاحيات وحقن الموجهات وSSRF وإعادة الطلب وتسميم الأدوات وتغيّر المخطط وسجلات التدقيق والمحتوى ثنائي اللغة.
· 13 دقائق قراءة · بقلم فريق Nibleaf
قد تكشف أداة توثيق مخصصة للقراءة فقط صفحات خاصة، أو تجلب رابطًا يتحكم فيه مهاجم، أو تسمم تعليمات المساعد، أو تعيد قرار صلاحية قديمًا. غياب الكتابة يقلل فئة واحدة من الأثر، لكنه ليس حدًا أمنيًا كاملًا.
يفصل نموذج التهديد هذا بين خادم MCP وموصلات البيانات والتطبيق المضيف ومحتوى التوثيق بوصفها مناطق ثقة مستقلة. عدّله وفق النقل وموفر الهوية الفعليين، ثم اختبر الضوابط بدل افتراض أن التوافق مع البروتوكول يثبت الأمان.
حدّد الأصول والجهات وحدود الثقة
احم نصوص الصفحات والمسودات وروابط المصدر واستعلامات البحث وبيانات العضوية ومفاتيح API والروابط الموقعة وسجلات التدقيق وبيانات النشر. تشمل الجهات زائرًا مجهولًا وقارئًا مدعوًا وكاتبًا ومديرًا وعميلًا مخترقًا ومؤلف صفحة خبيثًا ومشغلًا يستطيع قراءة السجلات.
ارسم كل حد: من العميل إلى خادم MCP، ومن الخادم إلى خدمة الصلاحيات، ومنه إلى فهرس البحث والمستودع أو مخزن الكائنات، ومنه إلى أي رابط خارجي. سجّل هوية المستخدم التي تعبر كل حد، والمكوّن القادر على تغيير المؤسسة أو المشروع أو النشر أو اللغة أو الإصدار أو مستوى الظهور.
قيّد النطاق قبل الاسترجاع
اشتق النطاق من ادعاءات موثقة على الخادم. ينبغي أن يحل الطلب إلى مجموعة محدودة مثل:
المؤسسة + المشروع + النشر + اللغة + الإصدار + الظهور + الأدوات المسموحة
طبّقها داخل استعلام التخزين أو البحث، لا بعد استرجاع نتائج واسعة. ارفض المعرفات المختلطة قبل الوصول إلى الموفر. يجب ألا تصبح صفحة في المؤسسة «ب» مقروءة لأن المتصل وضع «أ» في حقل و«ب» في آخر.
استخدم عينات إنجليزية وعربية متطابقة وأخرى غير متطابقة عمدًا. أثبت أن السماح بصفحة إنجليزية لا يسمح تلقائيًا بترجمتها العربية أو بإصدار خاص قديم أو نشر غير منشور.
عامل محتوى التوثيق كمدخل غير موثوق
قد تحتوي الصفحة نصًا يطلب من المساعد تجاهل السياسة أو استدعاء أداة أخرى أو كشف اعتماد أو جلب رابط. ضع المحتوى في قناة بيانات محددة بوضوح، وصرّح بأن التعليمات المضمّنة لا تملك أي سلطة. لا تُدخل نص الصفحة في تعليمات النظام أو المطور.
اختبر حقن الموجه المباشر وغير المباشر داخل العناوين والعناوين الفرعية وكتل الشيفرة والنص البديل والبيانات الأمامية وأوصاف OpenAPI والترجمات والمقاطع المسترجعة. أدرج Unicode مموهًا ونصًا مختلط الاتجاه. النتيجة المطلوبة اقتباس مفيد للمحتوى من دون تغيير السياسة أو نطاق الأدوات.
قيّد الأدوات والطلبات الصادرة
فضّل أدوات ضيقة مثل search_pages وget_page على جالب روابط عام. تحقق من المدخلات بمخطط صارم، وحدد عدد النتائج وحجم الرد، وتجاهل الحقول غير المعروفة.
إذا لزمت المراجع الخارجية، فامنع SSRF: اسمح بالمخططات والوجهات المعتمدة، وافحص كل تحويل، واحظر عناوين loopback وlink-local والشبكات الخاصة وواجهات بيانات المضيف والخدمات الداخلية، وطبّق حدود الاتصال والقراءة والحجم. أعد التحقق بعد DNS وعند كل تحويل، ولا ترسل ترويسة تفويض إلى أصل جديد.
امنع إعادة الطلب والتباس السلطة
اربط الاعتمادات قصيرة العمر بالجمهور والنطاق والعميل حيث يسمح النقل. دوّر الأسرار وأبطلها عند تغيير العضوية أو الظهور، وارفض القيم الفريدة المنتهية أو المعاد استخدامها في التبادلات الحساسة. لا تضع الرموز أو الروابط الموقعة أو الاستعلام الكامل في السجل.
اختبر طلبًا مسجلًا بعد تسجيل الخروج وتدوير المفتاح وخفض الدور ونقل المشروع واستبدال النشر وإنهاء دعم الإصدار. يجب ألا تمدد الذاكرة المؤقتة الوصول بعد الإبطال لأن الأداة للقراءة فقط.
قاوم تسميم الأدوات
أسماء الأدوات وأوصافها ومخططاتها وتعليمات الخادم تؤثر مباشرة في قرار النموذج. ثبّت هوية الخادم وبصمة المخطط المتوقعتين. راجع الأوصاف بحثًا عن طلب تسريب السياق أو إضعاف التأكيد أو استدعاء أدوات غير مرتبطة.
عند تغير المخطط أو الصلاحيات، أغلق افتراضيًا واطلب موافقة جديدة قبل إظهار القدرة المعدّلة للعميل. أضف اختبارات عقدية للقيود المحذوفة والقيم الموسعة وحقول الروابط الجديدة وحدود الرد الأكبر والعمليات الشبيهة بالكتابة المتخفية كقراءة.
اجعل دورة حياة المفاتيح صريحة
أصدر اعتمادًا منفصلًا لكل بيئة وتكامل. امنحه أقل نطاق لازم للمشروع والنشر واللغة والإصدار والظهور. وثّق المالك ووقت الإنشاء والجمهور ودورية التدوير وخطوات الإبطال ومفتاح الإيقاف الطارئ.
أثبت التدوير بتشغيل المفتاحين خلال تداخل محدود، ثم تحقق من فشل القديم في الطلب المباشر والذاكرة المؤقتة والجلسات الطويلة. حذف المفتاح من لوحة التحكم مع استمرار قبوله في ذاكرة مؤقتة ليس إبطالًا.
اجعل التدقيق مفيدًا ويحترم الخصوصية
سجّل الوقت وهوية محدودة للمستخدم أو الخدمة ومعرفي المؤسسة والمشروع واسم الأداة وقرار الصلاحية وعدد النتائج وإصدار السياسة ومعرف الربط والزمن. تجنب النصوص والأسرار والروابط الموقعة والاستعلامات الخام التي قد تحمل بيانات شخصية أو سرية.
حدّد الوصول والاحتفاظ والحذف ومراجعة الحوادث للسجلات نفسها. لا تأخذ عينات أو تجزئ القيم إلا إذا ظل المحقق قادرًا على إعادة بناء القرار الأمني من دون استعادة المحتوى.
شغّل مصفوفة تحقق هجومية
اختبر كل أداة بعينات مسموحة وممنوعة ومنتهية وعابرة للمؤسسات والمشروعات وباللغة أو الإصدار الخطأ، وبصفحة غير منشورة أو محذوفة. كرر مع ذاكرة باردة ودافئة. أدرج ردودًا ضخمة وسلاسل تحويل وتغير DNS وUnicode مشوهًا وطلبات مكررة ومخططات أدوات متغيرة.
للمحتوى ثنائي اللغة، قارن الاسترجاع والاستشهادات لكل لغة منفصلة. سجّل فجوات التكافؤ كعيوب، ولا تعد بصمت من محتوى عربي مفقود إلى إصدار إنجليزي خاص أو قديم.
ضع بوابات الإصدار
امنع الإصدار إذا استطاعت أداة الاسترجاع خارج النطاق المشتق من الخادم، أو غيّر المحتوى سياسة الأدوات، أو بلغ الجلب الصادر شبكة غير معتمدة، أو فشل الإبطال عبر ذاكرة دافئة، أو تجاوز توسيع المخطط الموافقة الجديدة. امنعه أيضًا إذا تعذر فتح الصفحة المستشهد بها بقرار الصلاحية نفسه.
يجب أن يذكر الخطر المتبقي مالكًا وتاريخ مراجعة وسطحًا متأثرًا وضابطًا تعويضيًا. عبارتا «للقراءة فقط» و«خلف تسجيل الدخول» وصفان وليستا دليلين.
ما الذي تتحقق منه بعد ذلك؟
شغّل المصفوفة على مؤسستين تجريبيتين وزوج محتوى إنجليزي/عربي وإصدار متقاعد ونشر مستبدل. احفظ طلبات وردودًا منزوعة الحساسية وبصمات السياسة والمخطط وحالة الذاكرة وأوقات الإبطال لتكرار الاختبار بعد كل تغيير للخادم أو العميل.
المصادر وتاريخ المراجعة
رُوجعت المصادر في 2026-09-03: