العودة إلى المكتبة
الأمن والحوكمة

Deadbugz: صنف الهجوم الرابع في MCP يختبئ حتى تثق به

آخر تحديث: 2026年9月29日

الاستنتاجات الرئيسية

  • 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 وتصنيف الأصناف الأربعة، مرسومًا:

Deadbugz: صنف الهجوم الرابع في MCP تسميم بيانات وصفية مُبوَّب زمنيًا بعد الثقة — الأصعب كشفًا قبل النشر تسلسل هجوم Deadbugz 23 طلب PR في 74 دقيقة · 3 استدعاءات حميدة ثم سرقة بيانات الاعتماد · إفصاح Pillar Security في 23 سبتمبر 2026 1 التوصيل: 23 طلب PR على GitHub في 74 دقيقة حساب واحد «zellkernel» يعرض خادم MCP من نوع «productivity-suite» على مستودعات لا صلة بينها 17 نقطة نهاية بعيدة، و4 سكربتات محلية مخفية، لطرح دمج 2 — دون أي دمج 2 الفحص يجتاز: أداتان حميدتان، وصفر تنبيهات format_text وsummarize يعملان كما هو موثّق — لا يرى الفحص الأمني شيئًا خاطئًا أسلوب التهرب من البحث: الاختبارات القصيرة تتلقى بيانات وصفية حميدة فقط 3 ثلاثة استدعاءات عادية للأدوات — العتبة عدّاد استدعاءات العميل يبلغ 3 — يعلن الخادم tools.listChanged لإثارة التحديث يجلب العميل البيانات الوصفية الجديدة دون إعادة اتصال — دون حدث يراه المشغّل 4 إعادة كتابة البيانات الوصفية: وصول تعليمات البحث عن بيانات الاعتماد توجّه tools/list وprompts/get الوكيل الآن إلى البحث عن مفاتيح SSH وبيانات اعتماد AWS وسجل الأوامر وإعدادات Kubernetes — وإخفاء النشاط عن المستخدم تعريفات الأدوات هي سياق أمني — تعريف متغير يعني تغيّر ما يفعله الوكيل 5 الدفاع: بصمة تعريفات الأدوات تلتقط الانحراف تهشير التعريفات عند الاعتماد، ومقارنتها عند tools.listChanged، وطلب موافقة المشغّل من جديد حجب الوصول إلى بيانات الاعتماد خلف السياسات — لا خلف تعليمات بيانات وصفية بعيدة أصناف هجوم MCP الأربعة كل صنف يستغل حدّ ثقة مختلفًا — Deadbugz هو الأصعب كشفًا قبل الإنتاج الصنف 1 حقن أوامر STDIO محارف الصدفة في إعدادات STDIO أكثر من 20 ثغرة CVE، أبريل 2026 الكشف: متوسط — تحليل ساكن الصنف 2 تسميم الأدوات (النائم) الوصف يتغير بعد الاعتماد Invariant Labs وWhatsApp وأبريل 2025 الكشف: متوسط — تغيّر بيانات وصفية الصنف 3 تجاوز تثبيت SHA (Plugin4Shell) فرع باسم SHA يُبطل التثبيت 925 مهارة، و134 ألف وكيل، وسبتمبر 2026 الكشف: صعب — تأكيد بعد الـcheckout الصنف 4 تسميم البيانات الوصفية المُبوَّب زمنيًا حمولة محجوزة حتى N استدعاء ثم إعادة كتابة البيانات الوصفية عبر tools/list — Deadbugz الكشف: الأصعب — بصمة عند التشغيل الأدلة الرئيسية 23 طلب PR في 74 دقيقة 3 استدعاءات حميدة ثم الهجوم 4 أصناف هجوم MCP المميزة 0 طلبات PR دُمجت عبر المراجعة بصمة تعريفات الأدوات تسدّ الثغرة — ideabosque.com/library

يستغل كل صنف الثغرة البنيوية ذاتها: آلية ثقة تجري فحصها في الوقت الخطأ أو لا تجريه أصلًا. حقن STDIO يثق بسلاسل الإعدادات دون معالجة. تسميم الأدوات يثق بأن أوصاف الأدوات لن تتغير بعد الاعتماد. تثبيت SHA يثق بأن الكوميت المحلَّل يوافق الاسم المثبّت. أما التسميم المُبوَّب زمنيًا فيثق بأنما كان الخادم يعيده أثناء الاختبار هو ما سيعيده أثناء الاستخدام.

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

لماذا الضوابط القائمة لا تكفي

تنظّم قائمة مراجعة التصلّب الأمني لـ MCP اثني عشر ضابطًا عبر خمس طبقات: النقل، والمصادقة، وتسجيل الأدوات، والتشغيل، والتدقيق. ويستغل Deadbugz ثغرة في طبقتَي تسجيل الأدوات والتشغيل. ضوابط تسجيل الأدوات في القائمة تتحقق من الخادم عند وقت الاعتماد — تفحص أسماء الأدوات والمخططات والأوصاف قبل دخول الخادم الخدمة. لكن أدوات Deadbugz حميدة فعلًا عند وقت الاعتماد. أما ضوابط التشغيل فترصد الأفعال غير المصرّح بها، لكن البيانات الوصفية المسمومة ليست في ذاتها فعلًا — إنها تعليمات توجّه الوكيل نحو فعل يقوم به الوكيل لاحقًا، ظاهريًا ضمن نطاقه المصرّح به.

وتكسب أطروحة الوحدات المشدودة — التي تقضي بأن سجلات التدقيق وحدود المعدل والأخطاء المُنمّطة ومعمارية أداة الإيقاف تجعل طبقة الحوكمة هي حدّ الأمان — صنفًا رابعًا من الهجمات دليلًا عليها. وتتحقق آلية Deadbugz من الأطروحة من الاتجاه المعاكس: الخادم الخالي من ضوابط الحوكمة (لا كشفًا لتغيّر البيانات الوصفية، ولا بصمة لتعريفات الأدوات، ولا فرقًا يراه المشغّل فيما يراه الوكيل) هو بالضبط سطح الهجوم الذي تستغله الحملة.

الدفاع: بصمة تعريفات الأدوات

توصية Pillar محددة وقابلة للتطبيق: التقاط بصمة تعريفات الأدوات ومقارنتها عند وقت الاعتماد. حين يعتمد عميل MCP خادمًا، يسجّل هشًا لكل تعريف أداة يعيده الخادم — الاسم، والوصف، ومخطط المُدخل، والتعليقات. وحين يُعلم الخادم العميل لاحقًا بأن قائمة أدواته قد تغيّرت (عبر tools.listChanged)، يجلب العميل التعريفات الجديدة ويقارنها بالبصمة ويعرض الفرق على المشغّل بوصفه حدثًا أمنيًا. ولا يمكن للأداة المتغيرة أن تؤثر في أفعال حساسة حتى يعيد المشغّل اعتمادها.

يُسدّ هذا الضابط الثغرة التي يستغلها Deadbugz لأنه لا يعتمد على الاختبارات قبل النشر. فهو يراقب البيانات الوصفية الفعلية التي يسلمها الخادم عند التشغيل، وبعد تجاوز حدّ الثقة. وتلتقط مقارنة البصمة إعادة كتابة البيانات الوصفية أيًّا كان توقيت فك البوابة — ثلاثة استدعاءات أو ثلاثين أو ثلاثمئة. ويلتقط الضابط أيضًا صنف تسميم الأدوات الأسبق («النائم» في WhatsApp من Invariant Labs)، لأن الهجومين يتقاسمان الآلية ذاتها: وصف أداة يتغير بعد الاعتماد.

أربع خطوات تنفيذ لفريق يشغّل خوادم MCP في الإنتاج:

  1. تسجيل بصمات تعريفات الأدوات عند وقت الاعتماد. تهشير كل تعريف أداة يعيده الخادم أثناء الاتصال الأولي. وتخزين البصمات إلى جانب سجل اعتماد الخادم في نظام إدارة الإعدادات الخاص بالوكيل.
  2. مراقبة استجابات tools/list وprompts/get بحثًا عن الانحراف. حين يُعلم الخادم العميل بأن قائمة أدواته قد تغيّرت، تُجلب التعريفات الجديدة وتُقارن بالبصمات المخزنة. ويُعلَّم أي اختلاف كحدث انحراف في البيانات الوصفية.
  3. طلب موافقة المشغّل من جديد للتعريفات المتغيرة. لا يجوز لتعريف أداة متغير أن يؤثر في سلوك الوكيل حتى يراجع مشغّل بشري الفرق ويعتمد الخادم صراحةً من جديد. بهذا يتحول تغيير صامت في البيانات الوصفية إلى حدث أمني مرئي.
  4. حجب قراءات الملفات الحساسة والوصول إلى بيانات الاعتماد وتنفيذ الكود خلف السياسات — لا خلف البيانات الوصفية للأدوات. توجّه حمولة Deadbugz الوكيل إلى البحث عن مفاتيح SSH وبيانات اعتماد AWS وإعدادات Kubernetes. تلك القراءات ينبغي أن تكون أفعالًا تفرضها السياسات وتتطلب تفويضًا صريحًا، لا نتائج لتعليمات واردة في بيانات وصفية لأدوات بعيدة. يوثّق تحليل وكلاء الذكاء الاصطناعي الخفيين ثغرة الضبط عند التشغيل التي تقرر ما إذا كان البحث عن بيانات الاعتماد بتحريك البيانات الوصفية سيُنتبه إليه.

قراءة ذات صلة


يشغّل موزّع B2B متوسط الحجم وكيلَ مشتريات يتصل عبر وحدات MCP بـ NetSuite وBigCommerce وثلاثة فهارس للموردين. يتصل فحص الأمن لدى الفريق بكل خادم MCP جديد ويستدعي أدواته مرتين ويفحص الاستجابات. يجتاز Deadbugz ذلك الفحص. ثم يضيف الفريق بصمة تعريفات الأدوات إلى إعدادات عميل MCP لديه — تُهشَّر التعريفات الأولية لأدوات كل خادم عند الاعتماد، وتراقب استجابات tools/list بحثًا عن الانحراف، وتطلق التعريفات المتغيرة بوابةَ موافقة المشغّل من جديد قبل أن تستطيع الأداة المتغيرة التأثير في سلوك الوكيل. وهكذا تصبح حملة تسميم البيانات الوصفية التالية فرقًا مُعلَّمًا ومراجعة، لا كشفًا لبيانات الاعتماد.

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

هل تريد هذا مبنياً لأنظمتك؟

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

اطلب بناءً محدد النطاق

اكتشاف مدته أسبوع واحد. تحصل على جرد للأنظمة وخريطة لسير العمل ونطاق ثابت — سواء بنيت معنا أم لا.