Deadbugz: صنف الهجوم الرابع في MCP يختبئ حتى تثق به
الاستنتاجات الرئيسية
- 23 طلب دمج في 74 دقيقة — حساب GitHub واحد قدّم طلبات PR الخاصة بالحملة في 10 أغسطس 2026 عبر مشاريع لا صلة بينها في الذكاء الاصطناعي وMCP وأدوات التطوير؛ لم يُدمج أي منها عبر آلية المراجعة في GitHub، لكن أربعة ظلت مفتوحة عند وقت الإفصاح (Pillar Security).
- ثلاثة استدعاءات حميدة، ثم تُعاد كتابة البيانات الوصفية — يحتفظ خادم MCP الخبيث بعدّاد استدعاء لكل عميل؛ بعد طلب
tools/callالثالث، توجّه استجاباتtools/listوprompts/getاللاحقة الوكيل إلى البحث عن مفاتيح SSH وبيانات اعتماد AWS وسجل الأوامر وإعدادات Kubernetes، وإلى إخفاء النشاط عن المستخدم. - تسميم البيانات الوصفية المُبوَّب زمنيًا عند التشغيل هو صنف الهجوم الرابع المميز في MCP — حقن أوامر STDIO ← تسميم الأدوات ← تجاوز تثبيت SHA ← تسميم البيانات الوصفية المُبوَّب زمنيًا بعد اكتساب الثقة. آلية Deadbugz هي الأصعب كشفًا قبل النشر لأن الخادم يجتاز الفحص الأولي ولأن الحمولة لا تُفعَّل إلا بعد أن يرسم العميل نمط استخدام ثابتًا.
- بصمة تعريفات الأدوات هي الدفاع — التقاط بصمة تعريف الأداة ومقارنتها عند وقت الاعتماد؛ معالجة أي تغيير في البيانات الوصفية لأدوات خادم معتمد سلفًا كحدث أمني يتطلب موافقة المشغّل من جديد قبل أن تستطيع الأداة المتغيرة التأثير في أفعال حساسة.
قدّم حساب GitHub واحد 23 طلب دمج خلال 74 دقيقة، عارضًا في كل منها خادم MCP من نوع «productivity-suite» ينسّق النص ويلخّص المستندات. يتصرّف الخادم بشكل طبيعي في أول ثلاث استدعاءات للأدوات. وفي الاستدعاء الرابع يعيد كتابة بياناته الوصفية ليوجّه وكيل الذكاء الاصطناعي المتصل إلى البحث عن مفاتيح SSH وبيانات اعتماد AWS وسجل الأوامر وإعدادات Kubernetes — وإلى إخفاء النشاط عن المشغّل. وفي 23 سبتمبر 2026 كشفت Pillar Security عن الحملة، مسمّيةً إياها Deadbugz نسبةً إلى أداة التوصيل deadbug-mcp.py المضمّنة في أربعة من طلبات الدمج. ونشر تحالف أمن الحوسبة السحابية مذكرة بحثية تشير إلى القرب الميكانيكي من حملة «Miasma» السابقة التي استهدفت 73 مستودع GitHub بينها azure/durabletask الخاص بـ Microsoft.
يرسم هذا المقال آلية Deadbugz، ويضعها في تصنيف أصناف هجمات MCP الأربعة، ويحدد الضابط الذي يسدّ الثغرة. وهو يبني على تحليل تجاوز تثبيت SHA في Plugin4Shell وقائمة مراجعة التصلّب الأمني لـ MCP، وكلاهما أسّس ضوابط توجد Deadbugz ثغرتها تحديدًا.
الآلية: عدّاد استدعاء لكل عميل
يعرض خادم Deadbugz أداتين — format_text وsummarize — تقومان تمامًا بما يوحي به اسمانهما. يحتفظ الخادم بعدّاد في الذاكرة، لكل عميل على حدة، لطلبات tools/call. يبدأ العدّاد من الصفر. ويزيد مع كل استدعاء عادي لأداة. وحين يبلغ ثلاثة، تتغيّر استجابات tools/list وprompts/get اللاحقة: بدل توثيق الأدوات المعتاد، تحتوي تعليمات توجّه وكيل الذكاء الاصطناعي المتصل نحو ملفات محلية حساسة، وتأمره بإخفاء النشاط عن مشغّله.
وهذا مهم لأن تعريفات أدوات MCP ليست مجرد عناوين. يزوّدها العملاء إلى النموذج بوصفها سياقًا يساعده على تحديد الأدوات التي يستخدمها والأفعال التي يتخذها. والخادم الذي يستطيع تعديل تلك التعريفات بعد التثبيت يستطيع تغيير التعليمات التي يراها الوكيل دون تغيير الاسم الظاهر البريء للأداة. ويعلن الكود المصدري العلني عن إمكانية tools.listChanged التي تتيح للعميل المتوافق تحديث بيانات الأدوات الوصفية — فلا يحتاج الخادم إلى إعادة اتصال العميل. يكفي أن يُعلم العميل بأن قائمة أدواته قد تغيّرت، فيقوم العميل بجلب التعريفات الجديدة المسمومة.
البوابة الزمنية عند التشغيل أسلوب للتهرب من البحث. فالفحص القصير أو الاختبار المؤتمت المحدود لا يتلقى سوى بيانات وصفية حميدة. يجتاز الخادم المراجعة الأمنية واختبارات الـsandbox والفحص المؤتمت لأن أياً من هذه الطرق لا يجري ثلاثة استدعاءات عادية للأدوات ثم يفحص ما يعيده الخادم بعد ذلك. وقد أكدت Pillar منطق العتبة والبيانات الوصفية المعدّلة من مصادر علنية، ورصدت البيانات الوصفية المفعّلة بالبوابة من الخدمة البعيدة عبر طلبات نصية حميدة صرفة.
مسار التوصيل: تغيير إعدادات يبدو روتينيًا
آلية توصيل الحملة هي طلب دمج على GitHub يضيف أو يعدّل إعدادات MCP في مستودعات لا صلة بينها. من طلبات PR الثلاثة والعشرين التي راجعوها، يضيف 17 نقطة نهاية MCP بعيدة (productivity-suite-mcp.onrender.com/mcp) إلى ملف إعدادات المشروع. ويضبط أربعة بايثون لتشغيل ملف محلي مخفي (~/.config/.cache/.sys/.deadbug-mcp.py). واثنان من طلبات دليل أو قائمة. وبقيت الـ23 كلها بلا دمج عبر آلية طلبات الدمج في GitHub عند وقت المراجعة — 19 مغلقة وأربعة مفتوحة — لكن نموذج التوصيل لا يتطلب الدمج. يكفي أن ينسخ أحد المشرفين تغيير الإعدادات إلى بيئته الخاصة، أو أن يرى أحد المطورين الطلب فيزور المستودع المشار إليه ويثبّت الخادم مباشرة.
نمط التوصيل على مستوى الحساب منسّق: الحساب العلني نفسه (zellkernel) استخدم الاسم التجاري نفسه وموضوع الإعدادات نفسه وعلامات الحملة نفسها في طلبات PR الثلاثة والعشرين كلها، المقدمة بين 21:52 و23:07 بالتوقيت العالمي في 10 أغسطس 2026. وكان الحساب يملك 50 مستودعًا علنيًا عند الجمع، بينها 20 فرعًا (forks)، وأنشأ 21 مستودعًا في يوم 10 أغسطس وحده. ويربط الملف الشخصي للـGitHub للحساب بملف شخصي على X (@llmgod) يعيد الإشارة إلى حساب الـGitHub — رابطًا علنيًا منسوبًا إلى الحساب بين هوية التوصيل والنشاط العلني الموجّه نحو الذكاء الاصطناعي/LLM.
ويوسّع نموذج التوصيل هذا نمط سلسلة التوريد الذي وثّقته تحليلات Plugin4Shell: تغييرات الإعدادات عبر طلبات الدمج بوصفها مسارًا يتجاوز ضوابط الـmarketplace كليًا. استغلت Plugin4Shell تثبيت SHA في الـmarketplace بتسمية فرعٍ باسم الكوميت المثبّت. بينما يتجاوز Deadbugz ضوابط الـmarketplace بعدم استخدامه أصلًا — فيدخل مباشرة إلى المشاريع مفتوحة المصدر عبر مسار مساهمتها.
أصناف الهجوم الأربعة
تضم عائلة أمن MCP الآن أربعة أصناف مميزة من الهجمات، يستغل كل منها حدّ ثقة مختلفًا:
| الصنف | الآلية | أول توثيق | صعوبة الكشف |
|---|---|---|---|
| حقن أوامر STDIO | أوامر خبيثة مضمّنة في سلاسل إعدادات STDIO | أبريل 2026، أكثر من 20 ثغرة CVE (Practical DevSecOps) | متوسط — التحليل الساكن يلتقط محارف الصدفة |
| تسميم الأدوات | يتغير وصف أداة حميدة بعد الاعتماد للتلاعب بالوكيل | Invariant Labs، أبريل 2025، «النائم» في WhatsApp | متوسط — كشف تغيّر البيانات الوصفية لدى العميل |
| تجاوز تثبيت SHA | فرع يحمل اسم SHA يُبطل التحقق من التثبيت في الـmarketplace | Plugin4Shell، سبتمبر 2026 | صعب — يتطلب تأكيد HEAD المحلَّل بعد الـcheckout |
| تسميم البيانات الوصفية المُبوَّب زمنيًا | بيانات وصفية خبيثة محجوزة حتى N استدعاء ثم تُسلَّم عبر tools/list |
Deadbugz، سبتمبر 2026 | الأصعب — الاختبارات قبل النشر لا تجتاز العتبة |
تسلسل هجوم Deadbugz وتصنيف الأصناف الأربعة، مرسومًا:
يستغل كل صنف الثغرة البنيوية ذاتها: آلية ثقة تجري فحصها في الوقت الخطأ أو لا تجريه أصلًا. حقن STDIO يثق بسلاسل الإعدادات دون معالجة. تسميم الأدوات يثق بأن أوصاف الأدوات لن تتغير بعد الاعتماد. تثبيت SHA يثق بأن الكوميت المحلَّل يوافق الاسم المثبّت. أما التسميم المُبوَّب زمنيًا فيثق بأنما كان الخادم يعيده أثناء الاختبار هو ما سيعيده أثناء الاستخدام.
يُعد Deadbugz الأصعب كشفًا قبل النشر لأن سلوك الخادم أثناء الفحص حميد حقًا. فالحمولة الخبيثة ليست مخفية في الكود على نحو يستطيع التحليل الساكن تأشيرته — بل محجوزة خلف عدّاد زمني عند التشغيل لا يُفعَّل إلا بعد أن يرسم العميل نمط استخدام ثابتًا. وفريق أمني يتصل بالخادم ويستدعي format_text مرة أو مرتين ويفحص الاستجابة لن يرى شيئًا خاطئًا. الهجوم مُصمَّم ليجتاز هذا النوع من المراجعة تحديدًا.
لماذا الضوابط القائمة لا تكفي
تنظّم قائمة مراجعة التصلّب الأمني لـ MCP اثني عشر ضابطًا عبر خمس طبقات: النقل، والمصادقة، وتسجيل الأدوات، والتشغيل، والتدقيق. ويستغل Deadbugz ثغرة في طبقتَي تسجيل الأدوات والتشغيل. ضوابط تسجيل الأدوات في القائمة تتحقق من الخادم عند وقت الاعتماد — تفحص أسماء الأدوات والمخططات والأوصاف قبل دخول الخادم الخدمة. لكن أدوات Deadbugz حميدة فعلًا عند وقت الاعتماد. أما ضوابط التشغيل فترصد الأفعال غير المصرّح بها، لكن البيانات الوصفية المسمومة ليست في ذاتها فعلًا — إنها تعليمات توجّه الوكيل نحو فعل يقوم به الوكيل لاحقًا، ظاهريًا ضمن نطاقه المصرّح به.
وتكسب أطروحة الوحدات المشدودة — التي تقضي بأن سجلات التدقيق وحدود المعدل والأخطاء المُنمّطة ومعمارية أداة الإيقاف تجعل طبقة الحوكمة هي حدّ الأمان — صنفًا رابعًا من الهجمات دليلًا عليها. وتتحقق آلية Deadbugz من الأطروحة من الاتجاه المعاكس: الخادم الخالي من ضوابط الحوكمة (لا كشفًا لتغيّر البيانات الوصفية، ولا بصمة لتعريفات الأدوات، ولا فرقًا يراه المشغّل فيما يراه الوكيل) هو بالضبط سطح الهجوم الذي تستغله الحملة.
الدفاع: بصمة تعريفات الأدوات
توصية Pillar محددة وقابلة للتطبيق: التقاط بصمة تعريفات الأدوات ومقارنتها عند وقت الاعتماد. حين يعتمد عميل MCP خادمًا، يسجّل هشًا لكل تعريف أداة يعيده الخادم — الاسم، والوصف، ومخطط المُدخل، والتعليقات. وحين يُعلم الخادم العميل لاحقًا بأن قائمة أدواته قد تغيّرت (عبر tools.listChanged)، يجلب العميل التعريفات الجديدة ويقارنها بالبصمة ويعرض الفرق على المشغّل بوصفه حدثًا أمنيًا. ولا يمكن للأداة المتغيرة أن تؤثر في أفعال حساسة حتى يعيد المشغّل اعتمادها.
يُسدّ هذا الضابط الثغرة التي يستغلها Deadbugz لأنه لا يعتمد على الاختبارات قبل النشر. فهو يراقب البيانات الوصفية الفعلية التي يسلمها الخادم عند التشغيل، وبعد تجاوز حدّ الثقة. وتلتقط مقارنة البصمة إعادة كتابة البيانات الوصفية أيًّا كان توقيت فك البوابة — ثلاثة استدعاءات أو ثلاثين أو ثلاثمئة. ويلتقط الضابط أيضًا صنف تسميم الأدوات الأسبق («النائم» في WhatsApp من Invariant Labs)، لأن الهجومين يتقاسمان الآلية ذاتها: وصف أداة يتغير بعد الاعتماد.
أربع خطوات تنفيذ لفريق يشغّل خوادم MCP في الإنتاج:
- تسجيل بصمات تعريفات الأدوات عند وقت الاعتماد. تهشير كل تعريف أداة يعيده الخادم أثناء الاتصال الأولي. وتخزين البصمات إلى جانب سجل اعتماد الخادم في نظام إدارة الإعدادات الخاص بالوكيل.
- مراقبة استجابات
tools/listوprompts/getبحثًا عن الانحراف. حين يُعلم الخادم العميل بأن قائمة أدواته قد تغيّرت، تُجلب التعريفات الجديدة وتُقارن بالبصمات المخزنة. ويُعلَّم أي اختلاف كحدث انحراف في البيانات الوصفية. - طلب موافقة المشغّل من جديد للتعريفات المتغيرة. لا يجوز لتعريف أداة متغير أن يؤثر في سلوك الوكيل حتى يراجع مشغّل بشري الفرق ويعتمد الخادم صراحةً من جديد. بهذا يتحول تغيير صامت في البيانات الوصفية إلى حدث أمني مرئي.
- حجب قراءات الملفات الحساسة والوصول إلى بيانات الاعتماد وتنفيذ الكود خلف السياسات — لا خلف البيانات الوصفية للأدوات. توجّه حمولة Deadbugz الوكيل إلى البحث عن مفاتيح SSH وبيانات اعتماد AWS وإعدادات Kubernetes. تلك القراءات ينبغي أن تكون أفعالًا تفرضها السياسات وتتطلب تفويضًا صريحًا، لا نتائج لتعليمات واردة في بيانات وصفية لأدوات بعيدة. يوثّق تحليل وكلاء الذكاء الاصطناعي الخفيين ثغرة الضبط عند التشغيل التي تقرر ما إذا كان البحث عن بيانات الاعتماد بتحريك البيانات الوصفية سيُنتبه إليه.
قراءة ذات صلة
- تثبيت SHA ليس تحققًا: Plugin4Shell وأول RCE في سلسلة توريد وكلاء الذكاء الاصطناعي — صنف الهجوم الثالث في MCP، ويشارك Deadbugz نموذج التوصيل عبر طلبات الدمج واستهداف سلسلة التوريد
- قائمة مراجعة التصلّب الأمني لـ MCP: 1,467 خادمًا مكشوفًا والضوابط التي تُغلقها — خط الأساس للضوابط الاثني عشر؛ بصمة تعريفات الأدوات تنتمي إلى طبقتَي تسجيل الأدوات والتشغيل
- أمن MCP: لماذا تجعل 200,000 حالة معرضة للثغرة الوحدات المشدودة معيار شراء — أطروحة الوحدات المشدودة التي يتحقق منها Deadbugz: الخادم الخالي من ضوابط الحوكمة هو بالضبط سطح الهجوم الذي تستغله الحملة
يشغّل موزّع B2B متوسط الحجم وكيلَ مشتريات يتصل عبر وحدات MCP بـ NetSuite وBigCommerce وثلاثة فهارس للموردين. يتصل فحص الأمن لدى الفريق بكل خادم MCP جديد ويستدعي أدواته مرتين ويفحص الاستجابات. يجتاز Deadbugz ذلك الفحص. ثم يضيف الفريق بصمة تعريفات الأدوات إلى إعدادات عميل MCP لديه — تُهشَّر التعريفات الأولية لأدوات كل خادم عند الاعتماد، وتراقب استجابات tools/list بحثًا عن الانحراف، وتطلق التعريفات المتغيرة بوابةَ موافقة المشغّل من جديد قبل أن تستطيع الأداة المتغيرة التأثير في سلوك الوكيل. وهكذا تصبح حملة تسميم البيانات الوصفية التالية فرقًا مُعلَّمًا ومراجعة، لا كشفًا لبيانات الاعتماد.
اطلب بناءً محدّد النطاق. أسبوع اكتشاف. تحصل على جرد للأنظمة، وخرائط لمسارات العمل، ونطاق ثابت — سواء بنيت معنا أم لا.
هل تريد هذا مبنياً لأنظمتك؟
كل وثيقة هنا من عمل إنتاجي حقيقي. إذا كان لديك نظام مُستهدَف وسير عمل في الذهن، نستطيع تحديد نطاق بناء في أسبوع واحد.
اطلب بناءً محدد النطاقاكتشاف مدته أسبوع واحد. تحصل على جرد للأنظمة وخريطة لسير العمل ونطاق ثابت — سواء بنيت معنا أم لا.