CanisterWorm Malware
تصاعد هجوم متطور على سلسلة التوريد، استهدف في البداية برنامج فحص Trivy واسع الانتشار، إلى اختراق أوسع نطاقًا طال العديد من حزم npm. ويُشتبه في أن الجهات الفاعلة وراء هذه الحملة قد نشرت دودةً ذاتية الانتشار غير موثقة سابقًا تُعرف باسم CanisterWorm، مما زاد بشكل كبير من حجم الاختراق وتأثيره.
يستمد هذا البرنامج الخبيث اسمه من استخدامه لحزمة بروتوكول الإنترنت الحاسوبي (ICP)، وهي عبارة عن عقود ذكية مقاومة للتلاعب ومستضافة على سلسلة كتل لامركزية، كجزء من بنيته التحتية للتحكم. ويمثل هذا أول توثيق علني لاستخدام حزم بروتوكول الإنترنت الحاسوبي كسلاح لاستعادة نقاط نهاية التحكم والسيطرة، مما يُدخل تكتيكًا جديدًا ومرنًا يُعقّد جهود التخفيف التقليدية.
جدول المحتويات
الحزم المخترقة وناقل الوصول الأولي
أثر الهجوم على العديد من حزم npm عبر نطاقات مختلفة، مما يدل على نطاق تأثير واسع داخل سلسلة توريد البرمجيات:
- 28 حزمة ضمن نطاق @EmilGroup
- 16 حزمة ضمن نطاق @opengov
- تتضمن الحزم الإضافية @teale.io/eslint-config و @airtm/uuid-base32 و @pypestream/floating-ui-dom
تأتي هذه الحملة عقب اختراق بيانات اعتماد مكّن المهاجمين من نشر نسخ خبيثة من أدوات Trivy، وتحديدًا trivy وtrivy-action وsetup-trivy، والتي تضمنت وظائف لسرقة بيانات الاعتماد. ويُعتقد أن هذه العملية مرتبطة بمجموعة إجرامية إلكترونية متخصصة في الحوسبة السحابية تُعرف باسم TeamPCP.
سير عمل العدوى وبنية القيادة اللامركزية
تبدأ سلسلة العدوى أثناء عملية تثبيت حزمة npm، حيث يقوم برنامج نصي يُنفذ بعد التثبيت بتشغيل مُحمِّل. يقوم هذا المُحمِّل بنشر باب خلفي مبني على لغة بايثون، مصمم للتواصل مع حاوية ICP. تعمل الحاوية كخادم وسيط، حيث تُعيد عنوان URL يُوجه النظام المُصاب لتنزيل وتنفيذ حمولة المرحلة التالية.
تُوفر الطبيعة اللامركزية لبنية ICP التحتية ميزة كبيرة للمهاجمين. فبفضل قدرة الحاوية على تحديث عنوان URL الخاص بالحمولة ديناميكيًا، يستطيع المهاجمون توزيع ملفات ثنائية خبيثة جديدة على جميع الأنظمة المصابة دون تعديل البرمجيات الخبيثة المُثبتة نفسها. كما تُصعّب هذه البنية عمليات الإزالة بشكل كبير.
آلية المثابرة وتقنيات التخفي
يتم تحقيق الاستمرارية من خلال إنشاء خدمة مستخدم systemd مُهيأة لإعادة تشغيل العملية الخبيثة تلقائيًا. تشمل الخصائص الرئيسية ما يلي:
- إعادة التشغيل التلقائية المفروضة عبر توجيه Restart=always
- تأخير لمدة 5 ثوانٍ قبل إعادة تشغيل الباب الخلفي في حالة إنهاء العملية.
- إخفاء الخدمة على أنها برنامج مراقبة PostgreSQL شرعي تحت اسم 'pgmon'
يضمن هذا النهج استمرارية التشغيل مع تقليل احتمالية الكشف عن طريق الاندماج مع خدمات النظام المشروعة.
توصيل الحمولة التكيفي وسلوك مفتاح الإيقاف
يتواصل الباب الخلفي دوريًا مع حاوية ICP كل 50 دقيقة، مستخدمًا وكيل مستخدم مزيفًا للمتصفح لتجنب الشبهات. ويحدد عنوان URL المُسترجع الإجراء التالي:
- إذا كان عنوان URL يشير إلى حمولة صالحة، يقوم البرنامج الخبيث بتنزيلها وتنفيذها.
- إذا كان عنوان URL يحتوي على 'youtube.com'، فإن البرامج الضارة تدخل في حالة خمول
تُعدّ هذه الآلية بمثابة مفتاح إيقاف عن بُعد. فمن خلال تغيير عنوان URL الخاص بالبرنامج الخبيث بين رابط يوتيوب عادي وحمولة خبيثة، يستطيع المهاجم تفعيل أو تعطيل البرمجية الخبيثة على جميع الأنظمة المصابة. والجدير بالذكر أن الحمولات التي تم تنفيذها سابقًا تستمر في العمل في الخلفية، لأن البرمجية الخبيثة لا تُنهي العمليات السابقة.
كما لوحظ وجود مفتاح إيقاف مماثل قائم على YouTube في ملف Trivy الثنائي المخترق (الإصدار 0.69.4)، والذي يتصل بنفس بنية ICP التحتية عبر برنامج Python منفصل.
قدرات الديدان والتكاثر الآلي
في البداية، اعتمد الانتشار على سكربت يُنفذ يدويًا يُدعى deploy.js، والذي استغل رموز مصادقة npm المسروقة لحقن شيفرة خبيثة في الحزم المتاحة. لم يتم تشغيل هذا السكربت أثناء التثبيت، بل كان بمثابة أداة مستقلة لتوسيع نطاق الهجوم.
شهدت الإصدارات اللاحقة من CanisterWorm تطورًا ملحوظًا. في الإصدارات الأحدث، مثل تلك الموجودة في @teale.io/eslint-config (الإصدارين 1.8.11 و1.8.12)، يدمج الفيروس خاصية الانتشار الذاتي مباشرةً في عملية تثبيت الحزمة. تتضمن الآلية المُحدَّثة ما يلي:
- استخراج رموز مصادقة npm من البيئة المصابة
- التنفيذ الفوري لروتين الانتشار كعملية خلفية منفصلة
- النشر الآلي للحزم المخترقة باستخدام بيانات الاعتماد التي تم جمعها
هذا التحول يحول الهجوم من حملة يتم تشغيلها يدويًا إلى نظام انتشار ذاتي التشغيل بالكامل.
التصعيد إلى تهديد مستدام لسلسلة التوريد
يمثل إدخال نظام جمع الرموز المميزات الآلي وانتشارها الذاتي تصعيدًا خطيرًا. فأي محطة عمل للمطورين أو خط أنابيب CI/CD يقوم بتثبيت حزمة مخترقة ويحتوي على بيانات اعتماد npm متاحة، يصبح عقدة انتشار نشطة. وهذا يخلق تأثيرًا متسلسلًا حيث تؤدي الحزم المصابة إلى مزيد من الإصابات عبر التبعيات اللاحقة.
في هذه المرحلة، يتطور التهديد من مجرد اختراق حسابات معزولة إلى نظام بيئي مستدام لتوزيع البرمجيات الخبيثة. كل بيئة مصابة حديثًا تساهم في الانتشار، مما يتيح نموًا هائلاً ويجعل احتواءه أكثر صعوبة.
ومما يزيد الأمر سوءاً، أن أدوات الاختبار مثل حمولة العنصر النائب ('hello123') تشير إلى أن المهاجمين يقومون بنشاط بتحسين سلسلة الهجوم والتحقق من صحتها قبل نشر الملفات الثنائية الخبيثة العاملة بالكامل.