- التسميم — كان الخادم خبيثاً من اليوم الأول. بدا بيانه التعريفي حميداً؛ السلوك الخطر كان في تطبيق الأداة، لا في النطاقات المُعلَنة.
- Rug-pull — أعطيته ثقتك، ثم تغيّر. ظهرت أداة جديدة أضافها مشغّل الخادم بهدوء، أو اختُطف إدخال في سجل مجتمعي وحُدِّث ليتصل بمضيف.
1. كيف يصل تسميم أدوات MCP لوكلائك
كلtools/call يصدره وكيلك يسلك عبر مجموعة الأدوات المُعلَنة لخادم MCP.
يستغل خادم مسموم أو تعرّض لـ rug-pull تلك الثقة بعدة طرق:
| المتجه | ما يحدث |
|---|---|
| أداة غير مُعلَنة | تظهر أداة جديدة في tools/list لم يُعلن عنها في بيان الخادم قط. يجدها وكيلك ويستدعيها. |
| إدخال سجل مخترق | يُستولى على إدخال في سجل مجتمعي؛ تشير نقطة النهاية الآن لخادم يتحكم فيه المهاجم. |
| حصاد بيانات الاعتماد | يُرسل تطبيق الأداة المدخلات المجمَّعة لمضيف خارجي. |
| حقن المطالبة عبر نتيجة الأداة | تُعيد أداة نصاً يتحكم فيه المهاجم يعيد توجيه الإجراء التالي للوكيل. |
2. دفاعات OrcaRouter
2.1 كل tools/call يُقيَّم بجدار الحماية قبل تشغيله
تتصل خوادم MCP بوكلائك عبر بوابة Firewall MCP على
/api/v1/firewall/mcp. لا تُوجِّه البوابة استدعاء أداة حتى يُقيِّمه
محرك جدار الحماية مقابل سياستك.
هذا يعني أن قائمة سماحك هي مصدر الحقيقة — لا بيان الأداة للخادم. إذا أضاف
rug-pull أداة shell.exec وسياستك لا تحمل قاعدة تسمح بها، يكون الحكم deny
ولا يغادر الاستدعاء البوابة. يتلقى النموذج خطأ أداة (firewall deny: …)
ويمكنه التفاعل؛ الأداة التي أضافها المهاجم ميتة عند الوصول.
الأحكام التي يستطيع المحرك إعادتها:
| الحكم | الأثر |
|---|---|
allow / audit | يُوجَّه الاستدعاء؛ audit يُسجِّل الوسائط إضافةً. |
sanitize | تُعاد كتابة الوسائط قبل التوجيه. |
deny | يُحجب الاستدعاء؛ يتلقى النموذج خطأ أداة. |
pending_approval | يُعلَّق الاستدعاء؛ إنسان يجب أن يوافق قبل المتابعة. |
cap_cost | يُنفَّذ سقف التكلفة؛ يُحجب الاستدعاء إذا كان سيتجاوزه. |
2.2 القدرات المُكتشَفة تلقائياً تُحجَر حتى المراجعة
عندما يثبّت وكيل قدرةً ذاتياً — أو عندما يُضيف rug-pull أدوات جديدة لم تكن موجودة عند تسجيل الخادم — يُكتشف جدار الحماية تلقائياً القدرة الجديدة خارج المسار الساخن، ويُنشئ بياناً تعريفياً، ويفحصه، ويُعيّن نطاق مخاطرة ووضع فرض. والأهم، تُحجَر القدرات المُكتشَفة تلقائياً دائماً بصرف النظر عن نتيجة الفحص: تُعلَّق فيpending_approval حتى يراجعها إنسان.
هكذا يُحتوى rug-pulls. لا يستطيع مشغّل إضافة أداة جديدة بهدوء وجعل وكلاءك
يبدأون باستخدامها — تلك الاستدعاءات مُعلَّقة حتى تفحص وتوافق على القدرة
الجديدة.
2.3 فحص المهارة يُعيّن نطاق مخاطرة ووضع فرض
كل قدرة قابلة للتثبيت — سواء سجّلتها أنت أو اكتشفها جدار الحماية تلقائياً — تمر عبر ماسح المهارة. يُجري الماسح تمريرات حتمية على البيان والنطاقات المُعلَنة:- prompt_injection — نص البيان الذي يحاول اختطاف التعليمات.
- tool_creep — أدوات يستخدمها البيان لكن لم يُعلن عنها قط.
- network_egress — مضيفون HTTP(S) خارج نطاقات الشبكة المُعتمَدة.
- fs_write_unsafe — وصول للكتابة في نظام الملفات خارج
/tmp.
low / medium / high / critical)
ووضع فرض:
| الوضع | ما يحدث وقت التشغيل |
|---|---|
allow | لا تفرض المهارة شيئاً من تلقاء نفسها؛ قواعد سياستك تقرر. |
quarantine | أي حكم غير-deny يتصعّد إلى pending_approval. إنسان يجب أن يوافق على كل استدعاء أداة. |
block | إجبار deny على جميع أدوات هذه المهارة، بصرف النظر عن قواعد السياسة. |
high تُحجَر تلقائياً؛ critical تُحجب. نتيجة error واحدة
(مثل tool_creep لأداة shell.exec غير مُعلَنة) تكفي لحجب مهارة حتى لو بدت
درجتها الرقمية منخفضة. الوضع لا يُخفَّف أبداً — الموافقة على مهارة لا تُرخي
حجباً صادراً عن فحص جديد.
2.4 بيانات الاعتماد مُخزَّنة مشفَّرة
أسرار مصادقة الخادم مشفَّرة في حالة السكون بمفتاح أسرار مساحة العمل ومُحقَنة بواسطة البوابة وقت الإرسال. لا تصل أبداً للنموذج، ولا للوكيل، ولا لوسائط الاستدعاء. خادم مخترق لا يستطيع تسريب مفاتيح API الخاصة بك بقراءةauth_json الخاص به.
قائمة تحقق لفحص خادم MCP تابع لطرف ثالثقبل تسجيل خادم MCP خارجي:
- تحقق من هوية الناشر — من يتحكم في عنوان URL لنقطة النهاية؟
- اقرأ المصدر أو سجل التغييرات؛ ابحث عن أدوات جديدة أُضيفت بعد الإصدار الأولي.
- تحقق مما إذا كان فحص المهارة يُعيد أي نتائج
tool_creepأوprompt_injectionعند التسجيل. - حدّد نطاق قاعدة جدار حماية بـ
tool_name_glob: <server>.*علىauditأوpending_approvalحتى يكون لديك سجل استدعاءات. - راجع نتائج
network_egress: هل يدّعي البيان أنه يحتاج مجالاً واحداً فقط بينما تذكر أوصاف الأداة مجالات أخرى؟ - أعد استطلاع الخادم بعد أي رفع لإصدار أعلى (
POST /api/workspace/firewall/mcp_servers/:id/probe) للكشف عن أدوات جديدة.
3. ما يجب فعله بعد rug-pull مشتبه به
- أوقف الخادم فوراً — خادم موقوف يُحذف من سجل وقت التشغيل ولا تُفكَّك
تشفير بيانات اعتماده أبداً. استخدم
PUT /api/workspace/firewall/mcp_serversمع"enabled": false. - أعد الاستطلاع للكشف عن التغييرات —
POST /api/workspace/firewall/mcp_servers/:id/probeيُشغِّلtools/listويُعيد أي أدوات جديدة ظهرت منذ آخر استطلاع. - أعد فحص سجل المهارة —
POST /api/workspace/firewall/skills/:id/rescanيُعيد تشغيل الماسح مقابل البيان المحدَّث. إذا تراجع الحكم إلىflaggedأوblocked، يُصدر جدار الحماية حدثاً في تغذيتك. - راجع طابور
pending_approval— أي استدعاءات مُعلَّقة منذ rug-pull موجودة في الطابور. افحصها وارفضها بدلاً من الموافقة عليها بالجملة. - دقِّق في سجل الاستدعاءات — تحقق من مسار أحداث جدار الحماية لاستدعاءات مرّت قبل اكتشاف التغيير.
4. الجمع بين فحص المهارة وقواعد جدار الحماية
فحص المهارة وقواعد جدار الحماية متكاملان ويتركّبان:- قاعدة بـ
tool_name_glob: community.*مضبوطة علىpending_approvalتضمن مراجعة كل استدعاء من خادم مصدره المجتمع، بصرف النظر عن نطاق المخاطرة. - مهارة محجورة تتجاوز قاعدة
allow— حتى لو كانت سياستك تسمح بـhttp.fetchبشكل عام، مهارة محجورة تمتلكها لا تزال تُعلَّق الاستدعاء. - استخدم
skill_name_globفي قاعدة لتحديد سياسات أضيق على الخوادم غير الموثوقة دون التأثير على تكاملاتك المباشرة.
5. التهديدات ذات الصلة
- استدعاءات الأدوات الخطرة — قواعد لحجب إجراءات الأدوات المدمّرة أو غير القابلة للتراجع بصرف النظر عن المصدر.
- تسريب البيانات — قواعد egress تُقيّد أين يمكن لاستدعاءات الأدوات إرسال البيانات.
- نموذج التهديد — سطح الهجوم الكامل الذي صُمِّمت OrcaRouter للدفاع عنه.
جدار الحماية: خوادم MCP
سجِّل خوادم MCP خلف البوابة، واستطلع أدواتها، وطبّق أحكاماً لكل استدعاء
قبل وصوله للخادم الحقيقي.
جدار الحماية: المهارات
افحص ودرِّج مخاطر كل قدرة قابلة للتثبيت. احجر أو أوقف المهارات
الخطرة قبل أن تتمكن أدواتها من العمل.
