حزمة تُدعى refbase-mcp، صُممت لتندرج ضمن اصطلاح Model Context Protocol الذي تستخدمه الآن أدوات الوكلاء، نُشرت على npm وهي تحمل برمجيات خبيثة، وجذبت 298 عملية تنزيل، ثم سُحبت واستُبدلت ببديل أمني بعد نحو ساعة ونصف.
الجدول الزمني، من السجل نفسه
نُشرت النسخة 1.0.0 في 20:23:38 UTC يوم 31 يوليو. وفي 21:54:59 UTC استُبدلت بالنسخة 0.0.1-security، وهي العنصر الأمنيّ الحاجز ذي الحجم 428 بايت من npm. وهذه نافذة تعرّض مدتها 92 دقيقة. وجاء التنبيه لاحقًا في 22:00:13 UTC. وجميع هذه الطوابع الزمنية الثلاثة تأتي من واجهات برمجة التطبيقات الخاصة بالسجل والتنبيه، لا من أي تقرير تحريري.
ما الذي كانت تفعله التسمية
اللاحقة -mcp هي الطُعم. فسلاسل أدوات الوكلاء تثبّت خوادم MCP بالثقة نفسها التي تمنحها لأي تبعية أخرى، وقد أصبح هذا الاصطلاح راسخًا بما يكفي لتقليده. ولا يثبت ما في السجل أن الحزمة كانت تعمل فعلًا كخادم MCP — فاللاحقة اختيار في التسمية، لا قدرة تقنية.
الجملة المرعبة قالبٌ جاهز
يقول التنبيه إن أي جهاز ثُبّتت عليه الحزمة "should be considered fully compromised" وإنه ينبغي تدوير جميع الأسرار والمفاتيح. وهذه الصياغة هي النصّ النمطي العام للبرمجيات الخبيثة في npm، ويُستخدم في كل عملية سحب من هذا النوع. لم يُنشر أي تحليل للحِمل البرمجي، لذا فإن ما فعلته الحزمة فعليًا ليس واردًا في السجل — واعتبار الصياغة النمطية استنتاجًا عن هذه الحزمة سيكون خطأ.
298 عملية تنزيل لا تعني 298 ضحية
المسار — 254 في 31 يوليو، و44 في 1 أغسطس، وصفر في كل يوم سابق — هو ما يبدو عليه شكل حزمة جديدة عندما تعثر عليها مرايا السجل وأدوات الفحص الأمني وذاكرات التخزين المؤقت في CI. واعتبار العدد عددًا للإصابات يبالغ فيه كثيرًا. والقراءة الأضيق هي الأجدى: فقد أُغلق مسار السحب خلال 92 دقيقة، و92 دقيقة مدة تكفي للوصول إلى نظام بناء.
