كشف باحثون في الأمن السيبراني عن حملة اختراق واسعة استهدفت سجل npm، تسببت في تلغيم مئات الحزم البرمجية الخبيثة، ضمن ما وُصف بأنه أول دودة ذاتية الانتشار في سلاسل التوريد البرمجية. بدأت الهجمة بإصابة أكثر من 40 حزمة، لكنها امتدت سريعاً لتصيب ما يزيد عن 500 حزمة npm، في هجوم أُطلق عليه اسم Shai-Hulud.
آلية عمل الهجوم
أوضحت شركة Socket أن النسخ المصابة تتضمن دالة خبيثة تقوم بتنزيل ملف الحزمة، وتعديل ملف ، وحقن ملف JavaScript باسم bundle.js، ثم إعادة حزم الحزمة وإعادة نشرها بشكل تلقائي. هذه العملية سمحت بانتشار الدودة إلى الحزم التابعة لمطورين آخرين بصورة متسلسلة.
الملف الخبيث يستغل أداة TruffleHog الشرعية لمسح أجهزة المطورين بحثاً عن رموز وصول وكلمات مرور للخدمات السحابية مثل GitHub Token وAWS Keys وNPM Tokens، ثم يرسلها إلى خوادم المهاجم. كما يحاول إنشاء ملفات GitHub Actions Workflow داخل المستودعات المصابة، ما يتيح استمرار سرقة البيانات حتى بعد إزالة الإصابة من الجهاز المحلي.
تورط حسابات GitHub وCrowdStrike
التحقيقات بيّنت أن الحساب “techsupportrxnt” على npm كان نقطة الصفر للهجوم، بعد أن نشر نسخة خبيثة من حزمة rxnt-authentication في 14 سبتمبر. ومن هناك، انتشرت العدوى إلى عشرات الحزم الأخرى. كما استُغل حساب npm تابع لشركة CrowdStrike لنشر حزم مصابة، لكن الشركة أكدت أن منصتها لم تتأثر وأنها بادرت إلى حذف النسخ الضارة وتدوير مفاتيحها.
شركة ReversingLabs وصفت الحادث بأنه “أول من نوعه” لكونه يجمع بين قدرات سرقة أسرار المطورين وآلية انتشار دودية ذاتية التوسع. بينما ربطت شركات أخرى مثل Wiz وStepSecurity هذا الهجوم بحملة s1ngularity الأخيرة ضد نظام nx للبناء، معتبرةً أن الهجوم يمثل “واحداً من أخطر هجمات سلاسل التوريد في بيئة JavaScript حتى الآن”.
استهداف مجتمع Rust بحملة تصيد
بالتوازي مع هذه التطورات، حذّر فريق أمن Rust من حملة تصيد عبر نطاق مزيف rustfoundation[.]dev تستهدف مستخدمي منصة crates.io. الرسائل الاحتيالية ادّعت بوجود خرق للبنية التحتية وطالبت المطورين بتحديث بيانات دخولهم عبر رابط مزيّف يحاكي صفحة GitHub، في محاولة لسرقة بيانات الاعتماد. وأكد الفريق أنه لا توجد أي أدلة على اختراق حقيقي للبنية التحتية، وأنهم يعملون على إيقاف النطاق الاحتيالي.